Hay una version en español de este post, акви

Итак, одна неделя Bootcamp ушла, так быстро. Первая неделя из Учебного курса по науке о данных. Я учусь в Нью-Йорке (нажмите здесь, чтобы прочитать о том, что такое учебный курс и почему я оказался в нем).

Теперь пришло время работать над следующими проектами: личными(я выбираю тему) и индивидуальными(самостоятельно, без команды, как и первый проект). Проект № 2 посвящен скрейпингу и линейной регрессии.

Для этого проекта я должен:

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

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

Задний план:

Колумбия является второй страной по производству кофе в мире. Только 3% территории страны производят 10% кофе, потребляемого во всем мире. Цель этого проекта состоит в том, чтобы проанализировать и определить, какие факторы влияют на высокий уровень производства кофе, чтобы обеспечить производство на будущие месяцы. Для этого мы проанализируем несколько типов информации:

  • Данные о погоде: погодные условия и, в частности, месяц сбора урожая, могут повлиять на выращивание сельскохозяйственных культур.
  • Страны-конкуренты: Бразилия является крупнейшим производителем кофе, Вьетнам имеет аналогичный объем производства и другие страны, что может повлиять на производство.
  • Экономические факторы: большая часть кофе, производимого в стране, экспортируется, могут ли на это повлиять объемы экспорта (спрос)? Кроме того, поскольку Колумбия не использует традиционную рыночную валюту (доллар), следует также проанализировать курс обмена между долларом и колумбийским песо.

Извлечение данных из источников

Сбор всей этой информации на самом деле был главной проблемой для этого проекта:

  • Данные о погоде были получены с помощью Scrapy из Weather Underground для трех наиболее важных районов Колумбии, где производится кофе.
  • Производство кофе Данные из Колумбии, а также объемы экспорта и курс изменения доллара были загружены в формате csv с веб-страницы Colombian Coffee Growers Organization.
  • Экономическая информация и информация о производстве кофе из других стран были собраны с веб-страницы International Coffee Organization.

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

Общий анализ EDA для всех переменных

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

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

Создание модели

Первая модель

Прежде всего, я разделил данные между тренировочнымнабором (70%) и тестовымнабором (30%), это делается для проверки модели с данными, которых у нее нет. "видела" раньше, то есть на данных, на которых она не обучалась, чтобы увидеть, хорошо ли модель обобщает и не "запоминает ли (перекрывает). Как правило, набор данных разделен на три части, включая проверочныйнабор, в данном случае я не использовал проверочный набор из-за малого объема строк, с которыми работал: данные за восемьлет, одна строка в месяц = ​​96 строк.

Самой первой моделью, которую я запустил, была обычная линейная регрессия (OLS), в которой использовались только погодные переменные, взятые с веб-страницы Weather Underground: температура, скорость ветра, осадки, влажность, роса. балл (все в среднем за месяц). Я также включил в эту модель Intercept, чтобы сделать ее более гибкой.

Результаты: R2(тест) = 0,14, значения P между [0,039–0,745].
Это означает, что некоторые переменные релевантны, но некоторая информация отсутствует. Нам еще предстоит поработать

Категориальные переменные

Еще одна переменная, которая может быть важной и очень связана с погодой, — это месяц, в котором был собран урожай. Говорят, что кофе растет лучше в мае и октябре, поэтому эту переменную можно включить в модель.

Теперь, хотя самый последний месяц — это переменная, которая находится в диапазоне от 1 до 12, это не порядковая или числовая переменная: нет причин говорить, что февраль (значение = 2) — это двойной как январь (значение=1) или оба меньше, чем сентябрь (значение=9) или декабрь (значение=12). Все месяцы одинаково важны, номер месяца не представляет собой сумму и не дает никакого порядка (в этой части анализа , мы вернемся к временным рядам позже). Месяц сбора урожая — это то, что мы называем категориальной переменной, и вместо одного столбца со значениями (1–12) мы преобразуем его в 11 столбцов со значениями ( 1–0). Каждая строка будет иметь 10 значений в 0 и одно значение в 1, месяц, к которому она принадлежит. Этот процесс называется Одно горячее кодирование, и причина, по которой мы генерируем 11 столбцов, а не 12, заключается в том, чтобы уменьшить избыточность и корреляцию между этими новыми переменными: если все строки с 1-й по 11-ю ( с января по ноябрь) имеют значение 0, это означает, что строка относится к декабрю. Нет необходимости добавлять новый столбец, потому что это создаст корреляцию между ними.

