SdcaNonCalibratedBinaryTrainer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
用於 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 此訓練器會輸出下列欄位:
| 輸出數據行名稱 | 欄類型 | Description |
|---|---|---|
Score |
Single | 模型計算出的無界分數。 |
PredictedLabel |
Boolean | 根據分數的符號來預測的標籤。 負數分數會對應至 false,正分數會對應至 true。 |
訓練師特性
| 機器學習任務 | 二元分類 |
| 需要正規化嗎? | Yes |
| 快取是必須的嗎? | No |
| 除了 Microsoft.ML 之外,必須使用 NuGet | None |
| 可匯出至 ONNX | Yes |
訓練演算法細節
此訓練器基於隨機雙座標上升(SDCA)方法,這是一種針對凸目標函數的先進優化技術。 這個演算法可以被擴展,因為它是 KDD 最佳論文中描述的串流訓練演算法。
收斂的基礎是定期強制在獨立執行緒中強制原始變數與對偶變數同步。 同時也提供多種損失函數選擇,如 鉸鏈損失 與 邏輯斯損失。 根據所使用的損失,訓練模型可以是 支持向量機 或 邏輯斯迴歸。 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 範數意味著所有模型參數的分布都是 拉普拉斯分布 ,而 L2 範數則是它們的高 斯分布 。
積極的正則化(即對 L1 範數或 L2 範數項賦值較大)會因排除重要變數而損害預測能力。 例如,非常大的 L1 範數係數可能迫使所有參數為零,導致模型變得平凡。 因此,選擇合適的正則化係數在實務上非常重要。
欲了解更多資訊,請參閱:
請參考「參見」部分,裡面有相關用法的連結。
欄位
| 名稱 | Description |
|---|---|
| FeatureColumn |
訓練師期待的特色欄。 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
訓練師期望的標籤欄。 可以是 |
| WeightColumn |
訓練師預期的體重欄。 可以是 |
屬性
| 名稱 | Description |
|---|---|
| Info |
用於 IEstimator<TTransformer> 使用隨機雙重座標上升法訓練二元邏輯斯迴歸分類模型。 (繼承來源 SdcaBinaryTrainerBase<TModelParameters>) |
方法
| 名稱 | Description |
|---|---|
| Fit(IDataView) |
訓練並返回 ITransformer。 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
用於 IEstimator<TTransformer> 使用隨機雙重座標上升法訓練二元邏輯斯迴歸分類模型。 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
擴充方法
| 名稱 | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
在估計鏈中附加一個「快取檢查點」。 這將確保下游估計器能針對快取資料進行訓練。 在訓練師接受多次資料通行前設置快取檢查點會很有幫助。 |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
給定一個估計器,回傳一個包裹物件,該物件會呼叫一次 Fit(IDataView) 代理。 估計器通常回傳擬合的資訊很重要,因此該 Fit(IDataView) 方法回傳一個特定型別的物件,而非一般 ITransformer的 。 然而,同時, IEstimator<TTransformer> 通常會被組成包含許多物件的管線,因此我們可能需要建立一條估計鏈,將 EstimatorChain<TLastTransformer> 我們想要取得變壓器的估計器埋藏在這條鏈的某處。 在這種情況下,我們可以透過此方法附加一個代理,當 fit 被呼叫時會被呼叫。 |
適用於
另請參閱
- SdcaNonCalibratedBinaryTrainer.Options
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, ISupportSdcaClassificationLoss, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, SdcaNonCalibratedBinaryTrainer+Options)