Краткое справочное руководство по 5 распространенным алгоритмам

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

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

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

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

Это будет включать краткое введение в линейную регрессию, логистическую регрессию, случайный лес, XGBoost и K-means. Для каждого алгоритма я расскажу следующее:

  1. Как работает алгоритм.
  2. Пример реализации кода.
  3. Руководство по подходящим ситуациям для использования алгоритма.
  4. Преимущества и недостатки.

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

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

y = a + bX

Где y — зависимая переменная, X — независимая переменная, b — наклон линии и a — это перехват.

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

Пример кода

Когда его следует использовать?

  • Линейную регрессию можно использовать только для решения проблем, основанных на регрессии.
  • Между зависимой и независимой переменными должна быть линейная зависимость.
  • Остатки должны образовывать нормальное распределение.
  • Между признаками не должно быть корреляции.
  • Алгоритм предполагает, что обучающие данные выбираются случайным образом.
  • Лучше всего подходит для задач на основе регрессии, где отношения в данных являются линейными и простыми.

Преимущества

  • Легко интерпретируется и быстро обучается.
  • Очень хорошо работает с линейно разделимыми данными.

Недостатки

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

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

Логистическая регрессия — это, по сути, линейная регрессия, адаптированная для решения задачи классификации. Вместо подгонки прямой линии логистическая регрессия применяет логистическую функцию, чтобы сжать результат линейного уравнения между 0 и 1. В результате получается S-образная кривая, а не прямая линия, проходящая через точки данных, показанные на диаграмме ниже.

Для разделения классов выбирается порог от 0 до 1, обычно это 0,5. По сути, мы проводим горизонтальную линию через кривую S на уровне 0,5. Любые точки данных выше этой линии относятся к классу 1, а ниже — к классу 0.

Пример кода

Когда его следует использовать?

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

Преимущества

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

Недостатки

  • Склонен к переоснащению.
  • Как и в случае линейной регрессии, она плохо моделирует сложные отношения.

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

Алгоритм случайного леса строит «лес» из деревьев решений. Каждое дерево в лесу генерирует прогноз на основе заданного набора признаков. После того, как все прогнозы сгенерированы, проводится большинство голосов, и наиболее часто прогнозируемый класс формирует окончательный прогноз.

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

Алгоритм Random Forest следует следующей последовательности шагов:

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

Пример кода

Когда его следует использовать?

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

Преимущества

  • Он может моделировать как линейные, так и нелинейные отношения.
  • Он не чувствителен к выбросам.
  • Random Forest может хорошо работать с наборами данных, содержащими недостающие данные.

Недостатки

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

4. XGBoost

XGBoost — это алгоритм, основанный на деревьях решений с градиентным усилением. Он похож на случайный лес тем, что строит ансамбль деревьев решений, но вместо параллельного обучения моделей XGBoost обучает модели последовательно. Каждое дерево решений учится на ошибках, допущенных предыдущей моделью. Этот метод последовательного обучения моделей известен как бустинг.

Градиент в XGBoost относится к определенному типу повышения, при котором используются слабые ученики. Слабые ученики — это очень простые модели, которые работают лишь лучше, чем случайный случай. Алгоритм начинается с начального слабого ученика. Каждая последующая модель нацелена на ошибки, порожденные предыдущим деревом решений. Это продолжается до тех пор, пока дальнейшие улучшения не могут быть сделаны, и в результате получается окончательная модель сильного ученика.

Пример кода

Когда его следует использовать?

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

Преимущества

  • XGboost очень гибок в том смысле, что он одинаково хорошо работает как с небольшими, так и с большими наборами данных.
  • Это вычислительно эффективно и, следовательно, быстрее обучает модели по сравнению с другими сложными алгоритмами.

Недостатки

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

5. К означает

K-means — это один из самых популярных алгоритмов кластеризации, формы машинного обучения без учителя, целью которого является поиск групп похожих примеров в обучающем наборе данных.

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

Пример кода

Когда его следует использовать?

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

Преимущества

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

Недостатки

  • K-средние чувствительны к выбросам.
  • Этот алгоритм не находит оптимальное количество кластеров. Это должно быть определено другими методами до реализации.
  • Результаты кластеризации не совпадают. Если K-means запускать набор данных несколько раз, он может каждый раз давать разные результаты.

Алгоритмы, описанные в этой статье, являются одними из наиболее широко используемых для машинного обучения. Доступно гораздо больше алгоритмов, каждый из которых по-своему подходит для конкретных задач. Как упоминалось в начале этой статьи, в настоящее время не существует единого алгоритма, который мог бы решить все проблемы, хотя XGBoost наиболее близок к нему для решения проблем со структурированными данными.

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

  • Линейная регрессия. Лучше всего подходит для решения задач, основанных на регрессии, для наборов данных, где присутствует линейная зависимость, и связь относительно упрощена.
  • Логистическая регрессия. Лучше всего подходит для решения задач классификации, когда данные линейно разделимы, а размерность набора данных низкая.
  • Случайный лес: лучше всего подходит для больших многомерных наборов данных со сложными отношениями.
  • XGBoost: подходит для широкого спектра структурированных наборов данных и задач. Вычислительно более эффективен по сравнению со случайным лесом.
  • К-средних: лучше всего подходит для решения проблем неконтролируемой кластеризации.

Спасибо за прочтение!

Благодарности

Набор данных iris использовался для создания диаграммы дерева решений, представленной в этой статье:Этот набор данных использовался в R.A. Классическая статья Фишера 1936 года Использование множественных измерений в таксономических задачах. Он используется под лицензией CCO 1.0 Universal (CCO 1).