Понимание основных проблем и рабочего процесса (часть 1)

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

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

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

Прогнозы

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

  1. Предсказать, будет ли изображение на изображении кошкой или собакой
  2. Предсказать стоимость дома
  3. Предсказать, какие продукты рекомендовать пользователю
  4. Предскажите, какие пользователи разделяют интересы
  5. Предсказать, когда повернуть, разогнаться или задействовать тормоза в беспилотном автомобиле.

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

Все начинается с данных. Библиотеки и платформы машинного обучения могут делать прогнозы, анализируя огромные объемы данных и находя закономерности или математические формулы, которые «объясняют» данные. Данные - самый важный компонент успешной системы машинного обучения. Его нужно много, и оно должно быть хорошим. Входят неверные данные = нет прогнозов.

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

Данные

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

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

Square Feet       # Bedrooms       Color         Price
-----------       ----------       -----         -----        
2,100             3                White         $100,000
2,300             4                White         $125,000
2,500             4                Brown         $150,000

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

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

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

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

Значение, которое мы хотим спрогнозировать, - это Цена. Это называется нашим ярлыком.

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

  1. Выберите алгоритм машинного обучения. Мы рассмотрим некоторые из распространенных алгоритмов, используемых в машинном обучении.
  2. Поручите нашему алгоритму машинного обучения использовать квадратные футы и # спальни в качестве наших функций и цену в качестве нашей метки (значение, которое мы хотим спрогнозировать).
  3. Подайте набор данных в наш алгоритм машинного обучения, чтобы обучить модель машинного обучения, которая может делать прогнозы. Алгоритм будет использовать набор данных, который вы ему скармливаете, чтобы придумать математическую формулу для прогнозирования новых результатов.
  4. Чтобы спрогнозировать цену, мы вводим в нашу модель машинного обучения набор функций (площадь в квадратных футах и ​​количество спален) и в ответ получаем прогнозируемую цену.

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

Инструменты

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

Блокноты Jupyter. Блокноты используются специалистами по обработке данных для очистки, визуализации и понимания данных. DSX использует ноутбуки Jupyter, но ноутбуки бывают разных видов. В DSX вы пишете свои записные книжки на Python или Scala.

Apache Spark ™: Spark - это платформа кластерных вычислений для анализа огромных объемов данных в памяти. Чтобы машинное обучение было эффективным, вам нужно много данных, поэтому имеет смысл иметь такую ​​платформу, как Spark, чтобы помочь.

Apache Spark ML: Spark ML - это библиотека для построения конвейеров машинного обучения поверх Apache Spark. Spark ML включает алгоритмы и API-интерфейсы для контролируемых и неконтролируемых задач машинного обучения.

IBM Watson ML: Watson ML - это служба для развертывания моделей машинного обучения и прогнозирования во время выполнения. Watson ML предоставляет REST API для ваших моделей машинного обучения, который можно вызывать непосредственно из вашего приложения или промежуточного программного обеспечения.

Давайте посмотрим, как все эти инструменты работают вместе.

Рабочий процесс

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

  1. Создайте блокнот Jupyter и импортируйте, очищайте и анализируйте данные.
  2. Используйте Apache Spark ML для создания и тестирования модели машинного обучения.
  3. Разверните модель в Watson ML.
  4. Вызовите конечную точку скоринга Watson ML (REST API), чтобы делать прогнозы из клиентского приложения или серверной службы.

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

Следующие шаги

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