Меню

Сравнение алгоритмов машинного обучения



Как сравнить алгоритмы машинного обучения в Python с scikit-learn

Дата публикации 2016-06-01

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

В этом посте вы узнаете, как создать тестовую систему для сравнения нескольких различных алгоритмов машинного обучения в Python с scikit-learn.

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

  • Обновление март / 2018: Добавлена ​​альтернативная ссылка для загрузки набора данных, так как кажется, что оригинал удален.

Выберите лучшую модель машинного обучения

Как вы выбираете лучшую модель для вашей проблемы?

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

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

Тщательно сравнивайте модели машинного обучения

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

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

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

В следующем разделе вы узнаете, как именно это можно сделать в Python с помощью scikit-learn.

Сравнивать алгоритмы машинного обучения последовательно

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

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

В приведенном ниже примере сравниваются 6 разных алгоритмов:

  1. Логистическая регрессия
  2. Линейный Дискриминантный Анализ
  3. K-Ближайшие соседи
  4. Деревья классификации и регрессии
  5. Наивный байесовский
  6. Опорные векторные машины

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

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

Каждому алгоритму присваивается краткое имя, которое полезно для подведения итогов.

Выполнение примера предоставляет список короткого имени каждого алгоритма, средней точности и точности стандартного отклонения.

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

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

Резюме

В этом посте вы узнали, как оценить несколько различных алгоритмов машинного обучения для набора данных в Python с помощью scikit-learn.

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

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

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

Источник

Сравнительный анализ алгоритмов машинного обучения

Дата публикации Oct 3, 2019

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

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

Что такое контролируемое машинное обучение?

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

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

В контролируемом обучении используется алгоритм для изучения функции отображения из входной переменной (x) в выходную переменную (y); то есть y = f (X).

Задача такой проблемы состоит в том, чтобы максимально точно аппроксимировать функцию отображения (f) так, чтобы при появлении новых входных данных (x) можно было прогнозировать выходную переменную (y) для набора данных.

Контролируемое обучение может быть далее разделено на 2 категории: регрессия и классификация

Читайте также:  Этот linux сравним с windows

регрессия

В машинном обучении регрессионные алгоритмы пытаются оценить функцию отображения (f) от входных переменных (x) до числовых или непрерывных выходных переменных (y).

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

классификация

С другой стороны, алгоритмы классификации пытаются оценить функцию отображения (f) из входных переменных (x) в дискретные или категориальные выходные переменные (y).

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

Регрессия против Классификации

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

Что такое обучение без учителя?

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

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

Сегодня я сосредоточусь на проблеме регрессии (контролируемое обучение).

Набор данных, который я выбрал, можно скачать сВот

О наборе данных

База данных была создана с записями поведения городского движения города Сан-Паулу в Бразилии с 14 декабря 2009 года по 18 декабря 2009 года (с понедельника по пятницу). Регистрируется с 7:00 до 20:00 каждые 30 минут.

Импорт библиотек

Предложение: пакеты установки pip (в случае возникновения ошибки)

Источник

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

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

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

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

Старт 10 февраля, 3 месяца, Онлайн, Беcплатно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Sony alpha slt a37 сравнение

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

Логистическая функция выглядит как большая буква 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 не скажет, какой алгоритм будет работать лучше, прежде чем попробует несколько вариантов. Существует множество других алгоритмов машинного обучения, но приведённые выше — наиболее популярные. Если вы только знакомитесь с машинным обучением, то они будут хорошей отправной точкой.

Источник