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

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

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

Различные оценщики подходят для разных задач и работ.

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

Мы начинаем наш процесс с точки START.

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

Следующий шаг играет важную роль в выборе модели шрифта, которую мы будем использовать, например:
мы создаем категорию?
Если ДА, затем мы спросим себя:
есть ли у нас помеченные данные?

Если ДА, то мы знаем, что нам нужно использовать какой-то classification algorithm.

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

Есть ли у нас размер выборки более 100 тыс.?
Если ДА, то мы будем использовать: Классификатор SGD или >Приближение ядра

Классификатор СГД

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

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

Ниже приведена граница решения SGDClassifier, обученного с потерей шарнира, что эквивалентно линейному SVM.

Если классификатор SGD не работает, то-

Приближение ядра

Мы хотим быть экстравагантными в процессе отображения признаков. Конечно, это не так, поскольку это происходит за счет увеличения вычислительной сложности. Чтобы бороться с этим проклятием размерности, мы используем «трюк с ядром». Фактор «хитрости» заключается в том, что он смещает вычислительную зависимость от количества измерений к количеству точек данных (Хофманн).

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

Теперь мы вернемся и проверим:
Есть ли у нас размер выборки меньше 100 тыс.?
Если ДА, то

Линейный SVC

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

Преимущества метода опорных векторов:

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

Линейный SVC (классификация)

Подобно SVC с параметром kernel=’linear’, но реализованным в терминах liblinear, а не libsvm, он обладает большей гибкостью в выборе функций штрафов и потерь и должен лучше масштабироваться для большого количества выборок.

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

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

Теперь что, если Linear SVC не работает?
Тогда мы проверим, соответствуют ли наши данные text data ?

Если ДА, то мы будем использовать,

Наивный Байес

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

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

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

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

Что делать, если наши данные неtext data ?
тогда мы будем использовать-

KNeighboursClassifier

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

Классификация k-соседей в KNeighborsClassifier является наиболее часто используемой техникой. Оптимальный выбор значения k сильно зависит от данных: как правило, большее значение k подавляет влияние шума, но делает границы классификации менее четкими.

Если KNeighborsClassifier не работает, мы будем использовать SVC или Ensemble Classifiers.

СВК

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

SVC реализует подход «один против одного» для многоклассовой классификации.

Метод «функция решения» SVC дает оценки для каждого класса для каждой выборки (или одну оценку для выборки в бинарном случае).

Классификаторы ансамбля

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

Обычно выделяют два семейства ансамблевых методов:

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

Теперь, возвращаясь к началу. Вопрос был-

Производим ли мы категорию?
Если НЕТ, то мы спросим себя:
Производим ли мы количество?

Если ДА, то мы знаем, что нам нужно использовать какой-то regression algorithm.

Есть ли у нас размер выборки менее 100 тыс.?
Если НЕТ, то мы будем использовать:

SGDRegressor

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

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

Теперь размер выборки меньше 100 тыс.?
Если ДА, то

Несколько функций должны быть важны?
Если ДА, то мы будем использовать Lasso или ElasticNet.

Лассо

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

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

Эластичная сеть

ElasticNet — это модель линейной регрессии, обученная с регуляризацией коэффициентов по нормам ℓ1 и ℓ2. Эта комбинация позволяет изучать разреженную модель, в которой несколько весов не равны нулю, как у Лассо, при этом сохраняя свойства регуляризации Риджа. Мы управляем выпуклой комбинацией ℓ1 и ℓ2, используя параметр l1_ratio.

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

Практическое преимущество компромисса между Lasso и Ridge заключается в том, что он позволяет Elastic-Net унаследовать некоторую стабильность Ridge при вращении.

Возвращаясь к вопросу,
Несколько функций должны быть важны?
Если НЕТ, то мы будем использовать Ridge regression или SVRи, наконец, Ensemble methods.

Регрессия хребта

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

Регрессор Ridge имеет вариант классификатора: RidgeClassifier. Этот классификатор сначала преобразует двоичные цели в {-1, 1}, а затем обрабатывает проблему как задачу регрессии, оптимизируя ту же цель, что и выше. Прогнозируемый класс соответствует знаку предсказания регрессора. Для мультиклассовой классификации проблема рассматривается как регрессия с несколькими выходами, а прогнозируемый класс соответствует выходу с наибольшим значением.

СВР

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

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

Существует три различных реализации регрессии опорных векторов: SVR, NuSVR и LinearSVR. LinearSVR обеспечивает более быструю реализацию, чем SVR, но учитывает только линейное ядро, в то время как NuSVR реализует несколько иную формулировку, чем SVR и LinearSVR.

Методы ансамбля (регрессоры)

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

Обычно выделяют два семейства ансамблевых методов:

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

Теперь, если у нас нет размеченных данных, мы можем использовать различные методы кластеризации, такие как Kmeans, MeanShift, Spectral Clustering и т. д.

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

Подробнее о моделях см. ниже.
Ссылка- scikit-learn