Обучение без учителя (unsupervised learning) подразумевает, что в данных есть закономерность, но вы не знаете какая (нет зависимой переменной). Это может быть задача разделения датасета на кластеры (кластерный анализ), поиск аномалий, автоэнкодеры (например, для уменьшения размерности пространства фич), метод главных компонент (Principal Component Analysis), коллаборативная фильтрация (рекомендательные системы).
Обучение с подкреплением (reinforcement learning) – модель учится через взаимодействие со средой. Это частный случай модели с учителем, где учителем является не датасет, а реакция среды на какое-то действие, которое мы произвели. Часто применяется при разработке ботов для игр (не только стрелялки, но и шахматы), управлении роботами. В отличие от классического машинного обучения, датасета здесь нет. Агент (например, робот) производит какое-либо действие в среде, получает обратную связь, которая транслируется в награду (reward). Агент учится совершать такие действия, которые максимизируют его награду. Так, например, можно научить робота ходить или играть в шахматы.
Для каждого типа задач классического ML есть соответствующий алгоритм. Например шпаргалка (cheat sheet, рис. 8.2) (https://topdatalab.ru/ref?link=117) для очень популярной библиотеки scikit learn выглядит так:
Рис. 8.2.Шпаргалка методов ML (https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html)
В зависимости от задачи и данных, предлагается вариант модели, которая, скорее всего, будет успешной. Именно с этой библиотеки я начал свое изучение ML-моделей в Python, когда участвовал в соревнованиях на Kaggle.
Если в данных есть неслучайная закономерность, выбрана соответствующая задаче модель и есть достаточный набор данных, то обучение ML-модели не выглядит чем-то сложным. Самый первый шаг – понять, как измерить эффективность модели. Это очень важно: если мы делаем модель, которая будет помогать в реальной жизни, у нее должно быть четкое определение цели. А цель уже выражается метрикой. Например, если нужно, чтобы она прогнозировала спрос на товары, то цель – уменьшить процент расхождения с реальностью (ошибка прогноза). Если по фотографии нужно определить, есть ли там изображение собаки, то цель – увеличить процент правильно угаданных фотографий. В любых задачах на Kaggle есть метрика, по которой выбирают победителя.
Этот шаг новички – и не только они – часто игнорируют или выполняют невнимательно. По опыту работы в Retail Rocket скажу, что ошибка в выборе правильной метрики может стоить очень дорого. Это фундамент всего ML. Сделать это не так просто, как кажется на первый взгляд. К примеру, есть несколько систем тестирования COVID-19 через мазок из горла. Одна из них дает больше ложноположительных результатов (больной на самом деле не болен), вторая – больше ложноотрицательных (пропускает больных, которые заразны). Какую систему выбрать? Если первую, то вы запрете дома много здоровых людей, это повлияет на экономику. Если вторую – то пропущенные больные будут распространять вирус. Такой выбор – это баланс плюсов и минусов. Аналогичные проблемы есть в разработке систем рекомендаций: пусть первый алгоритм выдает более логичные с точки зрения пользователя рекомендации, а второй дает магазину больший доход. (Это означает, что машина обучалась на слабых, но важных сигналах, которые кажутся нам нелогичными, и ее рекомендации приводят к росту продаж, хотя это и невозможно объяснить логикой в силу ограниченности человеческого ума.) Какой алгоритм выбрать? С точки зрения бизнеса – второй, но когда такую систему продают и показывают менеджерам, принимающим решение о покупке, им часто нравится первый вариант. Их можно понять, ведь сайт – это витрина, и она должна выглядеть привлекательно. В итоге приходится трансформировать работающий первый алгоритм, стараясь зафиксировать высокие финансовые показатели, но сделать так, чтобы рекомендации выглядели более логично. Фокус на нескольких метриках сильно усложняет разработку новых алгоритмов.
Любая метрика считается как разность между тем, что прогнозирует модель по входным данным (независимые переменные, или фичи), и тем, что есть на самом деле (зависимая переменная, или outcome). Существует много нюансов расчета метрик, но суть всегда именно в этой разнице. Типовые метрики ML-задач зависят от их класса.
Для регрессии – это среднеквадратичная ошибка (Mean Squared Error, MSE). Считается как сумма квадратов разностей прогнозируемого и действительного значений из датасета, деленное на число примеров в датасете:
Читать дальше
Конец ознакомительного отрывка
Купить книгу