SdcaRegressionTrainer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Для IEstimator<TTransformer> обучения модели регрессии с помощью метода подъема двух координат стохастика.
public sealed class SdcaRegressionTrainer : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaRegressionTrainer.Options,Microsoft.ML.Data.RegressionPredictionTransformer<Microsoft.ML.Trainers.LinearRegressionModelParameters>,Microsoft.ML.Trainers.LinearRegressionModelParameters>
type SdcaRegressionTrainer = class
inherit SdcaTrainerBase<SdcaRegressionTrainer.Options, RegressionPredictionTransformer<LinearRegressionModelParameters>, LinearRegressionModelParameters>
Public NotInheritable Class SdcaRegressionTrainer
Inherits SdcaTrainerBase(Of SdcaRegressionTrainer.Options, RegressionPredictionTransformer(Of LinearRegressionModelParameters), LinearRegressionModelParameters)
- Наследование
Комментарии
Чтобы создать этот тренер, используйте Sdca или Sdca(Options).
Входные и выходные столбцы
Данные столбца входной метки должны быть Single. Входные данные столбцов функций должны быть известными векторами Singleразмера.
Этот тренер выводит следующие столбцы:
| Имя выходного столбца | Тип столбца | Description |
|---|---|---|
Score |
Single | Несвязанная оценка, прогнозируемая моделью. |
Характеристики тренера
| Задача машинного обучения | Regression |
| Требуется ли нормализация? | Yes |
| Требуется ли кэширование? | No |
| Обязательный NuGet в дополнение к Microsoft.ML | Нет |
| Экспортируемый в ONNX | Yes |
Сведения об алгоритме обучения
Этот тренер основан на методе Stochastic Dual Coordinate Ascent (SDCA) — методе оптимизации с выпуклыми целевыми функциями. Алгоритм можно масштабировать, так как это алгоритм обучения потоковой передачи, как описано в лучшем документе KDD.
Конвергенция выполняется периодически путем принудительной синхронизации между первичными и двойными переменными в отдельном потоке. Также предоставляется несколько вариантов функций потери, таких как потеря hinge и логистическая потеря. В зависимости от используемой потери обученная модель может быть, например, поддержка векторной машины или логистической регрессии. Метод SDCA объединяет несколько лучших свойств, таких как возможность потокового обучения (без заполнения всего набора данных в памяти), достижения разумного результата с несколькими сканированиями всего набора данных (например, см. эксперименты в этом документе) и не тратя вычислений на нули в разреженных наборах данных.
Обратите внимание, что SDCA — это алгоритм стохастики и оптимизации потоковой передачи. Результат зависит от порядка обучающих данных, так как устойчивость остановки недостаточно жесткая. В строго выпуклой оптимизации оптимальное решение уникально, поэтому все в конечном итоге достигают того же места. Даже в неразрывных случаях вы получите одинаково хорошие решения от запуска до запуска. Для воспроизводимых результатов рекомендуется задать значение "Shuffle" значение False и NumThreads в 1.
Этот класс использует эмпирическую минимизацию рисков (т. е. ERM) для формирования задачи оптимизации, созданной на основе собранных данных. Обратите внимание, что эмпирический риск обычно измеряется путем применения функции потери для прогнозов модели на собранных точках данных. Если обучающие данные не содержат достаточно точек данных (например, для обучения линейной модели в $n$-размерном пространстве, нам потребуется по крайней мере $n$ точек данных), то может произойти переполнение , чтобы модель, созданная ERM, хорошо описывала обучающие данные, но может не прогнозировать правильные результаты в невидимых событиях. Нормализация — это распространенный способ облегчения такого явления путем наказания за величину (обычно измеряемую нормой) параметров модели. Этот тренер поддерживает эластичную нормализацию сетки, которая наказывает линейное сочетание L1-норм (LASSO), $|| \textbf{w}_c ||_1$, и L2-норм (ридж), $|| \textbf{w}_c ||_2^2$ нормализации для $c=1,\dots,m$. Нормализации норм L1 и L2-норм имеют различные эффекты и используются, которые являются взаимодополняющими в определенных отношениях.
Вместе с реализованным алгоритмом оптимизации нормализация норм L1 может увеличить разреженность весов модели, $\textbf{w}_1,\dots,\textbf{w}_m$. Для высокомерных и разреженных наборов данных, если пользователи тщательно выбирают коэффициент L1-норм, можно добиться хорошего качества прогнозирования с моделью, которая имеет только несколько ненулевых весов (например, 1% общих весов модели), не влияя на ее мощность прогнозирования. В отличие от этого, L2-норма не может увеличить разреженность обученной модели, но по-прежнему может предотвратить переполнение, избегая больших значений параметров. Иногда использование L2-норм приводит к лучшему качеству прогнозирования, поэтому пользователи по-прежнему хотят попробовать его и точно настроить коэффициенты L1-норм и L2-норм. Обратите внимание, что концептуально использование L1-норм подразумевает, что распределение всех параметров модели является распределением Laplace , в то время как L2-норм подразумевает для них распределение Gaussian .
Агрессивная нормализация (то есть назначение больших коэффициентов терминам нормализации L1-норм или L2-норм) может повредить прогнозной емкости, исключив важные переменные из модели. Например, очень большой коэффициент нормы L1 может привести ко всем параметрам нулю и привести к тривиальной модели. Поэтому выбор правильных коэффициентов нормализации важен на практике.
Дополнительные сведения можно найти здесь
- Масштабирование до стохастической двойной координаты восхождения.
- Стохастические методы двойной координаты для минимизации регулярной потери.
Ознакомьтесь с разделом "См. также" ссылки на примеры использования.
Поля
| Имя | Описание |
|---|---|
| FeatureColumn |
Столбец признаков, который ожидает тренер. (Унаследовано от TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
Столбец метки, который ожидает тренер. Может быть |
| WeightColumn |
Столбец веса, который ожидает тренер. Может быть |
Свойства
| Имя | Описание |
|---|---|
| Info |
Для IEstimator<TTransformer> обучения модели регрессии с помощью метода подъема двух координат стохастика. (Унаследовано от StochasticTrainerBase<TTransformer,TModel>) |
Методы
| Имя | Описание |
|---|---|
| Fit(IDataView) |
Поезда и возвращается ITransformer. (Унаследовано от TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
Для IEstimator<TTransformer> обучения модели регрессии с помощью метода подъема двух координат стохастика. (Унаследовано от TrainerEstimatorBase<TTransformer,TModel>) |
Методы расширения
| Имя | Описание |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Добавьте "контрольную точку кэширования" в цепочку оценщика. Это гарантирует, что нижестоящий оценщик будет обучен по кэшированным данным. Рекомендуется использовать контрольную точку кэширования перед обучением, которые принимают несколько передач данных. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
При оценке возвращает объект оболочки, который вызовет делегат после Fit(IDataView) вызова. Часто важно для оценки возвращать сведения о том, что было подходяще, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако, в то же время, IEstimator<TTransformer> часто формируются в конвейеры с множеством объектов, поэтому нам может потребоваться построить цепочку оценщиков с помощью EstimatorChain<TLastTransformer> того, где оценка, для которой мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова. |