LbfgsMaximumEntropyMulticlassTrainer 類別

定義

IEstimator<TTransformer> 使用以 L-BFGS 方法定型的最大 entropy 多重類別分類器來預測目標。

public sealed class LbfgsMaximumEntropyMulticlassTrainer : Microsoft.ML.Trainers.LbfgsTrainerBase<Microsoft.ML.Trainers.LbfgsMaximumEntropyMulticlassTrainer.Options,Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Trainers.MaximumEntropyModelParameters>,Microsoft.ML.Trainers.MaximumEntropyModelParameters>
type LbfgsMaximumEntropyMulticlassTrainer = class
    inherit LbfgsTrainerBase<LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer<MaximumEntropyModelParameters>, MaximumEntropyModelParameters>
Public NotInheritable Class LbfgsMaximumEntropyMulticlassTrainer
Inherits LbfgsTrainerBase(Of LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer(Of MaximumEntropyModelParameters), MaximumEntropyModelParameters)
繼承

備註

若要建立此定型器,請使用 LbfgsMaximumEntropyLbfgsMaximumEntropy (Options)

輸入和輸出資料行

輸入標籤資料行資料必須是 索引鍵 類型,而且特徵資料行必須是 的已知大小向量 Single

此定型器會輸出下列資料行:

輸出資料行名稱 資料行類型 描述
Score Single 的向量 所有類別的分數。 較高值表示落入相關聯類別的機率較高。 若第 i 個項目具有最大值,則預測標籤索引將會是 i。 請注意,i 是以零為基礎的索引。
PredictedLabel 索引鍵 類型 預測標籤的索引。 若其值是 i,則實際標籤可能會是索引鍵/值輸入標籤類型中的第 i 個類別。

定型器特性

機器學習工作 多元分類
是否需要正規化?
是否需要快取?
除了 Microsoft.ML 之外,還需要 NuGet
可匯出至 ONNX

評分函式

最大 entropy 模型 是線性羅吉斯 回歸的一般化。 最大 Entropy 模型與羅吉斯回歸之間的主要差異是考慮分類問題中支援的類別數目。 羅吉斯回歸僅適用于二進位分類,而最大 Entropy 模型會處理多個類別。 如需詳細的簡介,請參閱 本檔中 第 1 節。

假設類別數目為 $m$,且功能數目為 $n$。 最大 entropy 模型會針對 $c=1,\dots,m$ 指派$c$-th 類別的係數向量 $\textbf{w}_c \in {\mathbb R}^n$ 和偏差$b_c \in {\mathbb R}$。 假設功能向量 $\textbf{x} \in {\mathbb R}^n$, $c$-th 類別的分數為 $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$。 屬於類別$c$ 的 $\textbf{x}$ 機率是由 $\tilde{P}所定義, (c |\textbf{x}) = \frac{ e^{\hat{y}^c} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}} }$。 讓 $P (c、\textbf{ x}) $ 表示看到 $c$ 和 $\textbf{x}$ 的聯合機率。 此定型器最小化的遺失函式是 $-\sum_{c = 1}^m P (c, \textbf{ x}) \log \tilde{P} (c |\textbf{x}) $,這是負 數可能性函式

定型演算法詳細資料

實作的優化技術是以 有限的記憶體 Broyden-Fletcher-Goldfarb-Shanno 方法為基礎, (L-BFGS) 。 L-BFGS 是一種 准新元方法,它會以近似值取代 Hessian 矩陣的昂貴計算,但仍享有快速聚合率,例如計算完整 Hessian 矩陣 的 Newton 方法 。 由於 L-BFGS 近似值只會使用有限的歷程記錄狀態來計算下一個步驟方向,因此特別適用于高維度特徵向量的問題。 歷程記錄狀態的數目是使用者指定的參數,使用較大的數位可能會導致較佳的 Hessian 矩陣近似值,但也會導致每個步驟的計算成本較高。

