I. Определение

Введение, постановка проблемы и показатели

Наука об обучении машин обучению и созданию моделей для предсказаний будущего широко используется, и не зря. Сельское хозяйство играет важнейшую роль в мировой экономике. В условиях продолжающегося расширения населения человечества понимание урожайности сельскохозяйственных культур во всем мире имеет ключевое значение для решения проблем продовольственной безопасности и уменьшения воздействия изменения климата.

Прогнозирование урожайности - важная задача сельского хозяйства. Урожайность в сельском хозяйстве в первую очередь зависит от погодных условий (дождь, температура и т. Д.), Пестицидов. Точная информация об истории урожайности сельскохозяйственных культур важна для принятия решений, связанных с управлением сельскохозяйственными рисками и прогнозами на будущее.

Кухня во всем мире сильно различается, но основные ингредиенты, которыми питаются люди, очень похожи. Мы едим много кукурузы, пшеницы, риса и других простых культур. В этом проекте методы машинного обучения применяются для прогнозирования 10 наиболее потребляемых культур с использованием общедоступных данных ФАО и Всемирного банка данных.

Регрессионный анализ - это метод прогнозного моделирования, который исследует взаимосвязь между зависимой (целевой) и независимой (-ыми) переменной (-ми) (предиктором). Модели регрессии, использованные в этом проекте:

  • Регрессор с усилением градиента
  • Случайный лесной регрессор
  • SVM
  • Регрессор дерева решений

Функция sklearn.metrics.r2_score вычисляет R² (коэффициент детерминации); это доля дисперсии в зависимой переменной, которую можно спрогнозировать на основе независимой переменной, где это статистическая мера от 0 до 1, которая вычисляет, насколько похожа линия регрессии на данные, которым она соответствует. Если это 1, модель 100% предсказывает дисперсию данных; если это 0, модель не предсказывает никакой дисперсии.

Метрикой оценки будет оценка , которая будет представлять долю дисперсии для элементов (культур) в регрессионной модели. Стандартные SciKit-Learn Gradient Boosting Regressor и Random Forest Regressor будут использоваться в качестве тестов. Затем будет исследовано несколько моделей для улучшения по сравнению с эталонным тестом, включая регрессор дерева решений и машины опорных векторов (SVM).

II. Анализ

Сбор и очистка данных

Сбор данных - это процесс сбора и измерения информации об интересующих переменных. FAOSTAT предоставляет доступ к более чем 3 миллионам временных рядов и перекрестных данных, относящихся к продовольствию и сельскому хозяйству. Данные ФАО можно найти в формате csv (ура!). FAOSTAT содержит данные по 200 странам и более 200 первичных продуктов и исходных данных в своем основном наборе данных. Он предлагает национальную и международную статистику по продовольствию и сельскому хозяйству. Первое, что нужно получить - это урожайность сельскохозяйственных культур по каждой стране.

Теперь данные выглядят чистыми и организованными, но без некоторых столбцов, таких как код города, домен, код товара и т. Д., Которые не будут использоваться для анализа. Кроме того, переименование Value в hg / ha_yield, чтобы облегчить распознавание того, что это наши культуры, дает производственную ценность. Конечным результатом является фреймворк с четырьмя столбцами, который содержит: страну, товар, год и урожайность, соответствующую им.

Используя функцию describe (), можно кое-что прояснить о фрейме данных, где он начинается с 1961 года и заканчивается в 2016 году, это все доступные актуальные данные от ФАО.

К климатическим факторам относятся влажность, солнечный свет и факторы, влияющие на климат. Факторы окружающей среды относятся к почвенным условиям. В этой модели выбраны два климатических фактора и один фактор окружающей среды: дождь и температура. Помимо пестицидов, влияющих на рост и развитие растений.

Дождь оказывает сильное влияние на сельское хозяйство, для этого проекта информация о количестве осадков в год была собрана из Всемирного банка данных в дополнение к средней температуре по каждой стране.

Окончательная структура данных для среднего количества осадков включает: страна, год и среднее количество осадков за год. Фреймворк данных начинается с 1985 по 2017 год, с другой стороны, фреймворк средней температуры включает страну, год и среднюю зарегистрированную температуру. Фрейм данных о температуре начинается с 1743 года и заканчивается в 2013 году. Колебания по годам немного скомпрометируют собранные данные, когда придется объединить годовой диапазон, чтобы не включать никаких нулевых значений.

Данные по пестицидам были собраны в ФАО; отмечается, что они начинаются в 1990 году и заканчиваются в 2016 году. При объединении этих рамок данных ожидается, что годовой диапазон начнется с 1990 года и закончится в 2013 году, то есть данные за 23 года.

