training_projects
Управление рисками и принятие решения о покупке коров хозяйства "Вольный луг"
К IT-компании, которая выполняет на заказ проекты по машинному обучению, обратился фермер, владелец молочного хозяйства «Вольный луг». Он хочет купить бурёнок, чтобы расширить поголовье стада коров. Для этого он заключил выгодный контракт с ассоциацией пастбищ «ЭкоФерма». Условия позволяют фермеру очень тщательно отобрать коров. Он определяет качество молока по строгой методике, и при этом ему нужно выполнять свой план развития молочного хозяйства.
Цель исследования: Разработать модель машинного обучения, которая поможет ему управлять рисками и принимать объективное решение о покупке.
Задачи исследования:
- Создать две прогнозные модели для отбора бурёнок в поголовье:
-
Первая будет прогнозировать возможный удой коровы (целевой признак Удой);
-
Вторая — рассчитывать вероятность получить вкусное молоко от коровы (целевой признак Вкус молока).
-
- С помощью модели нужно отобрать коров по двум критериям:
- средний удой за год — не менее 6000 килограммов;
- молоко должно быть вкусным.
Описание данных:
-
Датасэт №1 -
ferma_main.csv
- содержит данные о стаде фермера на текущий моментid
— уникальный идентификатор коровы.Удой, кг
— масса молока, которую корова даёт в год (в килограммах).ЭКЕ (Энергетическая кормовая единица)
— показатель питательности корма коровы.Сырой протеин, г
— содержание сырого протеина в корме (в граммах).СПО (Сахаро-протеиновое соотношение)
— отношение сахара к протеину в корме коровы.Порода
— порода коровы.Тип пастбища
— ландшафт лугов, на которых паслась корова.порода папы_быка
— порода папы коровы.Жирность,%
— содержание жиров в молоке (в процентах).Белок,%
— содержание белков в молоке (в процентах).Вкус молока
— оценка вкуса по личным критериям фермера, бинарный признак (вкусно, не вкусно).Возраст
— возраст коровы, бинарный признак (менее_2_лет, более_2_лет).
-
Датасет №2
ferma_dad.csv
- хранит имя папы каждой коровы в стаде фермера.id
— уникальный идентификатор коровы.Имя Папы
— имя папы коровы.
-
Датасет №3
cow_buy.csv
- это данные о коровах «ЭкоФермы», которых фермер хочет изучить перед покупкой.Порода
— порода коровы.Тип пастбища
— ландшафт лугов, на которых паслась корова.порода папы_быка
— порода папы коровы.Имя_папы
— имя папы коровы.Текущая_жирность,%
— содержание жиров в молоке (в процентах).Текущий_уровень_белок,%
— содержание белков в молоке (в процентах).Возраст
— возраст коровы, бинарный признак (менее_2_лет, более_2_лет).
Вывод
В ходе работы над проектом была разработана модель машинного обучения, которая сможет помочь заказчику управлять рисками и принимать объективное решение о покупке коров на ферму. Рекомендуемые коровы к покупке:
города | тип_пастбища | порода_папы | имя_папы | текущая_жирность | текущий_белок | возраст | ожидаемый_удой | ожидаемый_вкус_молока |
---|---|---|---|---|---|---|---|---|
Вис Бик Айдиал | Холмистое | Айдиал | Геркулес | 3.58 | 3.076 | более 2 лет | 6755 | вкусно |
Вис Бик Айдиал | Холмистое | Айдиал | Геркулес | 3.58 | 3.076 | более 2 лет | 6755 | вкусно |
РефлешнСоверинг | Холмистое | Айдиал | Буйный | 3.40 | 3.079 | менее 2 лет | 6501 | вкусно |
Вис Бик Айдиал | Холмистое | Соверин | Соловчик | 3.73 | 3.079 | более 2 лет | 6084 | вкусно |
Исследование было разделено на несколько этапов:
1. Загрузка и подготовка данных
-
Импортировали нужные библиотеки
-
ferma_main
- Обнаружили 5 явных дубликатов
- Определили, что стоит изменить названия столбцов и привести их к единому виду
- Не выявили пропущенных значений
- Определили, что с типами данных все в порядке
-
ferma_dad
- Определили, что стоит изменить названия столбцов и привести их к единому виду
- В остальном данные оказались в порядке и пригодными для использования
-
cow_buy
- Обнаружили 4 явных дубликата -> решили не убирать, поскольку данных в датасете мало, как и признаков. Вполне вероятно, что данные и признаки сходятся для разных коров
- Определили, что стоит изменить названия столбцов и привести их к единому виду
- Пропущенных значений не было выявлено
- Определили, что с типами данных все в порядке
2. Предобработка данных
- Названия столбцов привели к единому, удобному виду
- Убрали 2 неявных дубликата из датасета ferma_main
- Убрали 5 явных дубликатов из ferma_main
3. Исследовательский анализ данных
- Выявили, что почти все признаки распределены нормально и не требуют особых корректировок выбросов
- Убрали аномальное значение признака
[удой]
== 45616 - В признаке
[белок]
избавились от выбросов -> перезаписали датафрейм с условием, в которое входят данные из диапазона:< 3.069
> 3.081
- В распределение категориальных переменных критических изменений внесено не было
4. Корреляционный анализ данных
-
эке
: Выявили положительную взаимосвязь выше умеренного значения. С увеличением "удоя" постепенно увеличивается и эке. По графикам распределения, корреляция справедлива для двух пород. -
сырой_протеин
: Взаимосвязь между содержанием сырого протеина и удоем не так ясна. На графике диаграмме рассеяния виден довольно большой разброс значений, однако наблюдается общий тренд на прямую пропорциональную зависимость. Связь умеренно положительная. -
спо
: Выявили, что СПО зависит от целевого признака - коэффициент корреляции выше среднего. В особенности видна резкая тенденция возвышения значений после - определен "порог перехода" в значенииспо == 0.91
-
жирность
: Выявлена умеренно положительная зависимость. Более всего связь раскрывается на переходе значенийжирность == 3.6 и 3.7
. -
белок
: Связь между этим признаком и целевым - нелинейная. Но стоит отметить, что наблюдается зависимость между признакамибелок
ипорода
. На меньших значения "белка" - больше значений с породой РефлешнСоверинг, а на бОльших значениях - больше значений породыВис Бик Айдиал
. -
возраст
имеет сильнейшую взаимосвязь с целевым признакомудой
. Коэффициент взаимосвязи:1.00
-
Между целевым и входными признаками связь в основном линейная, но наличие нелинейных связей также возможно для отдельных пород.
-
Яркие нелинейные связи не выявлены, в связи с чем добавление новых признаков - не потребовалось
-
Что касается мультиколлинеарности: матрица показала, что между некоторыми входными признаками есть умеренная корреляция, но нет явных признаков сильной мультиколлинеарности, с которой стоило бы справляться.
5. Решение задачи регресии (предсказание удоя)
- Обучили 3 модели линейной регрессии и проанализировали их остатки
- Выявили лучшую модель из трех на валидационной выборке, показатели которой:
-
MAE
- 146.4625952324208 -
MSE
- 37967.73485485037 -
RMSE
- 194.85311097041887 -
95% доверительный интервал =
(6070.497027590764, 6211.5065511559)
-
- Собрали train + valid выборки в единую обучающую и протестировали модель на тестовой выборке:
- Получили предсказания по всем коровам продавца
- Добавили столбец с предсказаниями в таблицу продавца
6. Решение задачи классификации (предсказания вкуса молока)
- Подобрали параметры и обучили модель логистической регрессии
- Проанализировали модель и минимизировали количество критических ошибок первого рода с 42 до 9, подобрав новый порог для вероятности предсказаний
- Определили 4-х коров, чье молоко предсказано как "вкусное"
- Отобрали для рекомендации 4 коровы, учитывая оба условия заказчика