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 menentukan matriks dalam format COO . Jenis untuk kolom label adalah vektor Single sementara dua kolom lainnya adalah skalar jenis kunci .

Nama Kolom Output Tipe Kolom Description
Score Single Nilai matriks yang diprediksi di lokasi yang ditentukan oleh kolom input (kolom indeks baris dan kolom indeks 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

Latar belakang

Ide dasar faktorisasi matriks adalah menemukan dua matriks faktor peringkat rendah untuk memperkirakan matriks pelatihan. Dalam modul ini, data pelatihan yang diharapkan (matriks faktor) adalah daftar tuple. Setiap tuple terdiri dari indeks kolom, indeks baris, dan nilai di lokasi yang ditentukan oleh dua indeks. Untuk contoh 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 $ untuk 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 dari baris $u$-th $P$ dan baris $v$-th dari $Q$; yaitu, $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 turun koordinat untuk menemukan $P$ dan $Q$ melalui meminimalkan jarak antara (bagian yang tidak hilang dari) $R$ dan perkiraannya $P^T Q$. Metode penurunan koordinat yang disertakan khusus untuk faktorisasi matriks satu kelas di mana semua peringkat yang diamati adalah sinyal positif (yaitu, semua nilai peringkat adalah 1). Perhatikan bahwa satu-satunya cara untuk memanggil faktorisasi matriks satu kelas adalah dengan menetapkan kehilangan kuadrat satu kelas ke fungsi kehilangan 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 yang mendasar yang digunakan dalam faktorisasi matriks ML.NET 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

Nama Deskripsi
Info

TrainerInfo berisi parameter umum untuk pelatih ini.

Metode

Nama Deskripsi
Fit(IDataView, IDataView)

MatrixFactorizationTrainer Melatih menggunakan data pelatihan dan validasi, mengembalikan MatrixFactorizationPredictionTransformer.

Fit(IDataView) Melatih dan mengembalikan MatrixFactorizationPredictionTransformer.
GetOutputSchema(SchemaShape)

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

Metode Ekstensi

Nama Deskripsi
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Tambahkan 'titik pemeriksaan penembolokan' ke rantai estimator. Ini akan memastikan bahwa estimator hilir akan dilatih terhadap data cache. Sangat membantu untuk memiliki titik pemeriksaan penembolokan sebelum pelatih yang mengambil beberapa data lolos.

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

Mengingat estimator, kembalikan objek pembungkus yang akan memanggil delegasi setelah Fit(IDataView) dipanggil. Seringkali penting bagi estimator untuk mengembalikan informasi tentang apa yang cocok, itulah sebabnya Fit(IDataView) metode mengembalikan objek yang di ketik secara khusus, bukan hanya umum ITransformer. Namun, pada saat yang sama, IEstimator<TTransformer> sering dibentuk menjadi alur dengan banyak objek, jadi kita mungkin perlu membangun rantai estimator melalui EstimatorChain<TLastTransformer> tempat estimator yang ingin kita dapatkan transformator dikubur di suatu tempat dalam rantai ini. Untuk skenario itu, kita dapat melalui metode ini melampirkan delegasi yang akan dipanggil setelah cocok dipanggil.

Berlaku untuk

Lihat juga