Compartilhar via


MatrixFactorizationTrainer Classe

Definição

O IEstimator<TTransformer> para prever elementos em uma matriz usando a fatoração de matriz (também conhecida como um tipo de filtragem colaborativa).

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)
Herança
MatrixFactorizationTrainer
Implementações

Comentários

Para criar esse treinador, use MatrixFactorization ou MatrixFactorization(Options).

Colunas de entrada e saída

Há três colunas de entrada necessárias, uma para índices de linha de matriz, uma para índices de coluna de matriz e outra para valores (ou seja, rótulos) na matriz. Juntos, eles definem uma matriz no formato COO . O tipo de coluna de rótulo é um vetor de Single , enquanto as outras duas colunas são escalares de tipo de chave .

Nome da Coluna de Saída Tipo de coluna Descrição
Score Single O valor de matriz previsto no local especificado pelas colunas de entrada (coluna de índice de linha e coluna de índice).

Características do Treinador

Ferramenta de machine learning Sistemas de recomendação
A normalização é necessária? Sim
O cache é necessário? Sim
NuGet necessário além de Microsoft.ML Microsoft.ML.Recommender
Exportável para ONNX Não

Segundo plano

A ideia básica da factorização de matriz é encontrar duas matrizes de fator de baixa classificação para aproximar a matriz de treinamento. Neste módulo, os dados de treinamento esperados (a matriz fatorada) são uma lista de tuplas. Cada tupla consiste em um índice de coluna, um índice de linha e o valor no local especificado pelos dois índices. Para obter um exemplo de estrutura de dados de uma tupla, é possível usar:

// 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;
}

Observe que não é necessário especificar todas as entradas na matriz de treinamento, portanto, a fatoração de matriz pode ser usada para preencher valores ausentes. Esse comportamento é muito útil ao criar sistemas recomendados.

Para fornecer uma melhor compreensão sobre os usos práticos da fatoração de matriz, vamos considerar a recomendação de música como um exemplo. Suponha que as IDs de usuário e as IDs de música sejam usadas como índices de linha e coluna, respectivamente, e os valores da matriz sejam classificações fornecidas por esses usuários. Ou seja, classificar $r$ na linha $u$ e $v$ de coluna significa que o usuário $u$ dá $r$ ao item $v$. Uma matriz incompleta é muito comum porque nem todos os usuários podem fornecer seus comentários a todos os produtos (por exemplo, ninguém pode classificar dez milhões de músicas). Suponha que $R\in{\mathbb R}^{m\times n}$ é uma matriz de classificação m-by-n e a classificação das matrizes de dois fatores é $P\in {\mathbb R}^{k\times m}$ e $Q\in {\mathbb R}^{k\times n}$, onde $k$ é a classificação de aproximação. A classificação prevista na linha $u$-th e a coluna $v$-th em $R$ seria o produto interno da linha $u$-th de $P$ e a linha $v$-th de $Q$; ou seja, $R$ é aproximado pelo produto do transpose de $P$($P^T$) e $Q$. Observe que $k$ geralmente é muito menor que $m$ e $n$, portanto, $P^T Q$ geralmente é chamado de aproximação de baixa classificação de $R$.

Este treinador inclui um método de gradiente estocástico e um método descendente de coordenadas para localizar $P$ e $Q$ por meio da minimização da distância entre (parte não ausente de) $R$ e sua aproximação $P^T Q$. O método de descida de coordenadas incluído é especificamente para fatorização de matriz de uma classe em que todas as classificações observadas são sinais positivos (ou seja, todos os valores de classificação são 1). Observe que a única maneira de invocar a fatoração de matriz de uma classe é atribuir a perda quadrada de uma classe à função de perda ao chamar MatrixFactorization(Options). Consulte a Página 6 e a Página 28 aqui para obter uma breve introdução à fatorização de matriz padrão e à fatoração de matriz de uma classe. A configuração padrão induz a fatoração de matriz padrão. A biblioteca subjacente usada em ML.NET fatoração de matriz pode ser encontrada em um repositório Github.

Para usuários interessados nos detalhes matemáticos, consulte as referências abaixo.

Verifique a seção Consulte Também para obter links para exemplos de uso.

Propriedades

Info

O TrainerInfo contém parâmetros gerais para este treinador.

Métodos

Fit(IDataView) Treina e retorna um MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

Treina um MatrixFactorizationTrainer usando dados de treinamento e validação, retorna um MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

Propagação de esquema para transformadores. Retorna o esquema de saída dos dados, se o esquema de entrada for semelhante ao fornecido.

Aplica-se a

Confira também