Вам когда-нибудь казалось, что современное ИТ — это в основном про перекладывание JSON-ов, покраску кнопок и борьбу за миллисекунды в банковских транзакциях? Недавно я наткнулся на статистику о том, сколько данных генерирует одна современная молочная ферма, и как я удивился, когда понял: большинство этих данных оседает в разрозненных Excel-таблицах, тетрадках зоотехников или, в лучшем случае, в древних локальных базах типа «СЕЛЭКС», которые не обновлялись годами.
Оказывается, селекция элитного скота сегодня — это не про «посмотреть на корову и понять, что она даст много молока», а про работу с огромными матрицами SNP-маркеров (генетических вариаций) и временными рядами. Но что делать, если данные из лаборатории приходят в формате .vcf, а статистика по надоям лежит в закрытой системе 1С, и они «не знают» друг о друге?
Меня зовут Вишняков Данил, я магистр 1-го курса ИТМО по направлению «Искусственный интеллект». Сейчас в рамках акселератора Talent Hub (совместный проект ИТМО и Napoleon IT) мы с командой работаем над проектом Genome AI. Наша цель — вытащить селекцию животных из «эпохи интуиции» в эпоху доказательного ML.
В этой статье мы рассмотрим, как мы строим платформу Genome AI, зачем нам понадобилась гибридная модель машинного обучения и почему «цифровой двойник» коровы — это следующий большой шаг в агротехе.
Представьте, что вы — директор фермы на 1000 голов. Каждое животное — это актив. Ваша главная задача: понять, каких телят оставить для воспроизводства стада, а каких — продать.
Раньше это делали «по ощущениям» или по средним показателям родителей. Но генетика — штука хитрая: от элитных родителей может родиться средний потомок, и наоборот. В итоге вы тратите два года и огромные ресурсы на выращивание коровы, которая в итоге дает на 15% меньше молока, чем могла бы. Это классический пример упущенной выгоды, которую сложно посчитать без цифр на руках.
Почему данные на ферме — это сложно?
Data Silos (Силосные ямы данных): Информация о здоровье — в одной локальной базе, данные о кормлении — в облачном Excel, а результаты расшифровки генома — в PDF-отчете от сторонней лаборатории. Они существуют в параллельных вселенных.
Грязные данные: Ошибки в ID животных (опечатки в бирках), перепутанные даты отела, «человеческий фактор» при замере суточного удоя.
Ниже — диаграмма того, как выглядит типичный «бизнес-процесс» на ферме до того, как туда приходит системный подход:
В рамках Talent Hub мы создаем SaaS-платформу, которая берет на себя роль агрегатора и аналитического центра.
В чем специфика наших задач (почему это не просто очередной CRUD):
Сложная нелинейность: Генотип — это не просто сумма признаков. Гены взаимодействуют между собой (эпистаз), а на результат сильно влияет среда (корм, влажность, температура). Мы строим модели, которые пытаются разделить «генетический потенциал» и «эффект среды».
Объем признаков: У одной коровы может быть 50 000+ генетических маркеров (SNP). Для модели это 50 000 признаков на одну запись при относительно небольшой выборке самих животных. Привет, проблема размерности!
Длинные циклы обратной связи: В селекции нам нужно ждать годы, чтобы подтвердить точность прогноза реальным удоем.
Чтобы обуздать этот хаос, мы используем гибридный стек: CatBoost для классических признаков и Deep Learning (PyTorch) для обработки геномных матриц.
Мы строим пайплайн, где на входе стоят «стражи качества» (Data Quality Guardrails). Если Call Rate генотипа (качество чтения ДНК) низкий, система выдает алерт и не пускает мусорные данные в модель.
Вот архитектурная схема нашего решения:
Давайте теперь посмотрим, как наши модели «видят» корову. Я покажу три ключевые визуализации, которые мы используем, и код на R, который их генерирует.
Первое, что нужно понять — как корова дает молоко. Удой следует нелинейной кривой (модель Вуда): рост после отела, пик и постепенное снижение. Но кривая кривой рознь! Наша задача — предсказать ее форму на основе генетики.
Мы используем Модель Вуда (Wood’s model) — это стандартная гамма-функция, описывающая кривую лактации. Вот фрагмент кода, где мы моделируем три разных генетических профиля:
# Формула модели Вуда: Y(t) = a * t^b * exp(-c * t) wood_function <- function(t, a, b, c) { return(a * (t^b) * exp(-c * t)) }
Что здесь происходит с точки зрения математики?
Уравнение
описывает три фазы жизни животного:
a — начальный уровень удоя после родов.
b — скорость подъема к пику (раздой).
c — скорость падения продуктивности (персистентность).
t — день лактации.
Вот как выглядят прогнозы для коров с разным генетическим потенциалом:
Что это дает на практике? Зная тип кривой теленка, мы можем оценить его пожизненную продуктивность еще до первой лактации и принять решение о его племенной ценности.
Откуда мы берем этот «генетический потенциал»? Из ДНК. Мы проводим полногеномный поиск ассоциаций (GWAS). Проще говоря, мы смотрим на десятки тысяч SNP-маркеров у тысяч коров и ищем те из них, которые статистически значимо связаны с высоким надоем.
Результаты этого поиска отображаются на Манхэттен-графике. Каждая точка — это маркер. Чем выше точка, тем сильнее ее связь с признаком.
Пики (например, вокруг маркера rs574 на хромосоме 2) — это наши «кандидаты» в гены, ответственные за молочность. Именно эти маркеры становятся фичами для модели, предсказывающей ту самую кривую лактации.
А что если в данных ошибка и нам подсунули генотип овцы? Или корова на самом деле не чистопородная? Для этого нужен контроль качества (QC). Один из главных инструментов — анализ главных компонент (PCA).
Он сжимает многомерные генетические данные в 2D-пространство, где животные одной породы находятся в кластере вместе.
Точка, которая выпадает из своего кластера (например, помесь среди чистопородных голштинов) — это красный флаг. Возможно, ошибка в данных, а возможно — ценный генетический нюанс. Без такого QC все дальнейшие прогнозы бессмысленны.
Для меня, как для студента ИТМО, этот проект — вызов применить методы AI там, где еще вчера главной технологией был блокнот и интуиция. Мы движемся к созданию цифрового двойника животного — комплексной модели, которая включает не только геном, но и историю болезней, рацион, микроклимат в коровнике.
Такой двойник позволит не только отбирать лучших, но и:
Оптимизировать кормление индивидуально для каждой коровы.
Предсказывать риски заболеваний (мастит, кетоз) за недели до клинических проявлений.
Симулировать скрещивания и оценивать экономический эффект от покупки семени конкретного быка-производителя.
Геномная селекция — это не про абстрактную науку. А про конкретные деньги и устойчивость бизнеса. Повышение надоев на 5-10% на уровне стада — это миллионы дополнительной выручки при тех же затратах.
Мы открыты для обратной связи, идей и сотрудничества. Если вы работаете в агротехе, data science или просто вам интересна тема — давайте обсудим в комментариях! Возможно, именно ваш опыт поможет нам сделать платформу еще полезнее.
P.S. Код из статьи — это симуляция для наглядности. В реальном пайплайне данные в разы объемнее, а модели сложнее. Но суть остается той же: превратить генетический «шум» в понятные и прибыльные инсайты.
Если вам интересно следить за моими экспериментами в режиме реального времени, буду рад видеть вас в своем Telegram-канале (https://t.me/donny_dank)
Источник


