Выбор алгоритма 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 | Регрессия | Да |