www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Шесть важных шагов для построения системы машинного обучения

Дата публикации Sep 7, 2019

Создание отличной системы машинного обучения - это искусство.

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

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

Конвейер машинного обучения - это больше, чем просто создание моделей

Важно понимать, что происходит до обучения модели и после обучения модели и ее развертывания в производстве.

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


1. Определение проблемы

Это очевидно -Определите проблему.

И это может быть самой важной частью всего упражнения.

Итак, как определить проблему для машинного обучения?

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

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

Как только у вас появится идея и вы определите совместимость бизнеса, вам необходимоопределить показатель успеха,

Теперь, как выглядит успех?

Точность 90%, точность 95% или точность 99%.

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

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

Например: для проблемы с прогнозированием кликов / мошенническим приложением повышение точности на 1% повысит практический результат бизнеса по сравнению с увеличением точности прогноза настроения при просмотре на 1%.

Не все увеличения точности созданы равными


2. Данные

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

Самый важный вопрос для ответа здесь:Ваша модель должна работать в реальном времени?

В таком случае вы не можете использовать такую ​​систему, как Hive / Hadoop, для хранения данных, поскольку такие системы могут создавать большую задержку и подходят для автономной пакетной обработки.

Нужно ли обучать вашу модель в реальном времени?

Если производительность вашей модели ML со временем снижается, как показано на рисунке выше, вы можете рассмотреть возможность обучения в режиме реального времени. Обучение RT может быть полезным для большинства систем прогнозирования кликов, так как интернет-тренды меняются довольно быстро.

Есть ли несоответствие между данными испытаний и поездов?

Или простыми словами -Вы подозреваете, что производственные данные поступают из дистрибутива, отличного от данных обучения?

Например: при обучении в режиме реального времени по проблеме предсказания кликов пользователь показывает объявление, а он не нажимает. Это неудачный пример? Может быть, пользователь нажимает обычно через 10 минут. Но вы уже создали данные и обучили свою модель этому.

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


3. Оценка

Как мы будем оценивать производительность нашей модели?

Золотым стандартом здесь является разделение по проверке поезда.

Часто создавая набор для проверки достоверности поездов, путем выборки мы забыли о неявном допущении - данные редко бывают IID (независимо и одинаково распределенными).

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

Для интернет-компании точка данных с 2007 года сильно отличается от точки данных, которая поступает в 2019 году. Они не связаны с одним и тем же распределением из-за множества факторов, в первую очередь скорости Интернета.

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

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

Следующая вещь, о которой вам нужно подумать, это базовая модель.

Допустим, мы используем RMSE в качестве показателя оценки для наших моделей временных рядов. Мы оценили модель на тестовом наборе, и среднеквадратичное отклонение составило 4,8.

Это хороший RMSE? Откуда нам знать? Нам нужна базовая RMSE Это может исходить от используемой в настоящее время модели для той же задачи. Или с помощью какой-то простой модели. Для модели временного ряда основой для поражения является прогноз на последний день. прогнозировать число в предыдущий день.

Для моделей классификации НЛП я обычно устанавливаю базовую линию как метрику оценки (Точность, F1, log log) моделей логистической регрессии на Countvectorizer (Мешок слов).

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

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

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

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


4. Особенности

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

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

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

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

Руководство автостопом по извлечению функций

Исчерпывающий взгляд на технические приемы

towardsdatascience.com

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

5 алгоритмов выбора функций, которые должен знать каждый ученый данных

Бонус: Что делает хорошего футболиста великим?

towardsdatascience.com


5. Моделирование

Интерпретируемая книга ML

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

Так что же нам нужно думать при создании модели?

Первый вопрос, который вам, возможно, придется задать себе:если ваша модель должна быть интерпретируемой?

Существует довольно много случаев, когда бизнесу может потребоваться интерпретируемая модель. Один из таких вариантов использования - это когда мы хотим сделать атрибутивное моделирование. Здесь мы определяем влияние различных рекламных потоков (ТВ, радио, газеты и т. Д.) На доход. В таких случаях понимание ответа от каждого рекламного потока становится необходимым.

Если нам нужно максимизировать точность или любую другую метрику, мы все равно захотим использовать модели «черного ящика», такие как NeuralNets или XGBoost.

Помимо выбора модели, у вас должны быть и другие вещи:

  • Модельная архитектура:Сколько слоев для NN, сколько деревьев для GBT или как вам нужно создавать взаимодействия объектов для линейных моделей.
  • Как настроить гиперпараметры ?:Вы должны попытаться автоматизировать эту часть. Для этого существует множество инструментов на рынке. Я склонен использовать hyperopt.

6. Эксперимент

Теперь вы создали свою модель.

Он работает лучше, чем базовая линия / ваша текущая модель. Как мы должны идти вперед?

У нас есть два варианта

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

Я фанат второго подхода. В его удивительномтретий курсПроекты структурированного машинного обучения в CourseraСпециализация глубокого обученияЭндрю Нг говорит -

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

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

Чтобы проверить правильность вашего предположения о том, что ваша модель лучше существующей, вы можете настроить A / B-тест. Некоторые пользователи (группа Test) видят вашу модель, а некоторые пользователи (Control) видят прогнозы из предыдущей модели.

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


Вывод

Нет ничего простого в машинном обучении. И ничего не следует предполагать.

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

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

Так что думай мудро и много думай.


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

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


Спасибо за прочитанное. Я собираюсь писать больше постов для начинающих и в будущем. Следуй за мной всреднийили подписаться на мойблогбыть в курсе о них. Как всегда, я приветствую отзывы и конструктивную критику, и я могу найти их в Твиттере@mlwhiz,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map