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 gerekir. 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 dizini sütunu). |
Eğitmen Özellikleri
| Makine öğrenmesi görevi | Öneren sistemler |
| Normalleştirme gerekli mi? | Evet |
| Önbelleğe alma gerekli mi? | Evet |
| Microsoft.ML'ye ek olarak gerekli NuGet | Microsoft.ML.Recommender |
| ONNX'e aktarılabilir | Hayır |
Background
Matris faktörleştirmesinin temel fikri, eğitim matrisini yaklaşık olarak bulmak için 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 şunları 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 faktörizasyonu kullanılabilmesi için eğitim matrisindeki tüm girişlerin belirtilmesi gerekmediğine dikkat edin. Bu davranış, öneren sistemler oluştururken çok yararlıdır.
Matris faktörizasyonunun pratik kullanımları hakkında daha iyi bir anlayış sağlamak için örnek olarak müzik önerisini ele alalım. Kullanıcı kimliklerinin ve müzik kimliklerinin sırasıyla satır ve sütun dizinleri olarak kullanıldığını ve matrisin değerlerinin bu kullanıcılar tarafından sağlanan derecelendirmeler olduğunu varsayalım. Başka bir deyişle, $u$ satırı ve $v$ sütununda $r$ derecelendirmesi, kullanıcı $u$ değerinin $v$ öğesine $r$ vermesi anlamına gelir. Tamamlanmamış matris çok yaygındır çünkü tüm kullanıcılar tüm ürünlere geri bildirim sağlayamayabilir (örneğin, hiç kimse on milyon şarkı derecelendiremez). $R\in{\mathbb R}^{m\times n}$ değerinin m-by-n derecelendirme matrisi olduğunu ve iki faktörlü matrisin 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üştürme ($P^T$) ve $Q$ çarpımının yaklaşık değeridir. $k$ genellikle $m$ ve $n$ değerinden çok daha küçük olduğundan, $P^T Q$ genellikle $R$ değerinin düşük dereceli tahmini olarak adlandırılır.
Bu eğitmen, $R$ ile yaklaşık $P^T Q$ arasındaki mesafeyi en aza indirerek $P$ ve $Q$ bulmak için bir stochastic gradyan yöntemi ve koordinat azalma yöntemi 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 faktörizasyonunu çağırmanın tek yolunun MatrixFactorization(Options) çağrılırken kayıp işlevinetek sınıflık bir kayıp atamak olduğuna dikkat edin. Standart matris faktörizasyonuna ve tek sınıflı matris faktörizasyonuna kısa bir giriş için buradaki Sayfa 6 ve Sayfa 28'e bakın. Varsayılan ayar, standart matris faktörizasyonunu sağlar. ML.NET matris faktörizasyonunda 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 Faktörizasyonu 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 faktörizasyon formülü için bkz. Tek Sınıflı Matris Faktörizasyonu için Negatif Örneklerin Seçimi.
- Kullanılan temel kitaplığın ayrıntıları için bkz. LIBMF: Paylaşılan bellek Sistemlerinde Paralel Matris Faktörizasyonu için Bir Kitaplık.
Kullanım örneklerinin bağlantıları için Ayrıca Bkz. bölümüne bakın.
Özellikler
| Name | Description |
|---|---|
| Info |
bu TrainerInfo eğitmen için genel parametreler içerir. |
Yöntemler
| Name | Description |
|---|---|
| Fit(IDataView, IDataView) |
Hem eğitim hem de doğrulama verilerini kullanarak bir MatrixFactorizationTrainer eğiterek bir MatrixFactorizationPredictionTransformerdöndürür. |
| Fit(IDataView) |
|
| GetOutputSchema(SchemaShape) |
Transformatörler için şema yayma. Giriş şeması sağlanan şema gibiyse, verilerin çıkış şemasını döndürür. |
Uzantı Metotları
| Name | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Tahmin zincirine bir 'önbelleğe alma denetim noktası' ekler. Bu, aşağı akış tahmincilerinin önbelleğe alınmış verilere karşı eğitilmesini sağlar. Birden fazla veri alan eğitmenler geçişten önce bir önbelleğe alma kontrol noktasının olması yararlıdır. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Tahmin aracı verildiğinde, bir temsilci çağrıldıktan sonra Fit(IDataView) çağıracak bir sarmalama nesnesi döndürün. Tahmin aracının neyin uygun olduğu hakkında bilgi döndürmesi genellikle önemlidir. Bu nedenle Fit(IDataView) yöntem yalnızca genel ITransformerbir nesne yerine özel olarak yazılan bir nesne döndürür. Bununla birlikte, aynı zamanda, IEstimator<TTransformer> genellikle birçok nesne içeren işlem hatları halinde oluşturulur, bu nedenle transformatörü almak istediğimiz tahmin aracının EstimatorChain<TLastTransformer> bu zincirde bir yere gömüldüğü bir tahmin zinciri oluşturmamız gerekebilir. Bu senaryo için, bu yöntem aracılığıyla uygun çağrıldıktan sonra çağrılacak bir temsilci ekleyebiliriz. |