Выбор алгоритма ML.NET

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

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

Обучающий алгоритм = алгоритм + задача

Алгоритм — это математическое описание, используемое для создания модели. Различные алгоритмы дают модели с разными характеристиками.

В ML.NET один алгоритм можно применить к различным задачам. Например, стохастический двойной покоординатный подъем можно использовать для двоичной классификации, многоклассовой классификации и регрессии. Различие заключается в интерпретации выходных данных алгоритма для сопоставления с задачей.

Для каждого сочетания алгоритма и задачи ML.NET предоставляет компонент, который выполняет алгоритм обучения и осуществляет интерпретацию. Такие компоненты называются обучающими алгоритмами. Например, SdcaRegressionTrainer использует алгоритм StochasticDualCoordinatedAscent, применяемый к задаче регрессии.

Линейные алгоритмы

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

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

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

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

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

Усредненный персептрон

Идеально подходит для классификации текста.

Учебный Задача Экспортируемый в ONNX
AveragedPerceptronTrainer Двоичная классификация Да

Стохастический двойной покоординатный подъем

Не требуется настройка для обеспечения хорошей производительности.

Учебный Задача Экспортируемый в ONNX
SdcaLogisticRegressionBinaryTrainer Двоичная классификация Да
SdcaNonCalibratedBinaryTrainer Двоичная классификация Да
SdcaMaximumEntropyMulticlassTrainer Классификация по нескольким классам Да
SdcaNonCalibratedMulticlassTrainer Классификация по нескольким классам Да
SdcaRegressionTrainer Регрессия Да

L-BFGS

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

Учебный Задача Экспортируемый в ONNX
LbfgsLogisticRegressionBinaryTrainer Двоичная классификация Да
LbfgsMaximumEntropyMulticlassTrainer Классификация по нескольким классам Да
LbfgsPoissonRegressionTrainer Регрессия Да

Посимвольный стохастический градиентный спуск

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

Учебный Задача Экспортируемый в ONNX
SymbolicSgdLogisticRegressionBinaryTrainer Двоичная классификация Да

Метод градиентного спуска в подключенном режиме

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

Учебный Задача Экспортируемый в ONNX
OnlineGradientDescentTrainer Регрессия Да

Алгоритмы дерева принятия решений

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

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

Алгоритмы дерева принятия решений обычно очень точны.

За исключением обобщенных аддитивных моделей (GAM), модели дерева могут иметь недостаточную объясняемость, когда число признаков велико.

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

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

Машина слабого градиентного бустинга

Самый быстрый и точный из обучающих алгоритмов деревьев двоичной классификации. Широкие возможности настройки.

Учебный Задача Экспортируемый в ONNX
LightGbmBinaryTrainer Двоичная классификация Да
LightGbmMulticlassTrainer Классификация по нескольким классам Да
LightGbmRegressionTrainer Регрессия Да
LightGbmRankingTrainer Рейтинг No

Быстрое дерево

Используется для данных изображения с определенными признаками. Устойчив к несбалансированным данным. Широкие возможности настройки.

Учебный Задача Экспортируемый в ONNX
FastTreeBinaryTrainer Двоичная классификация Да
FastTreeRegressionTrainer Регрессия Да
FastTreeTweedieTrainer Регрессия Да
FastTreeRankingTrainer Рейтинг No

Быстрый лес

Отлично подходит для данных с высоким уровнем шума.

Учебный Задача Экспортируемый в ONNX
FastForestBinaryTrainer Двоичная классификация Да
FastForestRegressionTrainer Регрессия Да

Обобщенная аддитивная модель (GAM)

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

Учебный Задача Экспортируемый в ONNX
GamBinaryTrainer Двоичная классификация No
GamRegressionTrainer Регрессия No

Факторизация матрицы

Факторизация матрицы

Используется для совместной фильтрации в рекомендации.

Учебный Задача Экспортируемый в ONNX
MatrixFactorizationTrainer Рекомендация No

Факторизационный метод с полями

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

Учебный Задача Экспортируемый в ONNX
FieldAwareFactorizationMachineTrainer Двоичная классификация No

Метаалгоритмы

Эти обучающие алгоритмы создают многоклассовый обучающий алгоритм из двоичного. Используется с AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer.

Один против всех

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

Учебный Задача Экспортируемый в ONNX
OneVersusAllTrainer Классификация по нескольким классам Да

Попарное соединение

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

Учебный Задача Экспортируемый в ONNX
PairwiseCouplingTrainer Классификация по нескольким классам No

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

Используется для кластеризации.

Учебный Задача Экспортируемый в ONNX
KMeansTrainer Кластеризация Да

Анализ главных компонентов

Используется для обнаружения аномалий.

Учебный Задача Экспортируемый в ONNX
RandomizedPcaTrainer Обнаружение аномалий No

Упрощенный алгоритм Байеса

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

Учебный Задача Экспортируемый в ONNX
NaiveBayesMulticlassTrainer Классификация по нескольким классам Да

Базовый обучающий алгоритм

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

Учебный Задача Экспортируемый в ONNX
PriorTrainer Двоичная классификация Да

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

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

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

Линейный метод опорных векторов

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

Учебный Задача Экспортируемый в ONNX
LinearSvmTrainer Двоичная классификация Да

Глубокий локальный метод опорных векторов

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

Учебный Задача Экспортируемый в ONNX
LdSvmTrainer Двоичная классификация Да

Обычный метод наименьших квадратов

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

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

Учебный Задача Экспортируемый в ONNX
OlsTrainer Регрессия Да