Разное

Машинное обучение алгоритмы: Гид: алгоритмы машинного обучения и их типы

Содержание

Гид: алгоритмы машинного обучения и их типы

Обучение с учителем

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

К категории обучения с учителем относятся классификация, регрессия и прогнозирование.

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

Обучение с частичным привлечением учителя

Обучение с частичным привлечением учителя похоже на обучение с учителем, однако использует как размеченные, так и неразмеченные данные. Размеченные данные – это, по сути, наборы единиц информации с приписанными им метками (тегами). В неразмеченных данных таких меток нет. Комбинируя методы обучения, алгоритмы могут обучаться размечать неразмеченные данные.

Обучение без учителя

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

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

Методы обучения без учителя включают в себя:

  1. Кластеризация: Кластеризация предполагает группирование наборов похожих данных (на основе определенных критериев). Это полезно для сегментации данных на несколько групп и проведении анализа на основе каждого набора данных по отдельности для поиска закономерностей.
  2. Понижение размерности: Понижение размерности уменьшает количество используемых переменных и отделяет точную искомую информацию.

Обучение с подкреплением

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

Обзор самых популярных алгоритмов машинного обучения

Существует такое понятие, как «No Free Lunch» теорема. Её суть заключается в том, что нет такого алгоритма, который был бы лучшим выбором для каждой задачи, что в особенности касается обучения с учителем.

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

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

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

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

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

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

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

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

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

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

Например: Y = B0 + B1 * X

Зная X, мы должны найти Y, и цель линейной регрессии заключается в поиске значений коэффициентов B0 и B1.

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

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

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

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

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

Логистическая функция выглядит как большая буква S и преобразовывает любое значение в число в пределах от 0 до 1. Это весьма полезно, так как мы можем применить правило к выходу логистической функции для привязки к 0 и 1 (например, если результат функции меньше 0.5, то на выходе получаем 1) и предсказания класса.

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

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

3. Линейный дискриминантный анализ (LDA)

Логистическая регрессия используется, когда нужно отнести образец к одному из двух классов. Если классов больше, чем два, то лучше использовать алгоритм LDA (Linear discriminant analysis).

Представление LDA довольно простое. Оно состоит из статистических свойств данных, рассчитанных для каждого класса. Для каждой входной переменной это включает:

  • Среднее значение для каждого класса;
  • Дисперсию, рассчитанную по всем классам.

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

4.  Деревья принятия решений

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

Листовые узлы — это выходная переменная, которая используется для предсказания. Предсказания производятся путём прохода по дереву к листовому узлу и вывода значения класса на этом узле.

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

5 . Наивный Байесовский классификатор

Наивный Байес — простой, но удивительно эффективный алгоритм.

Модель состоит из двух типов вероятностей, которые рассчитываются с помощью тренировочных данных:

  1. Вероятность каждого класса.
  2. Условная вероятность для каждого класса при каждом значении x.

После расчёта вероятностной модели её можно использовать для предсказания с новыми данными при помощи теоремы Байеса. Если у вас вещественные данные, то, предполагая нормальное распределение, рассчитать эти вероятности не составляет особой сложности.

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

6.  K-ближайших соседей (KNN)

К-ближайших соседей — очень простой и очень эффективный алгоритм. Модель KNN (K-nearest neighbors) представлена всем набором тренировочных данных. Довольно просто, не так ли?

Предсказание для новой точки делается путём поиска K ближайших соседей в наборе данных и суммирования выходной переменной для этих K экземпляров.

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

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

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

7 .  Сети векторного квантования (LVQ)

Недостаток KNN заключается в том, что нужно хранить весь тренировочный набор данных. Если KNN хорошо себя показал, то есть смысл попробовать алгоритм LVQ (Learning vector quantization), который лишён этого недостатка.

