Поделиться через


SdcaLogisticRegressionBinaryTrainer Класс

Определение

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

public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
Наследование

Комментарии

Чтобы создать этот обучающее средство, используйте SdcaLogisticRegression или SdcaLogisticRegression(Options).

Входные и выходные столбцы

Входные данные столбца меток должны иметь тип Boolean. Входные признаки данных столбцов должны быть вектором известного Singleразмера .

Этот алгоритм обучения выводит следующие столбцы:

Имя выходного столбца Тип столбца Описание
Score Single Несвязанная оценка, вычисляемая моделью.
PredictedLabel Boolean Прогнозируемая метка, зависящая от знака оценки. Отрицательная оценка соответствует значению false, а положительная — значению true.
Probability Single Вероятность, вычисляемая путем калибровки оценки истинности в качестве метки. Значение вероятности находится в диапазоне [0, 1].

Характеристики тренера

Задача машинного обучения Двоичная классификация
Требуется ли нормализация? Да
Требуется ли кэширование? Нет
Требуется 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

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

(Унаследовано от TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Столбец веса, который ожидает тренер. Может быть null, что указывает, что вес не используется для обучения.

(Унаследовано от TrainerEstimatorBase<TTransformer,TModel>)

Свойства

Info

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

(Унаследовано от SdcaBinaryTrainerBase<TModelParameters>)

Методы

Fit(IDataView)

Тренирует и возвращает .ITransformer

(Унаследовано от TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

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

(Унаследовано от TrainerEstimatorBase<TTransformer,TModel>)

Методы расширения

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

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

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Учитывая оценщик, верните объект-оболочку, который будет вызывать делегат один раз Fit(IDataView) . Часто важно, чтобы оценщик возвращал сведения о том, что было положено, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако в то же время часто IEstimator<TTransformer> формируются в конвейеры со многими объектами, поэтому нам может потребоваться создать цепочку оценщиков, где EstimatorChain<TLastTransformer> оценщик, для которого мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова соответствия.

Применяется к

См. также раздел