MatrixFactorizationTrainer 類別

定義

使用 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
實作

備註

若要建立此定型器,請使用 MatrixFactorizationMatrixFactorization (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 矩陣分解的基礎程式庫。

如需對數學詳細資料有興趣的使用者,請參閱下列參考。

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

屬性

Info

TrainerInfo包含此定型者的一般參數。

方法

Fit(IDataView) 定型並傳 MatrixFactorizationPredictionTransformer 回 。
Fit(IDataView, IDataView)

MatrixFactorizationTrainer使用定型和驗證資料來定型 , 會 MatrixFactorizationPredictionTransformer 傳回 。

GetOutputSchema(SchemaShape)

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

適用於

另請參閱