LVQ представляет собой набор кодовых векторов. Они выбираются в начале случайным образом и в течение определённого количества итераций адаптируются так, чтобы наилучшим образом обобщить весь набор данных. После обучения эти вектора могут использоваться для предсказания так же, как это делается в KNN. Алгоритм ищет ближайшего соседа (наиболее подходящий кодовый вектор) путём вычисления расстояния между каждым кодовым вектором и новым экземпляром данных. Затем для наиболее подходящего вектора в качестве предсказания возвращается класс (или число в случае регрессии). Лучшего результата можно достичь, если все данные будут находиться в одном диапазоне, например от 0 до 1.

8. Метод опорных векторов (SVM)

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

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

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

Метод опорных векторов, наверное, один из самых эффективных классических классификаторов, на который определённо стоит обратить внимание.

9 .  Бэггинг и случайный лес

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

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

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

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

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

10 .  Бустинг и AdaBoost

Бустинг — это семейство ансамблевых алгоритмов, суть которых заключается в создании сильного классификатора на основе нескольких слабых. Для этого сначала создаётся одна модель, затем другая модель, которая пытается исправить ошибки в первой. Модели добавляются до тех пор, пока тренировочные данные не будут идеально предсказываться или пока не будет превышено максимальное количество моделей.

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

AdaBoost используют вместе с короткими деревьями решений. После создания первого дерева проверяется его эффективность на каждом тренировочном объекте, чтобы понять, сколько внимания должно уделить следующее дерево всем объектам. Тем данным, которые сложно предсказать, даётся больший вес, а тем, которые легко предсказать, — меньший. Модели создаются последовательно одна за другой, и каждая из них обновляет веса для следующего дерева. После построения всех деревьев делаются предсказания для новых данных, и эффективность каждого дерева определяется тем, насколько точным оно было на тренировочных данных.

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

Пара слов напоследок

Когда новички видят всё разнообразие алгоритмов, они задаются стандартным вопросом: «А какой следует использовать мне?» Ответ на этот вопрос зависит от множества факторов:

  • Размер, качество и характер данных;
  • Доступное вычислительное время;
  • Срочность задачи;
  • Что вы хотите делать с данными.

Даже опытный data scientist не скажет, какой алгоритм будет работать лучше, прежде чем попробует несколько вариантов. Существует множество других алгоритмов машинного обучения, но приведённые выше — наиболее популярные. Если вы только знакомитесь с машинным обучением, то они будут хорошей отправной точкой.

Перевод статьи «A Tour of The Top 10 Algorithms for Machine Learning Newbies»

Must-have алгоритмы машинного обучения / Хабр

Хабр, привет.

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

Метод главных компонент (PCA)/SVD

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

SVD — это способ вычисления упорядоченных компонентов.

Полезные ссылки:

Вводный гайд:

Метод наименьших квадратов

Метод наименьших квадратов — математический метод, применяемый для решения различных задач, основанный на минимизации суммы квадратов отклонений некоторых функций от искомых переменных. Он может использоваться для «решения» переопределенных систем уравнений (когда количество уравнений превышает количество неизвестных), для поиска решения в случае обычных (не переопределенных) нелинейных систем уравнений, а также для аппроксимации точечных значений некоторой функции.

Используйте этот алгоритм, чтобы соответствовать простым кривым/регрессии.

Полезные ссылки:

Вводный гайд:

Ограниченная линейная регрессия

Метод наименьших квадратов может смутить выбросами, ложными полями и т. д. Нужны ограничения, чтобы уменьшить дисперсию линии, которую мы помещаем в набор данных. Правильное решение состоит в том, чтобы соответствовать модели линейной регрессии, которая гарантирует, что веса не будут вести себя “плохо”. Модели могут иметь норму L1 (LASSO) или L2 (Ridge Regression) или обе (elastic regression).

Используйте этот алгоритм для соответствия линиям регрессии с ограничениями, избегая переопределения.

Полезная ссылка:

Вводные гайды:

Метод k-средних

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

Полезная ссылка:

Вводные гайды:

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

Логистическая регрессия ограничена линейной регрессией с нелинейностью (в основном используется сигмоидальная функция или tanh) после применения весов, следовательно, ограничение выходов приближено к + / — классам (что равно 1 и 0 в случае сигмоида). Функции кросс-энтропийной потери оптимизированы с использованием метода градиентного спуска.

