MatrixFactorizationTrainer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
- Para a implementação de vários threadings do método de gradiente estocástico usado, consulte Um método Gradiente stocástico rápido paralelo para fatorização de matriz em sistemas de memória compartilhada.
- Para obter a computação que ocorre dentro de um único thread, consulte Uma Agenda de taxa de aprendizagem para métodos de gradiente stocásticos para fatorização de matriz.
- Para o método descendente de coordenadas paralelas usado e a fórmula de fatoração de matriz de uma classe, consulte Seleção de exemplos negativos para fatorização de matriz de uma classe.
- Para obter detalhes na biblioteca subjacente usada, consulte LIBMF: A Library for Parallel Matrix Factorization in Shared-memory Systems.
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) |
|
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. |