На рисунке выше показан окончательный фрейм данных с выбранными функциями для применения модели.

Как и ожидалось, фрейм данных начинается в 1990 году и заканчивается в 2013 году. Убедившись, что нет пустых сущностей, я могу перейти к следующему шагу. И последнее замечание: большая разница в значениях для каждого столбца, позже я учту это масштабирование.

Исследование данных

Группировка по странам и позициям для лучшего понимания набора данных. В таблице данных 101 страна, причем Индия имеет самый высокий урожай сельскохозяйственных культур. Кроме того, Индия занимает первое место по производству маниоки и картофеля. Картофель, по-видимому, является доминирующей культурой в наборе данных, являясь самой высокой культурой в 4 странах.

Теперь, исследуя отношения между столбцами фрейма данных, хороший способ быстро проверить корреляции между столбцами - это визуализировать матрицу корреляции в виде тепловой карты. Из тепловой карты ниже видно, что все переменные независимы от каждой и не имеют корреляций.

III. Методология

Предварительная обработка данных

Предварительная обработка данных - это метод, который используется для преобразования необработанных данных в чистый набор данных. Другими словами, всякий раз, когда данные собираются из разных источников, они собираются в необработанном формате, что невозможно для анализа.

В окончательном фрейме данных есть два категориальных столбца в фрейме данных, категориальные данные - это переменные, которые содержат значения меток, а не числовые значения. Количество возможных значений часто ограничивается фиксированным набором, как в этом случае, значениями элементов и стран. Многие алгоритмы машинного обучения не могут напрямую работать с данными этикеток, они требуют, чтобы все входные и выходные переменные были числовыми.

Это означает, что категориальные данные необходимо преобразовать в числовую форму. Одно горячее кодирование - это процесс, с помощью которого категориальные переменные преобразуются в форму, которая может быть предоставлена ​​алгоритмам машинного обучения для более эффективного прогнозирования. Для этого будет использоваться One-Hot Encoding, чтобы преобразовать эти два столбца в один горячий числовой массив.

Категориальное значение представляет собой числовое значение записи в наборе данных. Эта кодировка создаст двоичный столбец для каждой категории и вернет матрицу с результатами.

Функции фрейма данных будут выглядеть, как показано выше, с 115 столбцами. Взглянув на набор данных выше, он содержит функции, сильно различающиеся по величине, единицам и диапазону. Объекты с большими звездными величинами будут иметь гораздо большее значение при расчетах расстояний, чем объекты с низкими звездными величинами. Чтобы подавить этот эффект, нам нужно привести все функции к одинаковому уровню. Этого можно добиться путем масштабирования с помощью MinMaxScaler.

Последний этап предварительной обработки данных - это данные для обучения и тестирования. Набор данных будет разделен на два набора данных: набор данных для обучения и набор данных для тестирования. Данные обычно имеют тенденцию к неравенству разделения, потому что для обучения модели обычно требуется как можно больше точек данных. Обычно разбиения составляют 70/30 или 80/20 для обучения / тестирования.

Набор обучающих данных - это исходный набор данных, используемый для обучения алгоритмов машинного обучения обучению и созданию правильных прогнозов. (70% набора данных - это обучающий набор данных)

Сравнение и выбор моделей

Прежде чем принять решение об использовании алгоритма, сначала нам нужно оценить, сравнить и выбрать лучший, который соответствует этому конкретному набору данных.

Обычно, работая над проблемой машинного обучения с заданным набором данных, мы пробуем разные модели и методы, чтобы решить проблему оптимизации и подобрать наиболее подходящую модель, которая не будет ни переоснащаться, ни не соответствовать модели.

Метрика оценки устанавливается на основе функции оценки регрессии R² (коэффициент детерминации), которая будет представлять долю дисперсии для элементов (культур) в регрессионной модели. Оценка показывает, насколько хорошо термины (точки данных) соответствуют кривой или линии.

Судя по результатам, рассмотренным выше, Регрессор дерева решений имеет наивысший показатель R² 0f 96%, GradientBoostingRegressor занимает второе место с 89%.

Я также вычислю Скорректированное R², где он также показывает, насколько хорошо члены соответствуют кривой или линии, но с поправкой на количество членов в модели. Если вы добавляете в модель все больше и больше бесполезных переменных, скорректированный r-квадрат будет уменьшаться. Если вы добавите больше полезных переменных, скорректированный r-квадрат увеличится. Скорректированное всегда будет меньше или равно .

IV. Полученные результаты

Результаты и выводы модели

