Добрый день! В этом занятии мы поговорим о видах задач машинного обучения. Наиболее распространены следующие типы задач — это задачи классификации, задачи кластеризации, задачи регрессии для прогнозирования. И немного поговорим об ансамблях моделей. Классификация. Задача классификации состоит в том, что у вас есть какой-то известный набор объектов, уже разделенный на классы, и это есть ваша обучающая выборка. Требуется построить такой алгоритм, который способен классифицировать произвольный объект из вашего множества, то есть сопоставить его с известным уже классом. По сути, это обучение с учителем. Например, задача классификации — это распознавание индексов на конвертах, или более общая задача — распознавание символов (скажем, при сканировании книг или каких-то напечатанных или же рукописных текстов). Задачи классификации имеют огромное применение, но давайте посмотрим чуть подробнее, как они работают. Посмотрим на такой способ классификации, как дерево решений. Дерево решений состоит из узлов и состоит из листьев. Листья находятся в конце дерева решений, а узлы содержат в себе классификационные правила. Эти правила позволяют вам определять те или иные характеристики. Скажем, вы хотите определить кредитный рейтинг — высокий или низкий. И если возраст вашего заемщика от 30 до 40 лет, а доход высокий, то вы говорите, что кредитный рейтинг у него высокий. Если же у него возраст от 30 до 40, но доход не высокий, то кредитный рейтинг будет низким. И такая иерархия правил позволяет вам определять классы объектов и, соответственно, использовать это для вашего бизнеса. Другой способ классификации — использовать нейронную сеть. Нейронные сети представляют собой модели, имитирующие принципы работы головного мозга. А если говорить подробнее, то нейронная сеть состоит из простейших вычислительных элементов — это искусственные нейроны, и они связаны друг с другом. Каждый нейрон имеет несколько входных и одну выходную связь. Входные же связи имеют вес, на который умножается сигнал, который через нее приходит. Например, посмотрим на нейронную сеть, состоящую из нескольких слоев. Выделяют: входной слой — это первый слой, на который приходит сигнал; есть выходной слой — из которого выходят уже ответы; и все, что между ними — это скрытые слои. И если сеть этих нейронов содержит очень-очень много слоев, то говорят о том, что это глубокое машинное обучение (или так называемый Deep Learning). Давайте посмотрим, как выглядят результаты работы алгоритма дерева решений и нейронной сети. Даже визуально видно, что они работают по-разному. И обратите внимание на то, что результаты работы алгоритма дерева решений вы можете интерпретировать, поскольку вы знаете классификационные правила, а вот результаты работы нейронной сети интерпретируются уже намного хуже, иногда не интерпретируются вовсе. Собственно, как правило, не интерпретируются. Для того, чтобы посмотреть вживую, как могла бы работать нейронная сеть, зайдите на сайт playground.tensorflow.org и посмотрите на задачи классификации и регрессии. Там очень удобно можно настроить различные параметры и увидеть визуализацию работы простой нейронной сети. Другая задача — это задача кластеризации. Это задача разбиения множества объектов на группы, которые мы называем кластерами. Внутри каждой группы должны оказаться связанные, похожие друг на друга объекты, и объекты разных групп должны как можно сильнее отличаться друг от друга. Главное отличие кластеризации от классификации состоит в том, что перечень групп четко не задан, а определяется в процессе работы алгоритма, и, по сути, это обучение без учителя. Задача кластеризации используется для разных целей. Например, для построения гипотез, чтобы понять, насколько информативны свойства объектов — это может облегчить анализ данных, когда каждому кластеру проводится отдельный анализ. То есть вы разбили на много кластеров, и для каждого кластера используете какие-то свои (для этого кластера) методы. Можно также сжимать данные. Делается это очень просто — оставляем по одному представителю от каждого кластера, и у нас сразу же данных становится меньше, а вся выборка, тем не менее, представлена. И, конечно же, задача обнаружения аномалий — когда кластеры с малым числом объектов каким-то образом характеризуют какие-то процессы, которые могут оказаться нежелательными. Например, какие-то мошеннические действия могут выделиться в отдельный кластер, и вы увидите, что там какие-то есть, на уровне бизнеса, связанные вещи. Скажем, там встречаются одни и те же фамилии, одни и те же подписанты документов и так далее. Это может вам очень быстро помочь найти тех или иных нарушителей. Допустим, у нас есть магазин — розничная сеть, в которую приходит очень-очень много клиентов, и мы хотим понять, каким клиентам какие продукты продавать. Мы используем для этого как раз кластеризацию. То есть мы разбиваем нашу клиентскую базу на кластеры, и потом смотрим, к какому кластеру какие предложения лучше подходят. Другая задача — это задача регрессии. Собственно, нужно предсказать какое-то число в нашей задаче. Например, задача прогнозирования продаж. Посмотрим на имеющиеся данные: если представить, что зависимость между этими данными линейная, то вполне можно провести прямую линию через облако точек, и тогда нужное нам решение будет на этой прямой, а, собственно, параметр этой прямой — это есть угол наклона. Меняя угол наклона, мы будем смотреть, насколько хорошо и точно работает эта модель. Конечно, это самый простой способ, самая простая линейная регрессия, но так же могут быть и другие использованы функции для того, чтобы представить себе ту зависимость, которая есть между точками. Другой способ работы машинного обучения — это делать ансамбли моделей. Самый известный — это бустинг (от английского "boosting" — улучшение). Это процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. И в последние годы бустинг остается одним из наиболее популярных методов машинного обучения. Причины простые — это простота использования, универсальность и гибкость, потому что можно строить различные модификации, так как вы легко меняете модели, и главное — высокая обобщающая способность. Следующий способ — бэггинг. Это технология классификации, которая, в отличие от бустинга, строит все элементарные классификаторы работающими независимо, то есть они работают параллельно. И идея заключается в том, что классификаторы не исправляют ошибки друг друга, а компенсируют их при голосовании. Эти способы, собственно, позволяют сильно улучшить качество модели. Итак, сегодня мы поговорили о задачах классификации, задачах кластеризации, задачах прогнозирования и линейной регрессии, и несколько слов об ансамблях моделей, чтобы вы знали о том, как это работает. Спасибо!