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

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

輸出數據行名稱 欄類型 Description
Score Single 模型計算出的無界分數。
PredictedLabel Boolean 根據分數的符號來預測的標籤。 負數分數會對應至 false,正分數會對應至 true
Probability Single 這個機率是透過校準以 為真為標籤所計算出來的。 機率值在範圍 [0, 1]。

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

與其他只能支援一欄特徵的二元分類器不同,場域感知分解機可以消耗多個特徵欄位。 每一欄被視為某些特徵的容器,而這樣的容器稱為欄位。 請注意,所有特徵欄位必須是浮點向量,但它們的尺寸可以不同。 將特徵拆分為不同欄位的動機是為了獨立建模來自不同分布的特徵。 例如,在線上遊戲商店中,使用者設定檔創建的功能與遊戲設定檔的功能可以分配到兩個不同的欄位。

訓練師特性

機器學習任務 二元分類
需要正規化嗎? Yes
快取是必須的嗎? No
除了 Microsoft.ML 之外,必須使用 NuGet None
可匯出至 ONNX No

背景

分解機家族是一個強大的監督學習模型群。 它最早於2010年在Steffen Rendle的《 分解機器 》論文中提出。 後來,其廣義版本之一——場域感知分解機,成為近年推薦系統及點擊率預測競賽中重要的預測模組。 例如,請參閱 Steffen Rendle KDD-Cup 2012(曲目 12)、 CriteoAvazu 以及 Outbrain 在 Kaggle 上的點擊預測挑戰中獲勝解法。

當特徵合取與你想預測的訊號高度相關時,分解機特別強大。 一個能形成重要連詞的功能對例子是音樂推薦中的使用者 ID 與音樂 ID。 當資料集僅包含密集數值特徵時,不建議使用分解機,或應進行部分特徵化。

計分功能

場感知分解機是一種評分函數,將不同場的特徵向量映射到純量分數。 假設所有 $m$ 特徵欄位都串接成一個長特徵向量 $\textbf{x} \in {\mathbb R}^n$,而 ${\mathcal F}(j)$ 表示第 $j$ 特徵的欄位標識符。 對應的分數為 $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \r角度 + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \r角度 x_j x_{j'}$,其中 $\langle \cdot, \cdot \rangle$ 是內積算子,$\textbf{w} \in {\mathbb R}^n$ 儲存線性係數, 而 $\textbf{v}_{j, f}\in {\mathbb R}^k$ 是第 $j 個特徵在第 $f$ 個欄位的潛在空間中的表示。 請注意,$k$ 是使用者指定的潛在維度。

預測的標籤是 $\hat{y}$ 的符號。 若 $\hat{y} > 0$,該模型預測為真。 否則,預測結果為假。

關於場感因式分解機的系統性入門,請參閱 此論文

訓練演算法細節

FieldAwareFactorizationMachineTrainer 演算法基於 隨機梯度法。 演算法細節詳見 本線上文件中的演算法3。 最小化損失函數即為 邏輯斯損失,因此訓練模型可視為非線性邏輯斯迴歸。

請參考「參見」區塊,裡面有使用範例的連結。

方法

名稱 Description
Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

繼續使用已訓練及modelParameters/或驗證資料訓練 aFieldAwareFactorizationMachineTrainer,並回傳 FieldAwareFactorizationMachinePredictionTransformer

Fit(IDataView)

訓練並返回 FieldAwareFactorizationMachinePredictionTransformer

GetOutputSchema(SchemaShape)

變換器(transformer)的結構傳播。 如果輸入模式與提供的相同,則會回傳資料的輸出結構。

擴充方法

名稱 Description
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

在估計鏈中附加一個「快取檢查點」。 這將確保下游估計器能針對快取資料進行訓練。 在訓練師接受多次資料通行前設置快取檢查點會很有幫助。

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

給定一個估計器,回傳一個包裹物件,該物件會呼叫一次 Fit(IDataView) 代理。 估計器通常回傳擬合的資訊很重要,因此該 Fit(IDataView) 方法回傳一個特定型別的物件,而非一般 ITransformer的 。 然而,同時, IEstimator<TTransformer> 通常會被組成包含許多物件的管線,因此我們可能需要建立一條估計鏈,將 EstimatorChain<TLastTransformer> 我們想要取得變壓器的估計器埋藏在這條鏈的某處。 在這種情況下,我們可以透過此方法附加一個代理,當 fit 被呼叫時會被呼叫。

適用於

另請參閱