Сага о деталях, важных, но о которых обычно забывают.

Если вы прошли свой первый MOOC по машинному обучению (он же Эндрю Нг на Coursera) и хотите изучить дальнейшие возможности в этой области, или вы тот, кто следил за новостями о Data Science и машинном обучении и хотите проверить, field - это то, что вам нужно, вы находитесь в нужном месте (виртуально), чтобы узнать о некоторых ингредиентах рецепта, которые помогут вам ярко сиять с помощью ML.

Разделив ML на компоненты, три из них, о которых вы должны беспокоиться прямо сейчас, будут:

  • Данные, потому что это наука о данных,
  • Математика, лежащая в основе модели,
  • Программирование.

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

Математика, лежащая в основе модели

Знание того, как работает алгоритм, необязательно до первого запуска model.fit () и model.predict (), но чтобы использовать реальную мощь алгоритма, вам необходимо понять, как он работает. Логистическая регрессия - это тип обобщенной линейной модели, поэтому модель линейной регрессии, которая выводит непрерывные данные, может быть легко изменена для получения в результате категорий. Меры точности или значения параметров, все в той или иной форме является математической функцией.

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

Программирование

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

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

Данные

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

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

Метка - это то, что мы прогнозируем - переменная y в простой линейной регрессии.

Feature - это входная переменная - переменная x в простой линейной регрессии.

Пример - это конкретный экземпляр данных x.

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

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

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

Здесь все, что дано, - это ряд значений, которые необходимо каким-то образом преобразовать в функции и метки. Температура определенного дня не совсем отличается от температуры предыдущих нескольких дней. Если сегодня температура 20 ° C, завтра она не может быть 10 ° C или 15 ° C, она должна быть где-то около 20 ° C, если только не в чрезвычайных условиях. Эту идею можно использовать в нашей работе.

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

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

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

Статья Даниэля Бурка представляет собой отличный контрольный список для EDA.

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

Вот квартет Анскомба !!!

Хотя четыре набора данных используют одни и те же описательные меры, они полностью отличаются друг от друга. Данная линия регрессии с точностью 67% не сможет дать хороших прогнозов для 2-го или 4-го набора данных.

И если вы чувствуете, что EDA помогает только с табличными наборами данных, вы можете прочитать наблюдения Андрея Карпати о ручной классификации набора данных CIFAR10.

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

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

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

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

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

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

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

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

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

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

P. S. Отличный ресурс для получения дополнительной информации по этой теме можно найти здесь.