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)
繼承

備註

要建立此訓練器,請使用 SdcaSdca(Options)。

輸入與輸出欄位

輸入標籤欄位資料必須是 Single。 輸入特徵欄位資料必須是已知大小的向量。Single

此訓練器會輸出下列欄位:

輸出數據行名稱 欄類型 Description
Score Single 模型預測的無界分數。

訓練師特性

機器學習任務 Regression
需要正規化嗎? 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

訓練師期望的標籤欄。 可以是 null,表示該標籤不用於訓練。

(繼承來源 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

訓練師預期的體重欄。 可以是 null,表示訓練時不使用重量。

(繼承來源 TrainerEstimatorBase<TTransformer,TModel>)

屬性

名稱 Description
Info

用於 IEstimator<TTransformer> 使用隨機對偶座標上升法訓練迴歸模型。

(繼承來源 StochasticTrainerBase<TTransformer,TModel>)

方法

名稱 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 被呼叫時會被呼叫。

適用於

另請參閱