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 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.
- 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 penurunan 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
| 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) |
|
| 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. |