MatrixFactorizationTrainer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
使用 IEstimator<TTransformer> 矩陣分解來預測矩陣中元素的 (也稱為 共同作業篩選 類型) 。
public sealed class MatrixFactorizationTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer>, Microsoft.ML.Trainers.ITrainerEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer,Microsoft.ML.Trainers.Recommender.MatrixFactorizationModelParameters>
type MatrixFactorizationTrainer = class
interface ITrainerEstimator<MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters>
interface IEstimator<MatrixFactorizationPredictionTransformer>
Public NotInheritable Class MatrixFactorizationTrainer
Implements IEstimator(Of MatrixFactorizationPredictionTransformer), ITrainerEstimator(Of MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters)
- 繼承
-
MatrixFactorizationTrainer
- 實作
備註
若要建立此定型器,請使用 MatrixFactorization 或 MatrixFactorization (Options) 。
輸入和輸出資料行
需要三個輸入資料行,一個用於矩陣資料列索引,一個用於矩陣資料行索引,另一個用於矩陣 (,也就是矩陣中的標籤) 。 它們會以 COO 格式一起定義矩陣。 標籤資料行的類型是 的向量 Single ,而其他兩個數據行則是 索引鍵 類型純量。
輸出資料行名稱 | 資料行類型 | 描述 |
---|---|---|
Score |
Single | 輸入資料行所指定位置的預測矩陣值, (資料列索引資料行和資料行索引資料行) 。 |
定型器特性
機器學習工作 | 推薦系統 |
是否需要正規化? | Yes |
是否需要快取? | Yes |
除了 Microsoft.ML 之外,還需要 NuGet | Microsoft.ML.Recommender |
可匯出至 ONNX | 否 |
背景
矩陣分解的基本概念是尋找兩個低階因數矩陣,以近似定型矩陣。 在此課程模組中, (因數化矩陣) 的預期定型資料是 Tuple 的清單。 每個 Tuple 都包含資料行索引、資料列索引,以及兩個索引所指定位置的值。 如需 Tuple 的範例資料結構,可以使用:
// The following variables defines the shape of a m-by-n matrix. Indexes start with 0; that is, our indexing system
// is 0-based.
const int m = 60;
const int n = 100;
// A tuple of row index, column index, and rating. It specifies a value in the rating matrix.
class MatrixElement
{
// Matrix column index starts from 0 and is at most n-1.
[KeyType(n)]
public uint MatrixColumnIndex;
// Matrix row index starts from 0 and is at most m-1.
[KeyType(m)]
public uint MatrixRowIndex;
// The rating at the MatrixColumnIndex-th column and the MatrixRowIndex-th row.
public float Value;
}
請注意,不需要在定型矩陣中指定所有專案,因此矩陣分解可用來填滿 遺漏的值。 建置推薦系統時,此行為非常有用。
為了進一步瞭解矩陣分解的實際用途,讓我們將音樂建議視為範例。 假設使用者識別碼和音樂識別碼分別用來作為資料列和資料行索引,而矩陣的值則由這些使用者提供。 也就是說,在資料列 $u$ 和資料行 $v$ 評分 $r$ 表示使用者 $u$ 將 $r$ 提供給 item $v$。 不完整的矩陣非常常見,因為並非所有使用者都會提供意見反應給所有產品 (,例如,沒有人可以) 評分 100 萬首歌曲。 假設 $R\in{\mathbb R}^{m\times n}$ 是 m-by-n 評等矩陣,而兩個因素矩陣的 排名 則$P\in {\mathbb R}^{k\times m}$ 和 $Q\in {\mathbb R}^{k\times n}$,其中 $k$ 是近似排名。 $u$列和 $R$ 中第$v$個數據行的預測評等,會是 $P$ $u$列的內部乘積,以及 $Q$ 的第$v$列;也就是說,$R$ 是$P$轉置 ($P^T$) 和 $Q$ 的乘積。 請注意,$k$ 通常小於 $m$ 和 $n$,因此 $P^T Q$ 通常稱為低階近似值 $R$。
此定型器包含隨機漸層方法和座標下降方法,可用來尋找 $P$ 和 $Q$,方法是將) $R$ (非遺漏部分與其近似值$P^T Q$ 之間的距離降至最低。 包含的座標下降方法特別適用于單一類別矩陣分解,其中所有觀察到的評等都是正訊號 (,也就是所有評等值都是 1) 。 請注意,叫用單一類別矩陣分解的唯一方法是在呼叫MatrixFactorization (Options) 時,將一個類別的遺失指派給遺失函式。 如需標準矩陣分解和單類矩陣分解的簡介,請參閱 這裡的 第 6 頁和第 28 頁。 預設設定會引發標準矩陣分解。 您可以在 Github 存放庫上找到用於 ML.NET 矩陣分解的基礎程式庫。
如需對數學詳細資料有興趣的使用者,請參閱下列參考。
- 如需已使用之隨機漸層方法的多執行緒實作,請參閱 共用記憶體系統中矩陣分解的快速平行隨機漸層方法。
- 如需在單一線程內發生的計算,請參閱 隨機漸層方法的學習速率排程至矩陣分解。
- 如需使用的平行座標下降方法和單一類別矩陣分解公式,請參閱 單一類別矩陣分解的負樣本選擇。
- 如需所使用基礎程式庫中的詳細資訊,請參閱 LIBMF:共用記憶體系統中平行矩陣分解的程式庫。
如需使用範例的連結,請參閱另請參閱一節。
屬性
Info |
TrainerInfo包含此定型者的一般參數。 |
方法
Fit(IDataView) |
|
Fit(IDataView, IDataView) |
MatrixFactorizationTrainer使用定型和驗證資料來定型 , 會 MatrixFactorizationPredictionTransformer 傳回 。 |
GetOutputSchema(SchemaShape) |
轉換器的架構傳播。 如果輸入架構與提供的輸入架構類似,則傳回資料的輸出架構。 |