FieldAwareFactorizationMachineTrainer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
, 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]。 |
若要建立此定型器,請使用 FieldAwareFactorizationMachineFieldAwareFactorizationMachine或 FieldAwareFactorizationMachine (Options) 。
相較于其他二進位分類器,它只能支援一個特徵資料行,欄位感知分解機器可以取用多個特徵資料行。 每個資料行都會視為某些功能的容器,而這類容器稱為欄位。 請注意,所有特徵資料行都必須是浮點數向量,但其維度可能不同。 將特徵分割成不同欄位的動機,是獨立建立不同分佈特徵的模型。 例如,在線上遊戲市集中,從使用者設定檔建立的功能,以及從遊戲設定檔建立的功能可以指派給兩個不同的欄位。
定型器特性
機器學習工作 | 二元分類 |
是否需要正規化? | 是 |
是否需要快取? | 否 |
除了 Microsoft.ML 之外,還需要 NuGet | 無 |
可匯出至 ONNX | 否 |
背景
分解機器系列是一個功能強大的模型群組,適用于受監督的學習問題。 第一次在 Steffen Rendle 的 Factorization Machines 檔中于 2010 年引進。 之後,它的其中一個一般化版本現場感知分解機器,在最近的推薦系統和點擊率預測競賽中成為重要的預測模組。 如需範例,請參閱 Steffen Rendle KDD-Cup 2012 (Track 1和Track 2) 、Criteo、Avazu's和Outbrain在 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) |
使用已定 |
GetOutputSchema(SchemaShape) |
轉換器的架構傳播。 如果輸入架構與所提供的架構類似,則傳回資料的輸出架構。 |
擴充方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
將「快取檢查點」附加至估算器鏈結。 這可確保下游估算器會針對快取的資料定型。 在接受多個資料通過的定型器之前,擁有快取檢查點會很有説明。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
假設有估算器,則會傳回包裝物件,一旦 Fit(IDataView) 呼叫委派即可。 估算器通常必須傳回符合專案的相關資訊,這就是方法 Fit(IDataView) 傳回特定型別物件的原因,而不是只傳回一般 ITransformer 。 不過,同時 IEstimator<TTransformer> ,通常會形成具有許多物件的管線,因此我們可能需要透過 EstimatorChain<TLastTransformer> 建置估算器的鏈結,而我們想要取得轉換器的估算器會在此鏈結的某處被隱藏。 在該案例中,我們可以透過此方法附加呼叫一次將會呼叫的委派。 |
適用於
另請參閱
- FieldAwareFactorizationMachineTrainer.Options
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)