FieldAwareFactorizationMachineTrainer 類別

定義

IEstimator<TTransformer> 使用使用隨機漸層方法定型的現場感知分解機器模型來預測目標。

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
繼承
FieldAwareFactorizationMachineTrainer
實作

備註

輸入和輸出資料行

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

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

輸出資料行名稱 資料行類型 描述
Score Single 模型所計算的未系結分數。
PredictedLabel Boolean 預測標籤 (根據分數的正負號)。 負值分數會對應到 false,正值分數則會對應到 true
Probability Single 藉由校正具有 true 作為標籤的分數來計算的機率。 機率值的範圍為 [0, 1]。

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

相較于其他二進位分類器,它只能支援一個特徵資料行,欄位感知分解機器可以取用多個特徵資料行。 每個資料行都會視為某些功能的容器,而這類容器稱為欄位。 請注意,所有特徵資料行都必須是浮點數向量,但其維度可能不同。 將特徵分割成不同欄位的動機,是獨立建立不同分佈特徵的模型。 例如,在線上遊戲市集中,從使用者設定檔建立的功能,以及從遊戲設定檔建立的功能可以指派給兩個不同的欄位。

定型器特性

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

背景

分解機器系列是一個功能強大的模型群組,適用于受監督的學習問題。 第一次在 Steffen Rendle 的 Factorization Machines 檔中于 2010 年引進。 之後,它的其中一個一般化版本現場感知分解機器,在最近的推薦系統和點擊率預測競賽中成為重要的預測模組。 如需範例,請參閱 Steffen Rendle KDD-Cup 2012 (Track 1Track 2) 、Criteo、Avazu'sOutbrain在 Kaggle 上的點選預測挑戰中的勝出解決方案。

當特徵結合與您想要預測的訊號相互關聯時,分解機器特別強大。 功能配對的一個範例,可形成重要的結合方式,就是音樂建議中的使用者識別碼和音樂識別碼。 當資料集只包含密集數值特徵時,不建議使用分解機器,或應該執行某些特徵化。

評分函式

現場感知分解機器是評分函式,會將不同欄位的功能向量對應至純量分數。 假設所有 $m$ 特徵資料行都會串連成長特徵向量 $\textbf{x} \in {\mathbb R}^n$ 和 ${\mathcal F} (j) $ 表示第$j$-th 特徵的欄位縮排器。 對應的分數為 $\hat{y} (\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F} (j') }、\textbf{v}_{j'、{\mathcal F} (j) } \rangle x_j x_{j'}$,其中 $\langle \cdot、\cdot \rangle$ 是內部產品運算子, $\textbf{w} \in {\mathbb R}^n$ 會儲存線性係數,而 $\textbf{v}_{j, f}\in {\mathbb R}^k$ $j 是$f$-th 功能在 $f$-th 欄位的延遲空間中的標記法。 請注意,$k$ 是使用者指定的延遲維度。

預測標籤是 $\hat{y}$ 的正負號。 如果 $\hat{y} > 0$,此模型會預測 true。 否則,它會預測 false。

如需現場感知分解機器的系統化簡介,請參閱 這份檔

定型演算法詳細資料

FieldAwareFactorizationMachineTrainer 實作的演算法是以 隨機漸層方法為基礎。 此 線上檔中的演算法 3 會說明演算法詳細資料。 最小化的損失函式是 羅吉斯損失,因此可以將定型的模型視為非線性羅吉斯回歸。

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

方法

Fit(IDataView)

定型並傳 FieldAwareFactorizationMachinePredictionTransformer 回 。

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

使用已定 modelParameters 型和/或驗證資料繼續定 FieldAwareFactorizationMachineTrainer 型,並傳 FieldAwareFactorizationMachinePredictionTransformer 回 。

GetOutputSchema(SchemaShape)

轉換器的架構傳播。 如果輸入架構與所提供的架構類似,則傳回資料的輸出架構。

擴充方法

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

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

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

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

適用於

另請參閱