MatrixFactorizationTrainer Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
- Untuk implementasi multi-threading dari metode gradien stochastic yang digunakan, lihat Metode Gradien Stochastic Paralel Cepat untuk Faktorisasi Matriks di Sistem Memori Bersama.
- Untuk komputasi yang terjadi di dalam satu utas, lihat Jadwal Laju Pembelajaran untuk Metode Gradien Stochastic ke Faktorisasi Matriks.
- Untuk metode turunan koordinat paralel yang digunakan dan rumus faktorisasi matriks satu kelas, lihat Pemilihan Sampel Negatif untuk Faktorisasi Matriks Satu Kelas.
- Untuk detail di pustaka yang mendasar yang digunakan, lihat LIBMF: Pustaka untuk Faktorisasi Matriks Paralel di Sistem Memori Bersama.
Periksa bagian Lihat Juga untuk tautan ke contoh penggunaan.
Properti
Info |
TrainerInfo berisi parameter umum untuk pelatih ini. |
Metode
Fit(IDataView) |
|
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. |