От бизнес-проблемы к решению машинного обучения Решение бизнес-задач

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

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

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

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

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

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

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

Бизнес-проблема или исследовательская проблема

Начните с бизнес-проблемы__

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

«Мы хотели бы использовать исторические данные о нашем потреблении энергии, чтобы определить наши варианты оптимизации энергоэффективности и экономии затрат».

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

Обозначение проблемы машинного обучения

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

«Намного лучше приблизительный ответ на правильный вопрос, который часто бывает расплывчатым, чем точный ответ на неправильный вопрос» __ J. Тьюки, Будущее статистического анализа

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

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

Сбор и / или интеграция данных

  • Имеют ли отношение данные к проблеме?
  • Достаточно ли данных для обучения хорошей модели?

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

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

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

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

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

Требуемый минимум - иметь как минимум в 10 раз больше примеров данных, чем объектов в наборе данных.

Если это не так, необходимо собрать больше данных. Доступно множество вариантов для получения дополнительных данных. К ним относятся краудсорсинг с использованием таких платформ, как Amazon Mechanical Turk; другие внешние источники; или сбор внутренних данных внутри организации. Для некоторых проблем возможно и целесообразно сгенерировать больше данных из существующих примеров данных. Лучше всего это определяет инженер по машинному обучению.

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

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

  • Обработка отсутствующих данных (NaN, NA, «»,?, None) и выбросов __ Стандартизируйте все отсутствующие данные в np.nan. Некоторые распространенные варианты обработки отсутствующих данных и выбросов: удаление примеров данных с отсутствующими значениями или применение методов вменения (среднее значение, режим / частота, медиана).
  • Работа с повторяющимися функциями и / или примерами __ Дублирующиеся функции вызывают проблемы с линейной зависимостью в наборе данных, а повторяющиеся примеры могут создавать ложное впечатление о том, что данных достаточно, в то время как количество уникальных примеров может быть слишком маленьким. разумно обучить хорошую модель.
  • Масштабирование, нормализация, стандартизация функций __ Вы хотите, чтобы ваши характеристики находились в одном или сопоставимых диапазонах, обычно от 0 до 1. Это гарантирует, что ваша модель обучается быстрее и стабильна, особенно если вы используете алгоритмы оптимизации. как градиентный спуск.
  • Сбалансируйте размеры классов для категориальных данных __ Убедитесь, что количество обучающих примеров по различным целевым категориям в вашем наборе данных сопоставимо. Но если задача, над которой вы работаете, включает в себя естественно искаженные модели, когда один класс всегда доминирует над другим, балансировка не подходит. Это обычное дело для задач обнаружения аномалий, таких как прогнозирование редких заболеваний (например, рака) и обнаружение мошенничества. Соответствующий метод обучения и метрика оценки должны быть выбраны для искаженных наборов данных, которые не могут быть разумно сбалансированы.
  • Гармонизируйте несовместимые единицы __ Несогласованные единицы могут легко остаться незамеченными. Убедитесь, что все единицы измерения одинаковых физических величин одинаковы. Чтобы подчеркнуть это, НАСА потеряло свой спутник Mars Climate Orbiter стоимостью 125 миллионов долларов из-за несовместимости единиц.

Визуализация данных и исследовательский анализ

Визуализация данных предоставляет наиболее оптимальные средства для исследовательского анализа. Используя графики, такие как гистограммы и диаграммы разброса, можно легко обнаружить такие вещи, как выбросы, тенденции, кластеры или категории в вашем наборе данных. Однако визуализации, как правило, очень полезны только для низкоразмерных данных (1D, 2D, 3D), поскольку более высокие измерения не могут быть построены. Для данных большого размера вы можете выбрать некоторые конкретные функции для визуализации.

Выбор функций и разработка функций

Какие функции важны, чтобы делать правильные прогнозы?

Цель состоит в том, чтобы выбрать функции так, чтобы у вас была наименьшая корреляция между функциями, но максимальная корреляция между каждой функцией и целями.

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

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

Модельное обучение

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

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

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

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

Оценка модели

Насколько полезна модель (есть ли в ней минимально необходимый показатель производительности)?

Насколько эффективна модель с точки зрения вычислений?

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

  • Точность: подходит для задачи классификации
  • Точность / отзыв: подходит для задач классификации с перекосом
  • Rsquared: подходит для регрессии

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

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

«Все модели неправильные, но некоторые полезны». __ Джордж Бокс

Развертывание, интеграция и мониторинг модели

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

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

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

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

Заключение

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

Решение машинного обучения - это система с ядром машинного обучения, работающим в фоновом режиме.

Краткое изложение деятельности:

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

Ресурсы

  1. Начало работы с курсом машинного обучения AWS на Coursera
  2. Курс машинного обучения Эндрю на Coursera
  3. Как развернуть модели машинного обучения
  4. 6 этапов успеха в проектах машинного обучения