Dil

MatrixFactorizationTrainer Sınıf

Tanım

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ı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) Bir eğitip döndürür MatrixFactorizationPredictionTransformer.
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.

Şunlara uygulanır

Ayrıca bkz.