Bagikan melalui


MatrixFactorizationTrainer Kelas

Definisi

IEstimator<TTransformer> untuk memprediksi elemen dalam matriks menggunakan faktorisasi matriks (juga dikenal sebagai jenis pemfilteran kolaboratif).

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)
Warisan
MatrixFactorizationTrainer
Penerapan

Keterangan

Untuk membuat pelatih ini, gunakan MatrixFactorization atau MatrixFactorization(Options).

Kolom Input dan Output

Ada tiga kolom input yang diperlukan, satu untuk indeks baris matriks, satu untuk indeks kolom matriks, dan satu untuk nilai (yaitu, label) dalam matriks. Mereka bersama-sama mendefinisikan matriks dalam format COO . Jenis untuk kolom label adalah vektor Single sementara dua kolom lainnya adalah skalar jenis kunci .

Nama Kolom Output Jenis Kolom Deskripsi
Score Single Nilai matriks yang diprediksi di lokasi yang ditentukan oleh kolom input (kolom indeks baris dan kolom kolom).

Karakteristik Pelatih

Tugas pembelajaran mesin Sistem pemberi rekomendasi
Apakah normalisasi diperlukan? Ya
Apakah penembolokan diperlukan? Ya
NuGet yang diperlukan selain Microsoft.ML Microsoft.ML.Recommender
Dapat diekspor ke ONNX Tidak

Background

Ide dasar faktorisasi matriks adalah menemukan dua matriks faktor peringkat rendah untuk memperkirakan matriks pelatihan. Dalam modul ini, data pelatihan yang diharapkan (matriks yang difaktorkan) adalah daftar tuple. Setiap tuple terdiri dari indeks kolom, indeks baris, dan nilai di lokasi yang ditentukan oleh dua indeks. Misalnya struktur data tuple, seseorang dapat menggunakan:

// 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;
}

Perhatikan bahwa tidak perlu menentukan semua entri dalam matriks pelatihan, sehingga faktorisasi matriks dapat digunakan untuk mengisi nilai yang hilang. Perilaku ini sangat membantu saat membangun sistem pemberi rekomendasi.

Untuk memberikan pemahaman yang lebih baik tentang penggunaan praktis faktorisasi matriks, mari kita pertimbangkan rekomendasi musik sebagai contoh. Asumsikan bahwa ID pengguna dan ID musik digunakan sebagai indeks baris dan kolom, masing-masing, dan nilai matriks adalah peringkat yang disediakan oleh pengguna tersebut. Artinya, peringkat $r$ pada baris $u$ dan kolom $v$ berarti bahwa pengguna $u$ memberikan $r$ ke item $v$. Matriks yang tidak lengkap sangat umum karena tidak semua pengguna dapat memberikan umpan balik mereka ke semua produk (misalnya, tidak ada yang dapat menilai sepuluh juta lagu). Asumsikan bahwa $R\in{\mathbb R}^{m\times n}$ adalah matriks peringkat m-by-n dan peringkat dua matriks faktor $P\di {\mathbb R}^{k\times m}$ dan $Q\in {\mathbb R}^{k\times n}$, di mana $k$ adalah peringkat perkiraan. Peringkat yang diprediksi pada baris $u$-th dan kolom $v$-th di $R$ akan menjadi produk dalam baris $u$-th $P$ dan baris $v$-th $Q$; artinya, $R$ diperkirakan oleh produk transpose $P$($P^T$) dan $Q$. Perhatikan bahwa $k$ biasanya jauh lebih kecil dari $m$ dan $n$, jadi $P^T Q$ biasanya disebut perkiraan peringkat rendah $R$.

Pelatih ini mencakup metode gradien stochastic dan metode turunan koordinat untuk menemukan $P$ dan $Q$ melalui meminimalkan jarak antara (bagian yang tidak hilang dari) $R$ dan perkiraannya $P^T Q$. Metode turunan koordinat yang disertakan khusus untuk faktorisasi matriks satu kelas di mana semua peringkat yang diamati adalah sinyal positif (artinya, semua nilai peringkat adalah 1). Perhatikan bahwa satu-satunya cara untuk memanggil faktorisasi matriks satu kelas adalah dengan menetapkan fungsikehilangan kuadrat satu kelas saat memanggil MatrixFactorization(Options). Lihat Halaman 6 dan Halaman 28 di sini untuk pengantar singkat faktorisasi matriks standar dan faktorisasi matriks satu kelas. Pengaturan default menginduksi faktorisasi matriks standar. Pustaka dasar yang digunakan dalam ML.NET faktorisasi matriks dapat ditemukan di repositori Github.

Untuk pengguna yang tertarik dengan detail matematika, silakan lihat referensi di bawah ini.

Periksa bagian Lihat Juga untuk tautan ke contoh penggunaan.

Properti

Info

TrainerInfo berisi parameter umum untuk pelatih ini.

Metode

Fit(IDataView) Melatih dan mengembalikan MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

MatrixFactorizationTrainer Melatih menggunakan data pelatihan dan validasi, mengembalikan MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

Penyebaran skema untuk transformator. Mengembalikan skema output data, jika skema input seperti yang disediakan.

Berlaku untuk

Lihat juga