Aracılığıyla paylaş


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 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ı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) bir MatrixFactorizationPredictionTransformereğitip döndürür.
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.

Şunlara uygulanır

Ayrıca bkz.