MatrixFactorizationTrainer Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
IEstimator<TTransformer> Matris çarpanlarını kullanarak matristeki öğeleri tahmin etme (işbirliğine dayalı filtreleme türü olarak da bilinir).
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)
- Devralma
-
MatrixFactorizationTrainer
- Uygulamalar
Açıklamalar
Bu eğitmeni oluşturmak için MatrixFactorization veya MatrixFactorization(Options) kullanın.
Giriş ve Çıkış Sütunları
Biri matris satır dizinleri, biri matris sütun dizinleri ve biri matristeki değerler (etiketler) için üç giriş sütunu gereklidir. Birlikte COO biçiminde bir matris tanımlarlar. Etiket sütununun türü vektörken Single , diğer iki sütun anahtar türü skaler olur.
Çıkış Sütunu Adı | Sütun Türü | Description |
---|---|---|
Score |
Single | Giriş sütunları tarafından belirtilen konumda tahmin edilen matris değeri (satır dizini sütunu ve sütun dizin sütunu). |
Eğitmen Özellikleri
Makine öğrenmesi görevi | Önerilen sistemler |
Normalleştirme gerekli mi? | Yes |
Önbelleğe alma gerekli mi? | Yes |
Microsoft.ML ek olarak gerekli NuGet | Microsoft.ML.Recommender |
ONNX'e aktarılabilir | No |
Arka Plan
Matris çarpanlarına ayırmanın temel fikri, eğitim matrisine yaklaşık olarak iki düşük dereceli faktör matrisi bulmaktır. Bu modülde beklenen eğitim verileri (faktörize matris) tanımlama grubu listesidir. Her tanımlama grubu bir sütun dizininden, satır dizininden ve iki dizin tarafından belirtilen konumdaki değerden oluşur. Bir tanımlama grubunun örnek veri yapısı için şunu kullanabilirsiniz:
// 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;
}
Eksik değerleri doldurmak için matris çarpanlarına ayırmanın kullanılabilmesi için eğitim matrisindeki tüm girişlerin belirtilmesi gerekmediğine dikkat edin. Bu davranış, önerilen sistemler oluştururken çok yararlıdır.
Matris çarpanlarına ayırmanın pratik kullanımlarını daha iyi anlamak için örnek olarak müzik önerisini ele alalım. Sırasıyla satır ve sütun dizinleri olarak kullanıcı kimliklerinin ve müzik kimliklerinin kullanıldığını ve matrisin değerlerinin bu kullanıcılar tarafından sağlanan derecelendirmeler olduğunu varsayalım. Yani, $u$ satırında $r$ derecelendirmesi ve $v$ sütunu, kullanıcı $u$ değerinin $v$ öğesine $r$ vermesi anlamına gelir. Eksik matris çok yaygındır çünkü tüm kullanıcılar tüm ürünlere geri bildirim sağlayamayabilir (örneğin, kimse on milyon şarkı derecelendiremez). $R\in{\mathbb R}^{m\times n}$ değerinin bir m-by-n derecelendirme matrisi olduğunu ve iki faktör matrisinin derecesinin {\mathbb R}^{k\times m}$ içinde $P\ve {\mathbb R}^{k\times n}$ içinde $Q\olduğunu ve burada $k$ değerinin yaklaşık tahmin sıralaması olduğunu varsayalım. $u$-th satırında tahmin edilen derecelendirme ve $R$ içindeki $v$-th sütunu, $P$ $u$-th satırının iç ürünü ve $Q$ değerinin $v$-th satırı olacaktır; yani, $R$, $P$'ın dönüşümünün ($P^T$) ve $Q$ çarpımının yaklaşık değeridir. $k$ değerinin genellikle $m$ ve $n$ değerinden çok daha küçük olduğunu unutmayın; bu nedenle $P^T Q$ genellikle $R$ değerinin düşük dereceli tahmini olarak adlandırılır.
Bu eğitmen bir stokastik gradyan yöntemi ve $R$ arasındaki mesafeyi en aza indirerek $P$ ve $Q$ bulmak için bir koordinat azalma yöntemi $R$ ve yaklaşık $P^T Q$ içerir. Dahil edilen koordinat azalma yöntemi, gözlemlenen tüm derecelendirmelerin pozitif sinyaller olduğu (yani tüm derecelendirme değerlerinin 1 olduğu) tek sınıflı matris çarpanlarına yöneliktir. Tek sınıflı matris çarpanlarını çağırmanın tek yolunun MatrixFactorization(Options) çağrılırken kayıp işlevinetek sınıflık kare kaybı atamak olduğuna dikkat edin. Standart matris çarpanlarına ayırma ve tek sınıf matris faktörizasyonuna kısa bir giriş için buradaki Sayfa 6 ve Sayfa 28'e bakın. Varsayılan ayar, standart matris çarpanlarına ayırmayı sağlar. ML.NET matris çarpanlarına ayırmada kullanılan temel kitaplık github deposunda bulunabilir.
Matematiksel ayrıntılarla ilgilenen kullanıcılar için lütfen aşağıdaki başvurulara bakın.
- Kullanılan stokastik gradyan yönteminin çok iş parçacıklı uygulaması için bkz. Paylaşılan Bellek Sistemlerinde Matris Çarpanlarına Ayırma için Hızlı Paralel Stokastik Gradyan Yöntemi.
- Tek bir iş parçacığında gerçekleşen hesaplama için bkz. Matris Faktörizasyonu için Stokastik Gradyan Yöntemleri için Öğrenme Hızı Zamanlaması.
- Kullanılan paralel koordinat azalma yöntemi ve tek sınıflı matris çarpanlarına ayırma formülü için bkz. Tek Sınıflı Matris Çarpanları Için Negatif Örneklerin Seçimi.
- Kullanılan temel kitaplıkta ayrıntılar için bkz. LIBMF: Paylaşılan bellek Sistemlerinde Paralel Matris Çarpanları Çarpanlarına Ayırma kitaplığı.
Kullanım örneklerinin bağlantıları için Ayrıca Bkz. bölümüne bakın.
Özellikler
Info |
bu TrainerInfo eğitmen için genel parametreler içerir. |
Yöntemler
Fit(IDataView) |
|
Fit(IDataView, IDataView) |
Hem eğitim hem de doğrulama verilerini kullanarak bir MatrixFactorizationTrainer eğiter, döndürür MatrixFactorizationPredictionTransformer. |
GetOutputSchema(SchemaShape) |
Transformatörler için şema yayma. Giriş şeması sağlanan şemaya benziyorsa, verilerin çıkış şemasını döndürür. |