SdcaNonCalibratedBinaryTrainer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Для IEstimator<TTransformer> обучения модели классификации двоичной логистической регрессии с помощью стохастического метода восхождения двойной координаты.
public sealed class SdcaNonCalibratedBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Trainers.LinearBinaryModelParameters>
type SdcaNonCalibratedBinaryTrainer = class
inherit SdcaBinaryTrainerBase<LinearBinaryModelParameters>
Public NotInheritable Class SdcaNonCalibratedBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of LinearBinaryModelParameters)
- Наследование
-
SdcaTrainerBase<SdcaBinaryTrainerBase<TModelParameters>.BinaryOptionsBase,BinaryPredictionTransformer<TModelParameters>,TModelParameters>SdcaNonCalibratedBinaryTrainer
Комментарии
Чтобы создать этот обучающее средство, используйте SdcaNonCalibrated или SdcaNonCalibrated(Options).
Входные и выходные столбцы
Входные данные столбца меток должны иметь тип Boolean. Входные признаки данных столбцов должны быть вектором известного Singleразмера . Этот алгоритм обучения выводит следующие столбцы:
Имя выходного столбца | Тип столбца | Описание |
---|---|---|
Score |
Single | Несвязанная оценка, вычисляемая моделью. |
PredictedLabel |
Boolean | Прогнозируемая метка, зависящая от знака оценки. Отрицательная оценка соответствует значению false , а положительная — значению true . |
Характеристики тренера
Задача машинного обучения | Двоичная классификация |
Требуется ли нормализация? | Да |
Требуется ли кэширование? | Нет |
Требуется NuGet в дополнение к Microsoft.ML | Нет |
Экспортируемый в ONNX | Да |
Сведения об алгоритме обучения
Этот обучающий метод основан на методе Стохастического двойного подъема координат (SDCA) — методе оптимизации с выпуклыми целевыми функциями. Алгоритм можно масштабировать, так как это алгоритм обучения потоковой передачи, как описано в лучшем документе KDD.
Конвергенция выполняется периодически путем принудительной синхронизации между первичными и двойными переменными в отдельном потоке. Также предоставляется несколько вариантов функций потерь, таких как потеря петли и логистическая потеря. В зависимости от используемой потери обученная модель может быть, например, опорная векторная машина или логистическая регрессия. Метод SDCA объединяет несколько лучших свойств, таких как возможность потокового обучения (без установки всего набора данных в память), достижения разумного результата с несколькими сканированиями всего набора данных (например, см. эксперименты в этом документе) и не тратя вычислений на нули разреженных наборов данных.
Обратите внимание, что SDCA — это алгоритм стохастической и потоковой оптимизации. Результат зависит от порядка обучающих данных, так как погрешность остановки недостаточно жесткая. При строго выпуклой оптимизации оптимальное решение уникально и, следовательно, все в конечном итоге достигают того же места. Даже в несовременных случаях вы получите одинаково хорошие решения от запуска до запуска. Для воспроизводимых результатов рекомендуется задать для параметра Shuffle значение False и NumThreads значение 1.
Этот класс использует эмпирическую минимизацию рисков (т. е. ERM) для формирования задачи оптимизации, созданной на основе собранных данных. Обратите внимание, что эмпирический риск обычно измеряется путем применения функции потери к прогнозам модели по собранным точкам данных. Если обучающие данные не содержат достаточно точек данных (например, для обучения линейной модели в $n$-мерном пространстве, нам нужно по крайней мере $n$ точек данных), может произойти переобучение , чтобы модель, созданная ERM, хорошо описывала обучающие данные, но может не прогнозировать правильные результаты в незавиденных событиях. Регуляризация является распространенным методом для облегчения такого явления путем наказания величины (обычно измеряемой функцией норм) параметров модели. Этот тренер поддерживает эластичную чистую регуляризацию, которая наказывает линейное сочетание L1-норм (LASSO), $|| \textbf{w}_c || _1$, и L2-норм (ridge), $|| \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-нормой подразумевает для них гауссианское распределение .
Агрессивная регуляризация (т. е. присвоение больших коэффициентов терминам регуляризации L1-норм или норм L2) может нанести ущерб прогнозной емкости за счет исключения важных переменных из модели. Например, очень большой коэффициент норм L1 может привести ко всем параметрам нули и привести к тривиальной модели. Поэтому выбор правильных коэффициентов регуляризации важен на практике.
Дополнительные сведения см. в разделе:
- Вертикальное увеличение подъема стохастической двойной координаты.
- Стохастические методы восхождения двойной координаты для минимизации регулярной потери.
Ссылки на примеры использования см. в разделе "См. также".
Поля
FeatureColumn |
Столбец признаков, который ожидает тренер. (Унаследовано от TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
Столбец метки, который ожидает тренер. Может иметь значение |
WeightColumn |
Столбец веса, который ожидает тренер. Может быть |
Свойства
Info |
Для IEstimator<TTransformer> обучения модели классификации двоичной логистической регрессии с помощью стохастического метода восхождения двойной координаты. (Унаследовано от SdcaBinaryTrainerBase<TModelParameters>) |
Методы
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> оценщик, для которого мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова соответствия. |
Применяется к
См. также раздел
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, ISupportSdcaClassificationLoss, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, SdcaNonCalibratedBinaryTrainer+Options)
- SdcaNonCalibratedBinaryTrainer.Options