這個類別會使用 經驗風險最小化 (,也就是 ERM) 來制定根據收集的資料所建置的優化問題。 請注意,經驗風險通常是藉由在所收集的資料點上套用模型預測的損失函式來測量。 例如,如果定型資料未包含足夠的資料點 (,若要在 $n$維度空間中定型線性模型,我們需要至少$n$ 個資料點) ,可能會發生 過度學習 ,讓 ERM 所產生的模型很適合描述定型資料,但可能無法預測不可見事件的正確結果。 正規化 是一種常見技術,可藉由調整模型參數的 norm 函式) 通常測量的大小 (來減輕這類現象。 此定型器支援 彈性 net 正規化,可讓 L1 標準 (LASSO) 、$|| 線性組合\textbf{w}_c ||_1$ 和 L2-norm () ,$||\textbf{w}_c ||$c=1,\dots,m$的 _2^2$ 正規化。 L1-norm 和 L2-norm 正規化有不同的效果,而且在某些方面是互補的用法。

結合實作的優化演算法,L1 標準正規化可以增加模型權數 $\textbf{w}_1,\dots,\textbf{w}_m$。 對於高維度和疏鬆資料集,如果使用者仔細選取 L1-norm 的係數,就可以使用只有少數非零權數的模型達到良好的預測品質 (,例如,1% 的總模型權數) ,而不會影響其預測能力。 相反地,L2 norm 無法增加定型模型的疏疏性,但仍可避免大型參數值過度學習。 有時候,使用 L2 標準會導致更好的預測品質,因此使用者可能仍想要嘗試,並微調 L1-norm 和 L2-norm 的係數。 請注意,在概念上,使用 L1-norm 表示所有模型參數的 分佈都是 Laplace 分佈 ,而 L2 標準表示 其 Gaussian 分佈

積極正規化 (,也就是將大型係數指派給 L1-norm 或 L2-norm 正規化詞彙,) 可以排除模型中的重要變數來損害預測容量。 例如,非常大的 L1 標準係數可能會強制所有參數為零,並導致簡單的模型。 因此,在實務上選擇正確的正規化係數很重要。

如需使用範例的連結,請參閱另請參閱一節。

欄位

FeatureColumn

定型器預期的功能資料行。

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

定型器預期的標籤資料行。 可以是 null ,表示標籤不會用於定型。

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

定型器預期的加權資料行。 可以是 null ,表示加權不會用於定型。

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

屬性

Info

IEstimator<TTransformer> 使用以 L-BFGS 方法定型的最大 entropy 多重類別分類器來預測目標。

(繼承來源 LbfgsTrainerBase<TOptions,TTransformer,TModel>)

方法

Fit(IDataView)

定型並傳 ITransformer 回 。

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

繼續使用已定 modelParameters 型的 LbfgsMaximumEntropyMulticlassTrainer 來訓練 ,並傳 MulticlassPredictionTransformer<TModel> 回 。

GetOutputSchema(SchemaShape)

IEstimator<TTransformer> 使用以 L-BFGS 方法定型的最大 entropy 多重類別分類器來預測目標。

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

擴充方法

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

將「快取檢查點」附加至估算器鏈結。 這可確保下游估算器會針對快取的資料定型。 在接受多個資料通過的定型器之前,先有快取檢查點會很有説明。

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

指定估算器時,傳回包裝物件,一旦 Fit(IDataView) 呼叫委派即可。 估算器通常務必傳回符合專案的相關資訊,這就是 Fit(IDataView) 方法傳回特定型別物件的原因,而不是只傳回一般 ITransformer 。 不過,同時, IEstimator<TTransformer> 通常會形成具有許多物件的管線,因此我們可能需要透過建置估算器的鏈結,而我們想要取得轉換器的估算器 EstimatorChain<TLastTransformer> 會在此鏈結的某處放置。 在該案例中,我們可以透過這個方法附加呼叫一次會呼叫的委派。

適用於

另請參閱