Оказывается, что при использовании машинного обучения в реальных приложениях большая часть работы выполняется до и после обучения. Преподаватели машинного обучения редко предоставляют полное представление о том, что нужно для использования машинного обучения в прогностическом приложении, которое развертывается в производственной среде. Они просто объясняют одну часть проблемы, а затем предполагают, что вы разберетесь с остальной и соедините точки самостоятельно. Например, соединение точек между библиотеками машинного обучения, которые вас учили использовать в Python, R или Matlab, и вашим производственным приложением, разработанным на Ruby, Swift, C ++ и т. Д.

Когда я начал свою докторскую диссертацию почти 10 лет назад, у меня был друг из Yahoo, который только что закончил свою работу и объяснял мне, как инженеры-программисты переписывают код исследователей машинного обучения на язык, используемый в производственной среде. Как Флориан Дуэтто Dataiku показал на PAPIs Connect в прошлом году, стоимость развертывания Proofs of Concept в производственной среде может полностью убить проекты машинного обучения. Развертывание - настолько важная проблема, что, по его оценкам, ведущие компании, такие как Spotify и Facebook, вложили более 5 миллионов долларов в свои производственные платформы машинного обучения (10–20 человек посвятили себя этому, ресурсам, инфраструктуре…).

К счастью, сегодня есть новые и доступные решения этой проблемы последней мили. Они вращаются вокруг использования REST (http) API. Модели должны быть представлены как API-интерфейсы, и если масштабирование числа прогнозов, выполняемых данной моделью, может стать проблемой, эти API-интерфейсы будут обслуживаться на нескольких конечных точках с балансировщиками нагрузки впереди. Платформы как услуга могут помочь в этом - вот некоторая информация о возможностях масштабирования Microsoft Azure ML, Amazon ML и Yhat's Analytics Load Balancer (который вы также можете запустить в своей частной инфраструктуре / облаке) . Некоторые из этих платформ позволяют вам использовать любую библиотеку ML, которую вы хотите, другие ограничивают вас своими собственными проприетарными библиотеками. В моем предстоящем семинаре я решил использовать Azure для развертывания моделей, созданных с помощью scikit-learn, в API, а также для демонстрации того, как Amazon и BigML обеспечивают еще более высокий уровень абстракции (при этом обеспечивая точные модели), которые могут создавать во многих случаях с ними легче работать.

Рабочий процесс машинного обучения

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

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

  • Определите правильную проблему машинного обучения, которую нужно решить для вашей организации
  • Инженерные функции, т. Е. Найти способы представить объекты, для которых вы будете делать прогнозы с помощью машинного обучения.
  • Выясните, когда и как часто вам нужно будет делать прогнозы и сколько времени у вас будет для этого (есть ли способ делать прогнозы партиями или вам абсолютно необходимо, чтобы все прогнозы выполнялись в режиме реального времени?)
  • Собирать информацию
  • Подготовить фактический набор данных для запуска алгоритмов обучения, т. Е. Извлечь функции из «сырых» собранных данных и очистить их.
  • Выясните, когда и как часто вам нужно будет изучать новые / обновленные модели и сколько у вас на это времени.

Оперативное машинное обучение за 2 дня

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

В PAPIs мы хотим дать разработчикам возможность улучшать свои приложения и создавать новые ценности из данных с помощью машинного обучения. Мы начинаем новую серию 2-дневных практических семинаров в классе и в Интернете. Первый тип семинара, который мы запланировали, - это независимое введение в операционный ML с открытым исходным кодом и облачными платформами. День 1 охватывает введение в машинное обучение, создание, внедрение и оценку прогнозных моделей. День 2 включает в себя выбор модели, ансамбли, подготовку данных, практический обзор сложных тем, таких как обучение без учителя и глубокое обучение, а также методологию разработки собственного варианта использования машинного обучения.

Мы используем Python с такими библиотеками, как Pandas, scikit-learn, SKLL, и облачными платформами, такими как Microsoft Azure ML, Amazon ML, BigML и Indico. Я думаю, что эти платформы отлично подходят для многих организаций и реальных случаев использования, но даже если по какой-то причине вы поймете, что они могут не идеально вам подходить, я все равно рекомендую использовать их для обучения и практики машинного обучения. ML-as-a-Service значительно ускоряет настройку рабочих сред (например, в Azure ML предустановлены самые популярные библиотеки и можно запускать интерактивные записные книжки Jupyter, к которым вы можете получить доступ из своего браузера), а также экспериментировать с ML с более высокими уровнями абстракция, которую они предоставляют (например, объединение моделей кластеризации в один клик, обнаружения аномалий и классификации с BigML или быстрое придание свойств тексту и изображениям с помощью Indico Deep Learning API).

Хотите узнать больше? Посетите страницу семинаров и присоединяйтесь к нам на (бесплатный) вебинар 13 апреля 2016 года в 9 утра по тихоокеанскому времени.