Примечание для начинающих: логистическая регрессия используется для классификации, а не регрессии. В целом, она схожа с однослойной нейронной сетью. Обучается с использованием методов оптимизации, таких как градиентный спуск или L-BFGS. NLP-разработчики часто используют её, называя “классификацией методом максимальной энтропии”.

Используйте LR для обучения простых, но очень “крепких” классификаторов.

Полезная ссылка:

Вводный гайд:

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

SVM – линейная модель, такая как линейная/логистическая регрессия. Разница в том, что она имеет margin-based функцию потерь. Вы можете оптимизировать функцию потерь, используя методы оптимизации, например, L-BFGS или SGD.

Одна уникальная вещь, которую могут выполнять SVM – это изучение классификаторов классов.

SVM может использоваться для обучения классификаторов (даже регрессоров).

Полезная ссылка:

Вводные гайды:

Нейронные сети прямого распространения

В основном, это многоуровневые классификаторы логистической регрессии. Многие слои весов разделены нелинейностями (sigmoid, tanh, relu + softmax и cool new selu). Также они называются многослойными перцептронами. FFNN могут быть использованы для классификации и “обучения без учителя” в качестве автоэнкодеров.

FFNN можно использовать для обучения классификатора или извлечения функций в качестве автоэнкодеров.

Полезные ссылки:

Вводные гайды:

Свёрточные нейронные сети

Практически все современные достижения в области машинного обучения были достигнуты с помощью свёрточных нейронных сетей. Они используются для классификации изображений, обнаружения объектов или даже сегментации изображений. Изобретенные Яном Лекуном в начале 90-х годов, сети имеют сверточные слои, которые действуют как иерархические экстракторы объектов. Вы можете использовать их для работы с текстом (и даже для работы с графикой).

Полезные ссылки:

Вводные гайды:

Рекуррентные нейронные сети (RNNs)

RNNs моделируют последовательности, применяя один и тот же набор весов рекурсивно к состоянию агрегатора в момент времени t и вход в момент времени t. Чистые RNN редко используются сейчас, но его аналоги, например, LSTM и GRU являются самыми современными в большинстве задач моделирования последовательности. LSTM, который используется вместо простого плотного слоя в чистой RNN.

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

Полезные ссылки:

Вводные гайды:

Условные случайные поля (CRFs)

Они используются для моделирования последовательности, как RNN, и могут использоваться в сочетании с RNN. Они также могут быть использованы в других задачах структурированных прогнозирования, например, в сегментации изображения. CRF моделирует каждый элемент последовательности (допустим, предложение), таким образом, что соседи влияют на метку компонента в последовательности, а не на все метки, независимые друг от друга.

Используйте CRF для связки последовательностей (в тексте, изображении, временном ряду, ДНК и т. д.).

Полезная ссылка:

Вводные гайды:

Деревья принятия решений и случайные леса

Один из самых распространённых алгоритмов машинного обучения. Используется в статистике и анализе данных для прогнозных моделей. Структура представляет собой “листья” и “ветки”. На “ветках” дерева решения записаны атрибуты, от которых зависит целевая функция, в “листьях” записаны значения целевой функции, а в остальных узлах – атрибуты, по которым различаются случаи.

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

Полезные ссылки:

Вводные гайды:
Больше информации о машинном обучении и Data Science вы узнаете подписавшись на мой аккаунт на Хабре и Telegram-канал Нейрон. Не пропускайте будущих статей.

Всем знаний!

Алгоритмы машинного обучения | Microsoft Azure

Контролируемое обучение

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

Например, вы предоставляете набор данных, в котором указано население городов за последние 100 лет, и хотите узнать численность населения определенного города через четыре года. При получении результата используются метки, которые уже есть в наборе данных: население, город и год.

Неконтролируемое обучение

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

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

Обучение с подкреплением

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

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

Алгоритмы машинного обучения простым языком.

