MatrixFactorizationTrainer Classe

Definição

Os IEstimator<TTransformer> elementos a serem previstos em uma matriz usando a factorizaçã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

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

Tela de fundo

A ideia básica de fatorizaçã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 factorizaçã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 factorização de matriz, vamos considerar a recomendação musical como um exemplo. Suponha que IDs de usuário e 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 coluna $v$ 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 do 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 e um método de descida de coordenadas para localizar $P$ e $Q$ por meio da minimização da distância entre (parte não ausente) $R$ e sua aproximação $P^T Q$. O método de descida de coordenadas incluído é especificamente para a factorizaçã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 factorização de matriz de uma classe é atribuir uma classe de perda quadrada à 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 à fatorização de matriz de uma classe. A configuração padrão induz a factorizaçã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 os 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

Nome Description
Info

Contém TrainerInfo parâmetros gerais para este treinador.

Métodos

Nome Description
Fit(IDataView, IDataView)

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

Fit(IDataView) Treina e 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 como o fornecido.

Métodos de Extensão

Nome Description
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Acrescente um 'ponto de verificação de cache' à cadeia do avaliador. Isso garantirá que os avaliadores downstream serão treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que têm várias passagens de dados.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Dado um avaliador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) chamado. Geralmente, é importante que um avaliador retorne informações sobre o que estava em forma, e é por isso que o Fit(IDataView) método retorna um objeto especificamente tipado, em vez de apenas um geral ITransformer. No entanto, ao mesmo tempo, IEstimator<TTransformer> muitas vezes são formados em pipelines com muitos objetos, portanto, talvez seja necessário criar uma cadeia de avaliadores por meio EstimatorChain<TLastTransformer> de onde o avaliador para o qual queremos obter o transformador está enterrado em algum lugar nessa cadeia. Para esse cenário, podemos por meio desse método anexar um delegado que será chamado assim que o ajuste for chamado.

Aplica-se a

Confira também