виды алгоритмов машинного обучения
5 типов алгоритмов машинного обучения, которые нужно знать
Dec 29, 2020 · 5 min read
Машинное обучение — один из самых известных и важных подразделов науки о данных. В 1959 году исследователь компании IBM Артур Самюэл впервые ввёл термин машинное обучение. После этого сфера МО вызвала большой интерес у других учёных, в особенности из-за того, что она применялась в классификациях.
Как правило, первый подраздел, с которого начинается изучение науки о данных, — это машинное обучение. Этот термин описывает набор компьютерных алгоритмов, которые способны обучаться и улучшаться, собирая информацию в процессе работы.
Для создания алгоритма м а шинного обучения нужен набор данных. Изначально в него помещают тренировочные данные, которые предоставляют примеры решения определённых проблем. Как только алгоритм пройдёт этот этап обучения, он сможет применить полученные знания, чтобы решать схожие проблемы, основываясь на разных наборах данных.
Обычно алгоритмы машинного обучения разделяют на 4 категории.
1. Контролируемое обучение. Обучение алгоритмов контролируется разработчиком в процессе работы. Для этого он маркирует данные и устанавливает правила и границы, которым должен следовать алгоритм.
2. Обучение без учителя. Обучение алгоритмов не предполагает участие разработчика. В этом случае желаемые результаты неизвестны и определяются самим алгоритмом.
3. Полу-контролируемое обучение. Обучение алгоритма сочетает принципы как контролируемого, так и обучения без учителя. Например, при подготовке алгоритма маркируется только часть тренировочных данных и предоставляются лишь некоторые правила.
4. Обучение с подкреплением. В этом типе алгоритма применяется техника исследование/освоение. Его работа проста: машина совершает действие, анализирует результаты, а затем опирается на них при выполнении следующего действия.
Каждая из этих категорий предназначена для определённой задачи. Например, контролируемое обучение используется, чтобы масштабировать тренировочные данные, а затем прогнозировать значения на их основе или создавать новые наборы. В то же время с помощью обучения без учителя данные сортируют и фильтруют, чтобы разобраться в них.
В основе каждой из этих категорий лежат разнообразные алгоритмы, составленные для выполнения определённых задач. В этой статье мы разберём 5 алгоритмов, которые должен знать каждый специалист по обработке данных.
№1: Регрессия
Алгоритмы регрессии — это алгоритмы контролируемого обучения, которые используются для поиска возможных отношений между разными переменными, чтобы понять степень влияния независимой переменной на зависимую.
Та же логика применяется и для более сложных и трудных задач. Чтобы облегчить нахождение решений, существует множество типов регрессионных алгоритмов. Самые распространённые среди них:
1. Линейная регрессия. Это самый простой метод регрессии. В нём используется линейный подход для моделирования отношений между зависимой (предсказанная) и независимой (предсказывающая) переменной.
2. Логистическая регрессия. В этом типе применяется бинарная зависимая переменная. Он активно используется в анализе категориальных данных.
3. Гребневая регрессия. Если регрессионная модель оказывается слишком сложной, гребневая регрессия корректирует коэффициент модели.
4. Регрессия Лассо (LASSO). Регрессия LASSO (О ператор наименьшей абсолютной укладки и выбора) используется для отбора и регуляризации переменных.
5. Полиноминальная регрессия. Этот тип алгоритма подходит для нелинейных данных. Прямая линия не может охватить все точки данных, поэтому лучшие прогнозы строятся с помощью кривой.
№ 2: Классификация
Классификация в машинном обучении — это процесс группирования объектов по категориям на основе предварительно классифицированного тренировочного набора данных.
Классификация относится к алгоритмам контролируемого обучения. В них используется категоризация тренировочных данных, чтобы рассчитать, с какой вероятностью новый объект попадёт в одну из заданных категорий. Известный всем пример алгоритмов классификации — это сортировка входящих электронных писем как спам или не спам.
Есть разные типы алгоритмов классификации. Рассмотрим 4 лучших:
1. К-ближайших соседей(KNN). Это алгоритм, в котором используются тренировочные наборы данных для поиска k ближайших точек в определённом наборе.
2. Дерево решений. Его можно представить в виде блок-схемы, где каждые точки данных по очереди разбиваются на два подмножества, а затем каждое из них разбивается ещё на два и так далее.
3. Наивный Байес. С помощью теоремы условной вероятности алгоритм вычисляет шанс, с которым объект попадёт в определённую категорию.
4. Метод опорных векторов. В этом алгоритме данные классифицируются согласно их степени полярности, которая может выходить за пределы X/Y прогнозирования.
№3: Ансамблирование
Ансамбли — это контролируемые алгоритмы обучения, которые комбинируют прогнозы из двух и более алгоритмов машинного обучения для построения более точных результатов. Результаты можно комбинировать с помощью голосования или усреднения. Первое зачастую применяется в классификации, а второе — в регрессии.
Существует 3 основных типа ансамблевых алгоритмов:
1. Бэггинг. Алгоритмы обучаются и работают параллельно на разных тренировочных наборах одного размера. Затем все они тестируются на одном наборе данных, а конечный результат определяется с помощью голосования.
2. Бустинг. В этом типе алгоритмы обучаются последовательно, а конечный результат отбирается с помощью голосования с весами.
3. Стекинг (наложение). Исходя из названия, этот подход состоит из двух уровней, расположенных друг на друге. Базовый представляет собой комбинацию алгоритмов, а верхний — мета-алгоритмы, основанные на базовом уровне.
№4: Кластеризация
Алгоритмы кластеризации относятся к методу обучения без учителя и применяются для группировки точек данных. Точки в одном кластере больше схожи между собой, чем те, что находятся в разных.
Алгоритмы кластеризации делятся на 4 типа:
1. Кластерный центроид. Он объединяет данные в кластеры, основываясь на заранее заданных условиях и характеристиках. k-средних — наиболее популярный алгоритм из этой категории.
2. Кластеризация на основе плотности. В этом типе используется алгоритм, который соединяет области с высокой плотностью в кластеры, создавая распределения произвольной формы.
3. Кластеризация на основе распределений. Алгоритм этого типа предполагает гауссовские распределения данных, которые далее объединяются в различные варианты того же распределения.
4. Иерархические алгоритмы. В этом алгоритме строится иерархическая древо кластеров. Количество кластеров можно менять, объединяя их на определённом уровне древа.
№5: Поиск ассоциативных правил
Ассоциативные алгоритмы относятся к обучению без учителя и определяют вероятность того, что несколько предметов окажутся вместе в определённом наборе данных. В основном они используются при анализе рыночной корзины.
Самый распространённый среди них — алгоритм добычи данных Apriori. Обычно он применяется в транзакционных базах данных. С его помощью можно найти часто встречающиеся наборы элементов, а затем сформировать из них определённые ассоциативные правила.
Например, если человек покупает молоко и хлеб, то, скорее всего, он также возьмёт яйца. Такие прогнозы строятся исходя из предыдущих покупок разных посетителей. После чего создаются ассоциативные правила в соответствии с конкретным показателем доверенности, который определяется алгоритмом на основе того, как часто встречаются эти товары вместе.
Заключительные мысли
Машинное обучение — это один самых популярных и тщательно исследованных подразделов науки о данных. Чтобы достичь еще большей точности и быстрого выполнения, постоянно разрабатываются новые алгоритмы.
Как правило, машинное обучение можно разделить на 4 категории: контролируемое обучение, обучение без учителя, полу-контролируемое обучение и обучение с подкреплением. Каждая из них содержит множество алгоритмов, предназначенных для разных задач.
В этой статье я рассказал про 5 типов контролируемых и неконтролируемых алгоритмов обучения, которые нужно знать каждому новичку в машинном обучении. Они хорошо изучены и широко применяются, поэтому вам не нужно разбираться в том, как их внедрять, а лишь понять, как ими пользоваться. Более того, в самых популярных инструментах Python для машинного обучения, например Scikit Learn, уже установлена большая часть этих алгоритмов.
Итак, мой совет таков: разберитесь в технике, освойте применение и начинайте строить.
Гид: алгоритмы машинного обучения и их типы
Каковы типы алгоритмов машинного обучения и когда их использовать
Автор: Катрина Уэйкфилд (Katrina Wakefield), маркетинг, SAS Великобритания
Термины «Машинное обучение» и «Искусственный интеллект» часто путают между собой. На самом деле, машинное обучение входит в область искусственного интеллекта. Ещё машинное обучение порой путают с прогнозной аналитикой (или предсказательным моделированием). И опять, машинное обучение может использоваться для предсказательного моделирования, но это всего лишь один из видов предиктивной аналитики, и его применение шире, чем предсказательное моделирование.
Термин «машинное обучение» ввел американский компьютерный ученый Артур Самуэль в 1959 году как «способность компьютера учиться, не будучи явным образом запрограммированным».
В своём самом простом виде машинное обучение использует запрограммированные алгоритмы, которые получают и анализируют входные данные, а затем прогнозируют выходные значения из допустимого диапазона. По мере поступления новых данных эти алгоритмы обучаются и оптимизируют свою деятельность, повышая производительность и со временем развивая «интеллект».
Существуют 4 типа алгоритмов машинного обучения: обучение с учителем, обучение с частичным привлечением учителя, обучение без учителя и обучение с подкреплением
Какой алгоритм машинного обучения следует использовать?
Эта памятка поможет из множества алгоритмов машинного обучения выбрать подходящий для ваших конкретных задач алгоритм, а статья в целом продемонстрирует, как пошагово пользоваться памяткой.
Обучение с учителем
При обучении с учителем машина обучается на примерах. Оператор обеспечивает алгоритм машинного обучения набором известных данных, который содержит необходимые входные и выходные значения. Алгоритм должен установить, как получаются по данным входам данные выходы. Сам оператор знает решение поставленной задачи; алгоритм выявляет закономерности в данных, учится на основе наблюдений и делает прогнозы. Эти прогнозы затем корректируются оператором. Процесс продолжается до тех пор, пока алгоритм не достигнет высокого уровня точности/производительности.
К категории обучения с учителем относятся классификация, регрессия и прогнозирование.
Обучение с частичным привлечением учителя
Обучение с частичным привлечением учителя похоже на обучение с учителем, однако использует как размеченные, так и неразмеченные данные. Размеченные данные – это, по сути, наборы единиц информации с приписанными им метками (тегами). В неразмеченных данных таких меток нет. Комбинируя методы обучения, алгоритмы могут обучаться размечать неразмеченные данные.
Обучение без учителя
В этом случае алгоритм машинного обучения изучает данные с целью выявления закономерностей (паттернов). Не существует справочника с ответами или оператора, который мог бы обучить машину. Напротив, программа сама определяет корреляции и связи на основе анализа доступных данных. При обучении без учителя алгоритму машинного обучения позволено самостоятельно интерпретировать большие наборы данных и делать на их основе выводы. Алгоритм пытается каким-либо образом упорядочить данные и описать их структуру. Это может выглядеть как группировка данных в кластеры или это такое упорядочивание данных, при котором они начинают выглядеть систематизировано.
По мере поступления данных для анализа растёт способность алгоритма принимать решения на основе этих данных, а также точность этих решений.
Методы обучения без учителя включают в себя:
Обучение с подкреплением
Фокус обучения с подкреплением делается на регламентированные процессы обучения, при которых алгоритм машинного обучения снабжен набором действий, параметров и конечных значений. Определив правила, алгоритм машинного обучения пытается изучить различные варианты и возможности, отслеживая и оценивая каждый раз результат, чтобы определить, какой из вариантов является оптимальным. Подкрепляемое обучение – это метод проб и ошибок для машины. Она учится на прошлом опыте и меняет свой подход, реагируя на новую ситуацию, пытаясь достичь наилучшего возможного результата.
Обзор самых популярных алгоритмов машинного обучения
Авторизуйтесь
Обзор самых популярных алгоритмов машинного обучения
Существует такое понятие, как «No Free Lunch» теорема. Её суть заключается в том, что нет такого алгоритма, который был бы лучшим выбором для каждой задачи, что в особенности касается обучения с учителем.
Например, нельзя сказать, что нейронные сети всегда работают лучше, чем деревья решений, и наоборот. На эффективность алгоритмов влияет множество факторов вроде размера и структуры набора данных.
По этой причине приходится пробовать много разных алгоритмов, проверяя эффективность каждого на тестовом наборе данных, и затем выбирать лучший вариант. Само собой, нужно выбирать среди алгоритмов, соответствующих вашей задаче. Если проводить аналогию, то при уборке дома вы, скорее всего, будете использовать пылесос, метлу или швабру, но никак не лопату.
Представляем вашему вниманию краткий обзор топ-10 популярных алгоритмов, используемых в машинном обучении.
1. Линейная регрессия
Линейная регрессия — пожалуй, один из наиболее известных и понятных алгоритмов в статистике и машинном обучении.
Прогностическое моделирование в первую очередь касается минимизации ошибки модели или, другими словами, как можно более точного прогнозирования. Мы будем заимствовать алгоритмы из разных областей, включая статистику, и использовать их в этих целях.
Например: Y = B0 + B1 * X
Для оценки регрессионной модели используются различные методы вроде линейной алгебры или метода наименьших квадратов.
Линейная регрессия существует уже более 200 лет, и за это время её успели тщательно изучить. Так что вот пара практических правил: уберите похожие (коррелирующие) переменные и избавьтесь от шума в данных, если это возможно. Линейная регрессия — быстрый и простой алгоритм, который хорошо подходит в качестве первого алгоритма для изучения.
Логистическая регрессия — ещё один алгоритм, пришедший в машинное обучение прямиком из статистики. Её хорошо использовать для задач бинарной классификации (это задачи, в которых на выходе мы получаем один из двух классов).
Логистическая регрессия похожа на линейную тем, что в ней тоже требуется найти значения коэффициентов для входных переменных. Разница заключается в том, что выходное значение преобразуется с помощью нелинейной или логистической функции.
Логистическая функция выглядит как большая буква S и преобразовывает любое значение в число в пределах от 0 до 1. Это весьма полезно, так как мы можем применить правило к выходу логистической функции для привязки к 0 и 1 (например, если результат функции меньше 0.5, то на выходе получаем 1) и предсказания класса.
Благодаря тому, как обучается модель, предсказания логистической регрессии можно использовать для отображения вероятности принадлежности образца к классу 0 или 1. Это полезно в тех случаях, когда нужно иметь больше обоснований для прогнозирования.
Как и в случае с линейной регрессией, логистическая регрессия выполняет свою задачу лучше, если убрать лишние и похожие переменные. Модель логистической регрессии быстро обучается и хорошо подходит для задач бинарной классификации.
3. Линейный дискриминантный анализ (LDA)
Логистическая регрессия используется, когда нужно отнести образец к одному из двух классов. Если классов больше, чем два, то лучше использовать алгоритм LDA (Linear discriminant analysis).
Представление LDA довольно простое. Оно состоит из статистических свойств данных, рассчитанных для каждого класса. Для каждой входной переменной это включает:
Предсказания производятся путём вычисления дискриминантного значения для каждого класса и выбора класса с наибольшим значением. Предполагается, что данные имеют нормальное распределение, поэтому перед началом работы рекомендуется удалить из данных аномальные значения. Это простой и эффективный алгоритм для задач классификации.
4. Деревья принятия решений
Дерево решений можно представить в виде двоичного дерева, знакомого многим по алгоритмам и структурам данных. Каждый узел представляет собой входную переменную и точку разделения для этой переменной (при условии, что переменная — число).
Листовые узлы — это выходная переменная, которая используется для предсказания. Предсказания производятся путём прохода по дереву к листовому узлу и вывода значения класса на этом узле.
Деревья быстро обучаются и делают предсказания. Кроме того, они точны для широкого круга задач и не требуют особой подготовки данных.
Наивный Байес — простой, но удивительно эффективный алгоритм.
Модель состоит из двух типов вероятностей, которые рассчитываются с помощью тренировочных данных:
После расчёта вероятностной модели её можно использовать для предсказания с новыми данными при помощи теоремы Байеса. Если у вас вещественные данные, то, предполагая нормальное распределение, рассчитать эти вероятности не составляет особой сложности.
Наивный Байес называется наивным, потому что алгоритм предполагает, что каждая входная переменная независимая. Это сильное предположение, которое не соответствует реальным данным. Тем не менее данный алгоритм весьма эффективен для целого ряда сложных задач вроде классификации спама или распознавания рукописных цифр.
6. K-ближайших соседей (KNN)
К-ближайших соседей — очень простой и очень эффективный алгоритм. Модель KNN (K-nearest neighbors) представлена всем набором тренировочных данных. Довольно просто, не так ли?
Предсказание для новой точки делается путём поиска K ближайших соседей в наборе данных и суммирования выходной переменной для этих K экземпляров.
Вопрос лишь в том, как определить сходство между экземплярами данных. Если все признаки имеют один и тот же масштаб (например, сантиметры), то самый простой способ заключается в использовании евклидова расстояния — числа, которое можно рассчитать на основе различий с каждой входной переменной.
KNN может потребовать много памяти для хранения всех данных, но зато быстро сделает предсказание. Также обучающие данные можно обновлять, чтобы предсказания оставались точными с течением времени.
Идея ближайших соседей может плохо работать с многомерными данными (множество входных переменных), что негативно скажется на эффективности алгоритма при решении задачи. Это называется проклятием размерности. Иными словами, стоит использовать лишь наиболее важные для предсказания переменные.
Недостаток KNN заключается в том, что нужно хранить весь тренировочный набор данных. Если KNN хорошо себя показал, то есть смысл попробовать алгоритм LVQ (Learning vector quantization), который лишён этого недостатка.
LVQ представляет собой набор кодовых векторов. Они выбираются в начале случайным образом и в течение определённого количества итераций адаптируются так, чтобы наилучшим образом обобщить весь набор данных. После обучения эти вектора могут использоваться для предсказания так же, как это делается в KNN. Алгоритм ищет ближайшего соседа (наиболее подходящий кодовый вектор) путём вычисления расстояния между каждым кодовым вектором и новым экземпляром данных. Затем для наиболее подходящего вектора в качестве предсказания возвращается класс (или число в случае регрессии). Лучшего результата можно достичь, если все данные будут находиться в одном диапазоне, например от 0 до 1.
8. Метод опорных векторов (SVM)
Метод опорных векторов, вероятно, один из наиболее популярных и обсуждаемых алгоритмов машинного обучения.
Гиперплоскость — это линия, разделяющая пространство входных переменных. В методе опорных векторов гиперплоскость выбирается так, чтобы наилучшим образом разделять точки в плоскости входных переменных по их классу: 0 или 1. В двумерной плоскости это можно представить как линию, которая полностью разделяет точки всех классов. Во время обучения алгоритм ищет коэффициенты, которые помогают лучше разделять классы гиперплоскостью.
Расстояние между гиперплоскостью и ближайшими точками данных называется разницей. Лучшая или оптимальная гиперплоскость, разделяющая два класса, — это линия с наибольшей разницей. Только эти точки имеют значение при определении гиперплоскости и при построении классификатора. Эти точки называются опорными векторами. Для определения значений коэффициентов, максимизирующих разницу, используются специальные алгоритмы оптимизации.
Метод опорных векторов, наверное, один из самых эффективных классических классификаторов, на который определённо стоит обратить внимание.
Случайный лес — очень популярный и эффективный алгоритм машинного обучения. Это разновидность ансамблевого алгоритма, называемого бэггингом.
Бутстрэп является эффективным статистическим методом для оценки какой-либо величины вроде среднего значения. Вы берёте множество подвыборок из ваших данных, считаете среднее значение для каждой, а затем усредняете результаты для получения лучшей оценки действительного среднего значения.
В бэггинге используется тот же подход, но для оценки всех статистических моделей чаще всего используются деревья решений. Тренировочные данные разбиваются на множество выборок, для каждой из которой создаётся модель. Когда нужно сделать предсказание, то его делает каждая модель, а затем предсказания усредняются, чтобы дать лучшую оценку выходному значению.
В алгоритме случайного леса для всех выборок из тренировочных данных строятся деревья решений. При построении деревьев для создания каждого узла выбираются случайные признаки. В отдельности полученные модели не очень точны, но при их объединении качество предсказания значительно улучшается.
Если алгоритм с высокой дисперсией, например, деревья решений, показывает хороший результат на ваших данных, то этот результат зачастую можно улучшить, применив бэггинг.
Бустинг — это семейство ансамблевых алгоритмов, суть которых заключается в создании сильного классификатора на основе нескольких слабых. Для этого сначала создаётся одна модель, затем другая модель, которая пытается исправить ошибки в первой. Модели добавляются до тех пор, пока тренировочные данные не будут идеально предсказываться или пока не будет превышено максимальное количество моделей.
AdaBoost был первым действительно успешным алгоритмом бустинга, разработанным для бинарной классификации. Именно с него лучше всего начинать знакомство с бустингом. Современные методы вроде стохастического градиентного бустинга основываются на AdaBoost.
AdaBoost используют вместе с короткими деревьями решений. После создания первого дерева проверяется его эффективность на каждом тренировочном объекте, чтобы понять, сколько внимания должно уделить следующее дерево всем объектам. Тем данным, которые сложно предсказать, даётся больший вес, а тем, которые легко предсказать, — меньший. Модели создаются последовательно одна за другой, и каждая из них обновляет веса для следующего дерева. После построения всех деревьев делаются предсказания для новых данных, и эффективность каждого дерева определяется тем, насколько точным оно было на тренировочных данных.
Так как в этом алгоритме большое внимание уделяется исправлению ошибок моделей, важно, чтобы в данных отсутствовали аномалии.
Пара слов напоследок
Когда новички видят всё разнообразие алгоритмов, они задаются стандартным вопросом: «А какой следует использовать мне?» Ответ на этот вопрос зависит от множества факторов:
Даже опытный data scientist не скажет, какой алгоритм будет работать лучше, прежде чем попробует несколько вариантов. Существует множество других алгоритмов машинного обучения, но приведённые выше — наиболее популярные. Если вы только знакомитесь с машинным обучением, то они будут хорошей отправной точкой.