Часть 1 | by not eisenheim | NOP::Nuances of Programming

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

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

  • Градиентный спуск и линия наилучшего соответствия.
  • Линейная регрессия (включая регуляризацию).
  • Логистическая регрессия.

Прежде всего, давайте разберёмся, в чём разница между алгоритмом и моделью. Хорошее объяснение есть на Quora:

Модель — как автомат с едой, который получает что-то за вход (деньги) и выдаёт какие-то выходные значения (например, газировку)… Алгоритм — это то, как обучается модель принимать решение в зависимости от входных данных. Например, алгоритм на основе ценности денег, которыми вы расплатились в автомате, и стоимости выбранного продукта будет определять, достаточно ли денег для покупки и какую сдачу вы должны получить.

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

(Хоть первое и не считается алгоритмом машинного обучения, его понимание важно для понимания того, как происходит оптимизация алгоритмов)

И вот объяснения:

Суть градиентного спуска в том, что он позволяет нам найти самое точное предсказание на основе данных.

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

Наш выдуманный набор роста и веса (по-странному геометричный)

Теперь допустим, что проходит соревнование. Его суть заключается в том, что участникам нужно угадать вес человека по его росту. Угадавший получает денежный приз. Кроме того, чтобы оценивать вес человека на глаз, ты бы опиралась на набор данных о твоих знакомых, да?

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

Но как найти эту идеальную линию? Возможно, ты могла бы построить ее вручную, но это заняло бы кучу времени. Здесь и нужен градиентный спуск!

Линия наилучшего соответствия показана красным

Мы ищем эту линию при помощи минимизации так называемой “остаточной суммы квадратов”. Это просто сумма квадратов разности между значением нашей линии и точек, то есть то, насколько точки далеки от линии. Мы получаем всё меньшие значения суммы квадратов, меняя положение линии на графике: нам надо поместить нашу линию куда угодно, главное, чтобы она была как можно ближе к большинству точек.

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

Визуализация градиентного спуска (при помощи Matplotlib)

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

Всё просто: линейная регрессия — это то, как мы анализируем силу зависимости между одной переменной (“результирующая переменная”) и одной или несколькими другими переменными (“независимыми переменными”).

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

(Если ты не можешь построить график, то попробуй ответить на вопрос: изменение независимых переменных на определённую величину вызывает в результирующей переменной изменение на ту же величину? Если да, то данные линейно зависимы.)

Это чем-то напоминает то, что мы делали ранее, потому что линия наилучшего соответствия и есть “линия регрессии” в линейной регрессии. Линия показывает наилучшее линейное отношение между точками, что, в свою очередь, позволяет предсказывать.

Ещё одна важная деталь: результирующая переменная или то, что меняется с изменением наших других переменных, непрерывна. Что это значит?

Скажем, мы хотим измерить зависимость количества осадков от высоты над уровнем моря в штате Нью-Йорк. Тогда наша результирующая переменная — дождливость, независимая переменная — высота над уровнем моря. Если будем использовать линейную регрессию, то результирующую переменную нужно сформулировать как, например, “сколько дюймов осадков выпадает за определённое количество времени”, а не “дождливо/не дождливо”. Наша результирующая переменная должна быть непрерывной — значит она может быть любым числом (даже дробным).

Самое классное в линейной регрессии — это то, что она может предсказывать, используя линию наилучшего соответствия! Если мы запустим линейную регрессию на нашей задаче, мы можем найти эту линию, как и в градиентном спуске. Затем мы можем применять обученную модель для того, чтобы узнать количество осадков на определённой высоте.

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

Не секрет, что в мире 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) может вводить в ступор, поскольку он требует предварительных математических знаний в области условной вероятности и теоремы Байеса, но это очень простой алгоритм.

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

Таблица с категориальными данными

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

Сгруппированные данные

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

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

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

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

   

   

   

   

   

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

   

   

   

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

   

Поскольку

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

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

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

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

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

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

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

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

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

Случайные леса (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

Выбор алгоритма машинного обучения — Azure Machine Learning



Добавить комментарий

Ваш адрес email не будет опубликован.

2022 © Все права защищены. Карта сайта