Наиболее распространенная интерпретация - насколько хорошо регрессионная модель соответствует наблюдаемым данным. Например, 60% означает, что 60% данных соответствуют модели регрессии. Как правило, более высокое значение указывает на лучшее соответствие модели. Из полученных результатов видно, что модель очень хорошо соответствует данным - 96%.

Важность функции рассчитывается как уменьшение примеси узла, взвешенное по вероятности достижения этого узла. Вероятность узла можно рассчитать делением количества выборок, которые достигают узла, на общее количество выборок. Чем выше значение, тем важнее функция. Получение 7 основных функций, важных для модели:

Картофель имеет наивысшее значение при принятии решения для модели, поскольку это самая высокая культура в наборе данных. Кассава тоже, тогда, как и ожидалось, мы видим эффект пестицидов, где это третья по важности характеристика, а затем, если урожай - сладкий картофель, мы видим одни из самых высоких культур по важности характеристик в наборе данных.

Если урожай выращивается в Индии, это имеет смысл, поскольку в Индии самая большая сумма урожая в наборе данных. Затем идут осадки и температура. Первое предположение об этих характеристиках было правильным, поскольку все они существенно влияют на ожидаемую урожайность сельскохозяйственных культур в модели.

На диаграмме ниже показана доходность по каждому элементу. Картофель самый высокий, маниока, сладкий картофель и ямс.

V. Заключение и заключительные мысли

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

Алгоритм Decision Tree стал одним из наиболее часто используемых алгоритмов машинного обучения как в соревнованиях, таких как Kaggle, так и в бизнес-среде. Дерево решений можно использовать как в задачах классификации, так и в задачах регрессии.

Дерево решений обычно начинается с одного узла, который разветвляется на возможные результаты. Каждый из этих результатов ведет к дополнительным узлам, которые разветвляются на другие возможности. Узел решения, представленный квадратом, показывает решение, которое необходимо принять, а конечный узел показывает окончательный результат пути решения. Узел представляет собой одну входную переменную (X) и точку разделения этой переменной, если переменная является числовой. Листовые узлы (также называемые конечными узлами) дерева содержат выходную переменную (y), которая используется для прогнозирования.

Дерево решений приходит к оценке, задавая серию вопросов к данным, каждый из которых сужает наши возможные значения до тех пор, пока модель не станет достаточно уверенной, чтобы сделать единственный прогноз. Порядок вопросов, а также их содержание определяются моделью. Кроме того, все вопросы задаются в форме Верно / Неверно. Регрессия деревьев решений использует среднеквадратичную ошибку (MSE), чтобы решить разделить узел на два или более подузлов.

Корневой узел - это элемент potato, который является его наиболее важной особенностью в модели. Модель спрашивает, является ли это картофель, а затем, исходя из этого, следует по ветке, истинно это или ложно. алгоритм сначала выберет значение и разделит данные на два подмножества. Для каждого подмножества он будет рассчитывать MSE отдельно. Дерево выбирает значение с наименьшим значением MSE до тех пор, пока оно не достигнет листового узла.

Поскольку при кодировании категориальных элементов ответ будет либо 0, либо 1, либо да, либо нет. Затем два внутренних узла на глубине одного, если следовать истинной ветви: «Является ли элемент маниока?‹ = 0,5 ». Другой узел спросит «pesticides_tonnes‹ = 0,005 », проследив дерево решений на более глубокий уровень и так далее.

На рисунке выше показано, насколько хорошо совпадают прогнозы, визуализированные в виде линии. Видно, что оценка отличная. Это означает, что мы нашли подходящую модель для прогнозирования урожайности сельскохозяйственных культур для определенной страны. Добавление дополнительных функций, таких как климатические данные; ветер и загрязнение, экономическая ситуация в данной стране и так далее, вероятно, улучшат прогнозы модели.

Итак, стоило ли того нанодегри?

Ну, некоторые части, определенно! Я бы предпочел, чтобы часть развертывания была больше ориентирована на использование Flask вместо Amazon SageMaker.

Мне удалось закончить нано-степень за три недели, самодисциплина и удовлетворение после прохождения каждого проекта абсолютно того стоят. Кроме того, симпатичный значок повышения уровня Эксперт проекта стоил дополнительных усилий, чтобы все было сделано. #UdacityLevelUp

(ссылка на код: Машинное обучение-Capstone-Project)

использованная литература

Математика деревьев решений, случайный лес и важность функций в Scikit-learn и Spark

Подробное объяснение регрессора дерева решений

Продовольственная и сельскохозяйственная организация Объединенных Наций

Открытые данные Всемирного банка

Регрессия дерева решений