training_projects

Форк
0

..
/
farm_risk_management 
7 месяцев назад
7 месяцев назад
README.md

Управление рисками и принятие решения о покупке коров хозяйства "Вольный луг"

К IT-компании, которая выполняет на заказ проекты по машинному обучению, обратился фермер, владелец молочного хозяйства «Вольный луг». Он хочет купить бурёнок, чтобы расширить поголовье стада коров. Для этого он заключил выгодный контракт с ассоциацией пастбищ «ЭкоФерма». Условия позволяют фермеру очень тщательно отобрать коров. Он определяет качество молока по строгой методике, и при этом ему нужно выполнять свой план развития молочного хозяйства.


Цель исследования: Разработать модель машинного обучения, которая поможет ему управлять рисками и принимать объективное решение о покупке.

Задачи исследования:

  1. Создать две прогнозные модели для отбора бурёнок в поголовье:
    • Первая будет прогнозировать возможный удой коровы (целевой признак Удой);

    • Вторая — рассчитывать вероятность получить вкусное молоко от коровы (целевой признак Вкус молока).

  2. С помощью модели нужно отобрать коров по двум критериям:
    • средний удой за год — не менее 6000 килограммов;
    • молоко должно быть вкусным.

Описание данных:

  1. Датасэт №1 - ferma_main.csv - содержит данные о стаде фермера на текущий момент

    • id — уникальный идентификатор коровы.
    • Удой, кг — масса молока, которую корова даёт в год (в килограммах).
    • ЭКЕ (Энергетическая кормовая единица) — показатель питательности корма коровы.
    • Сырой протеин, г — содержание сырого протеина в корме (в граммах).
    • СПО (Сахаро-протеиновое соотношение) — отношение сахара к протеину в корме коровы.
    • Порода — порода коровы.
    • Тип пастбища — ландшафт лугов, на которых паслась корова.
    • порода папы_быка — порода папы коровы.
    • Жирность,% — содержание жиров в молоке (в процентах).
    • Белок,% — содержание белков в молоке (в процентах).
    • Вкус молока — оценка вкуса по личным критериям фермера, бинарный признак (вкусно, не вкусно).
    • Возраст — возраст коровы, бинарный признак (менее_2_лет, более_2_лет).
  2. Датасет №2 ferma_dad.csv - хранит имя папы каждой коровы в стаде фермера.

    • id — уникальный идентификатор коровы.
    • Имя Папы — имя папы коровы.
  3. Датасет №3 cow_buy.csv - это данные о коровах «ЭкоФермы», которых фермер хочет изучить перед покупкой.

    • Порода — порода коровы.
    • Тип пастбища — ландшафт лугов, на которых паслась корова.
    • порода папы_быка — порода папы коровы.
    • Имя_папы — имя папы коровы.
    • Текущая_жирность,% — содержание жиров в молоке (в процентах).
    • Текущий_уровень_белок,% — содержание белков в молоке (в процентах).
    • Возраст — возраст коровы, бинарный признак (менее_2_лет, более_2_лет).

Вывод

В ходе работы над проектом была разработана модель машинного обучения, которая сможет помочь заказчику управлять рисками и принимать объективное решение о покупке коров на ферму. Рекомендуемые коровы к покупке:

городатип_пастбищапорода_папыимя_папытекущая_жирностьтекущий_белоквозрастожидаемый_удойожидаемый_вкус_молока
Вис Бик АйдиалХолмистоеАйдиалГеркулес3.583.076более 2 лет6755вкусно
Вис Бик АйдиалХолмистоеАйдиалГеркулес3.583.076более 2 лет6755вкусно
РефлешнСоверингХолмистоеАйдиалБуйный3.403.079менее 2 лет6501вкусно
Вис Бик АйдиалХолмистоеСоверинСоловчик3.733.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 коровы, учитывая оба условия заказчика

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.