10 алгоритмов машинного обучения, которые нужно знать в 2021

автор рубрика ,
10 алгоритмов машинного обучения, которые нужно знать в 2021

Не секрет, что в мире Data Science имеется огромное количество алгоритмов машинного обучения (Machine Learning). Но какие нужно знать и понимать хотя бы на концептуальном уровне. В этой статье мы расскажем о 10 передовых и актуальных алгоритмов машинного обучения и приведем краткую информацию о характеристиках, начиная с линейной регрессии, ансамблевых методов и заканчивая бустинговыми решениями.

Линейная регрессия

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

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

Алгоритм машинного обучения -линейная регрессия
Линейная регрессия (красная линия – линия наилучшего соответствия)

О линейной регрессии можно узнать тут.

Логистическая регрессия

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

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

Метод k-ближайших соседей

Метод k-ближайших соседей (k-nearest neighbors) — это очень простой алгоритм машинного обучения. Все начинается с данных, которые уже классифицированы (т.е. красные и синие точки данных). Затем при добавлении новых точек, алгоритм классифицируете её, просматривая k ближайших классифицированных точек. Какой класс наберёт больше всего голосов определяет, как будет классифицироваться новая точка.

График разделения классов
Метод k-ближайших соседей

Например, рассмотрим рисунок выше. Если мы определим k = 1, мы увидим, что первая ближайшая точка к серому образцу – это красный квадрат. Следовательно, точка будет классифицирована как красная. Хотя такой же результат будет и при k = 2.

Следует иметь в виду, что если значение k установлено слишком низким, оно может иметь выбросы. С другой стороны, если значение k установлено слишком высоким, то классы с несколькими выборками могут быть пропущены.

Наивный байесовский классификатор

Наивный байесовский классификатор (Naive Bayes classifier) может вводить в ступор, поскольку он требует предварительных математических знаний в области условной вероятности и теоремы Байеса, но это очень простой алгоритм.

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

Пример данных для использования наивного байесовского классификатора
Таблица с категориальными данными

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

Таблица с данные, сгруппированы по категориям, для Naive Bayes
Сгруппированные данные

В математических терминах это записывается как вероятность того, что человек шёл играть в гольф при каких-то условиях, и обозначается как P(yes|<условие>). Это нотация называется условной вероятностью. В алгоритме всего лишь нужно посчитать всевозможные условные вероятности.

Допустим, что имеются следующие характеристики:

  • Outlook: sunny
  • Temperature: mild
  • Humidity: normal
  • Windy: false

Нужно вычислить вероятность того, что вы человек пойдёт играть в гольф при этих погодных условиях, то есть рассчитать P(yes|X), а затем вероятность того, что человек не пойдёт играть P(no|X). Из таблицы выше мы знаем, что

    \[ P(yes)=9/14 \]

    \[ P(outlook=sunny|yes)=2/9 \]

    \[ P(temperature=mild|yes)=4/9 \]

    \[ P(humidity=normal|yes)=6/9 \]

    \[ P(windy=false|yes)=6/9 \]

Теперь мы можем просто посчитать условную вероятность

    \[ P(yes|X)=P(X|y)*P(y)=P(x_1|y)*P(x_2|y)*P(x_n|y)*P(y) \]

    \[ P(yes|X)=P(sunny|yes)*P(mild|yes)*P(normal|yes)*P(false|yes)*P(yes) \]

    \[ P(yes|X)=\frac{2}{9}*\frac{4}{9}*\frac{6}{9}*\frac{6}{9}*\frac{6}{9}=0.03 \]

Аналогично рассчитывается вероятность того, что человек не пойдёт (т.е. вместо yes будет no):

    \[ P(no|X)=0.0069 \]

Поскольку P(yes|X) > P(no|X), то наивный байесовский классификатор говорит, что этот человек пойдет играть в гольф, учитывая солнечную погоду, умеренную температуру, нормальную влажность и безветренность.

Метод опорных векторов

Метод опорных векторов (Support Vector Machine) применяется во многих задачах, и с математической точки зрения может быть сложным, но довольно интуитивно понятным на концептуальном уровне.

Гиперплоскость метода опорных векторов
Метод опорных векторов

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

Деревья решений

Деревья решений (Decision trees) – это непараметрический контролируемый метод обучения, используется для задачи классификации и регрессии. Цель состоит в том, чтобы создать модель, которая предсказывает значение целевой переменной, изучая простые правила принятия решений, выведенные из характеристик данных. Дерево можно рассматривать как кусочно-постоянное приближение. Концептуально деревья решений очень понятный алгоритм, что достаточно одной схемы, чтобы понять его принцип работы.

Схема алгоритма деревьев решений (decision trees)
Деревья решений

Случайный лес

Случайные леса (Random Forest) – это метод ансамблевого обучения, основанный на деревьях решений. Случайные леса включают создание нескольких деревьев решений с использованием самонастраиваемых наборов исходных данных и случайного выбора подмножества переменных на каждом шаге дерева решений. Затем модель собирает пакет прогнозов каждого дерева решений. Модель считает количество прогнозов «за» и «против» и выносит решение, исходя из большинства голосов.

Разбиение на деревья в случайном лесе (random forest)
Случайный лес

AdaBoost

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

  1. В AdaBoost используются деревья с одной вершиной и двумя узлами.
  2. Не все создаваемые деревья имеют право голоса для окончательном прогноза. Те, которые часто ошибались, будут меньше влиять на окончательное решение.
  3. Порядок расположения деревьев важен. Прогнозы дерева направлены на уменьшение ошибок, сделанных предыдущими.

Gradient Boost и XGBoost

Ещё один ансамблевый алгоритм Gradient Boost (градиентый бустинг) похож на AdaBoost, но у него есть несколько ключевых отличий:

  • Gradient Boost строит деревья до 32 узлов.
  • Gradient Boost рассматривает проблему оптимизации, где он использует функцию потерь и пытается минимизировать ошибку с помощью градиентного спуска.
  • Деревья используются для прогнозирования остатков (разница между предсказанными и реальными данными, т.е. ошибки).

Алгоритм Gradient Boost начинается с построения одного дерева, а последующие деревья нацелены на уменьшение остатков.

XGBoost – один из самых популярных и широко используемых алгоритмов, который основан на градиентном бустинге. К характеристикам XGBoost относятся:

  • Newton Boosting обеспечивает путь к глобальному минимуму быстрее, чем градиентный спуск
  • Дополнительный параметр рандомизации – уменьшает корреляцию между деревьями, в конечном итоге улучшая предсказательную силу

Вы можете ознакомиться с алгоритмом на странице с документацией библиотеки XGBoost (Python API также доступен), где также объясняется и Gradient Boost

LightGBM

Помимо XGBoost, есть ещё один ансамблевый алгоритм LightGBM. Что отличает LightGBM, так это то, что он использует метод, называемый односторонней выборкой на основе градиента (Gradient-based One-Side Sampling), чтобы отфильтровать данные и найти точку разделения между данными. Этим он отличается от XGBoost, который использует предварительно отсортированные и основанные на гистограммах алгоритмы для поиска лучшего разделения.

 

Еще больше подробностей о вышеприведённых алгоритмах машинного обучения, а также их применение для разных практических задач Data Science, включая задачи регрессии, классификации и кластеризации, вы узнаете на нашем специализированном курсе «PYML: Введение в машинное обучение на Python» в лицензированном учебном центре обучения и повышения квалификации Data Scientist’ов и IT-специалистов в Москве.

Источники
  1. https://xgboost.readthedocs.io/en/latest/python/index.html
Комментировать