Результаты. После включения новых 11 функций: R2(тест) = 0,64, значения P между [0,002–0,759].
Модель улучшается! Определенно, месяц сбора урожая является сильной переменной, когда речь идет о производстве кофе.

Страна-конкурент и экономический анализ

Как вы можете видеть на картинке выше, существует большая отрицательная связь между ценой на кофе в Колумбии, Бразилии или других странах и объемом производства. Имеет ли это смысл? Приводят ли более низкие цены к более высокому объему производства? На самом деле все наоборот: большие объемы снизятцены, а низкое производство сделаеткофе дороже. Если подумать, это простая теория спроса и предложения.

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

Анализ временных рядов

Мы уже видели, что месяц сбора урожая является важной характеристикой для определения объема производства, но как насчет других месяцев? Предполагая, что процесс, необходимый для экспорта кофе, помимо сбора урожая (очистка, сушка и, в некоторых случаях, помол, все эти процессы в Колумбии выполняются вручную, чтобы получить лучший кофе! ) занимает около месяца, давайте посмотрим, влияет ли на производство производство за предыдущий месяц. Это, декабрьское производство влияет на ноябрьское?, ноябрьское на октябрьское? и так далее? Это самый простой способ понять временной ряд: добавить зависимую переменную из одного месяца в качестве функции для прогнозирования следующего месяца.

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

Результаты: R2 (тест) улучшился до 0,67. Ниже вы можете увидеть изображение прогнозов, использующих в качестве признака только производство за предыдущий месяц: вы можете видеть, что прогнозы за последние месяцы (фиолетовыезвезды, помеченные с января по март) очень близки к реальным значениям ( Зеленыезвездочки). Эта модель предсказывает, что в следующем месяце производство кофе составит 1,176 тыс. мешков, так что просто нужно подождать и увидеть результаты. Модель улучшилась, поэтому я включу в модель производство за предыдущий месяц как функцию.

Обновление (май 2018 г.): реальная стоимость на апрель 2018 г. составила 1,037 тыс. мешков кофе. Всего около 130 000 мешков меньше прогнозов моделей!

Теперь, Hoy, чтобы найти лучшие функции? (Регуляризация)

Регуляризация — это процесс поиска наиболее подходящих функций в нашей модели. Как мы можем это сделать? Математически это делается путем добавления нового члена в уравнение нашей модели, представляющего затраты. Есть несколько способов сделать это, но все они пытаются минимизировать количество или ценность функций, включенных в модель. Если мы просто добавим все функции, модель будет переобучать, а именно: она будет оченьприспосабливаться к тренировочным данным, но не принесет пользы. на тестовых данных. (Наоборот, это будет недостаточное соответствие: модель будет слишкомобщей и не даст хороших прогнозов ни в одном из случаев).

Методы, которые я использовал для этих моделей, где:

  • Лассо (L1): стоимость определяется как сумма величины (абсолютного значения) всех коэффициентов. Он попытается понизить неважную функцию до нуля.
  • Конек (L2): принимает стоимость как сумму всех квадратов всех коэффициентов. Он попытается сделать неважные функции очень низкими.
  • Elastic-Net: использует смесь обоих этих методов, пытаясь определить для каждого коэффициента наиболее оптимальную стоимость.

Результаты: мне очень нравится график выше! Он показывает абсолютное значение всех признаков в соответствии с каждым из используемых методов регуляризации (OLS — это исходная модель без какой-либо регуляризации вообще). Функции, отмеченные красными стрелками там, где те, которые выбрал я (мое собственное, личное, субъективное решение, либо потому, что модели согласились с ним, либо потому, что я увидел некоторую важность во времямоего анализа и исследования) для окончательной модели. R2(тест)=0,783!!!

Выводы:

На производство кофе вместо того, что предполагалось в начале этого анализа, похоже, не влияют погодные условия. Кофе будет расти при любой температуре и % влажности внутри зоны наблюдения. Хотя защита от дождя должна быть сохранена. Осадки, по-видимому, являются единственным существенным погодным фактором

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

Месяц урожая кажется самой важной функцией в Coffee Production. Периоды с мая по август, а также с октября по декабрь оказывают наибольшее влияние.

Если вам нравится смотреть на полный анализ, данные или код, загляните на мой Github.