MatrixFactorizationTrainer Clase

Definición

que IEstimator<TTransformer> se va a predecir los elementos de una matriz mediante la factorización de matriz (también conocido como un tipo de filtrado colaborativo).

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)
Herencia
MatrixFactorizationTrainer
Implementaciones

Comentarios

Para crear este instructor, use MatrixFactorization o MatrixFactorization(Options).

Columnas de entrada y salida

Hay tres columnas de entrada necesarias, una para los índices de fila de matriz, otra para los índices de columna de matriz y otra para los valores (es decir, etiquetas) de la matriz. Juntos definen una matriz en formato COO . El tipo de columna de etiqueta es un vector de Single mientras que las otras dos columnas son escalares de tipo clave .

Nombre de columna de salida Tipo de columna Descripción
Score Single Valor de matriz predicho en la ubicación especificada por columnas de entrada (columna de índice de fila y columna de índice de columna).

Características del entrenador

Tarea de Machine Learning Sistemas de recomendación
¿Se requiere normalización?
¿Se requiere el almacenamiento en caché?
NuGet necesario además de Microsoft.ML Microsoft.ML.Recommender
Exportable a ONNX No

Información previa

La idea básica de factorización de matriz es encontrar dos matrices de factor de clasificación baja para aproximar la matriz de entrenamiento. En este módulo, los datos de entrenamiento esperados (la matriz factorizada) son una lista de tuplas. Cada tupla consta de un índice de columna, un índice de fila y el valor en la ubicación especificada por los dos índices. Para obtener un ejemplo de estructura de datos de una tupla, se puede 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;
}

Tenga en cuenta que no es necesario especificar todas las entradas de la matriz de entrenamiento, por lo que la factorización de matriz se puede usar para rellenar los valores que faltan. Este comportamiento es muy útil al crear sistemas de recomendación.

Para proporcionar una mejor comprensión sobre los usos prácticos de factorización de matriz, consideremos la recomendación de música como ejemplo. Supongamos que los identificadores de usuario y los identificadores de música se usan como índices de fila y columna, respectivamente, y los valores de matriz son clasificaciones proporcionadas por esos usuarios. Es decir, la clasificación $r$ en la fila $u$ y la columna $v$ significa que el usuario $u$ da $r$ al elemento $v$. Una matriz incompleta es muy común porque no todos los usuarios pueden proporcionar sus comentarios a todos los productos (por ejemplo, nadie puede valorar diez millones de canciones). Supongamos que $R\in{\mathbb R}^{m\times n}$ es una matriz de clasificación m-by-n y la clasificación de las dos matrices de factor son $P\in {\mathbb R}^{k\times m}$ y $Q\in {\mathbb R}^{k\times n}$, donde $k$ es la clasificación de aproximación. La clasificación prevista en la fila $u$-th y la columna $v$-th en $R$ sería el producto interno de la fila $u$-ésima de $P$ y la fila $v$-ésima de $Q$; es decir, $R$ se aproxima al producto de la transposición de $P$($P^T$) y $Q$. Tenga en cuenta que $k$ suele ser mucho menor que $m$ y $n$, por lo que $P^T Q$ suele denominar una aproximación de rango bajo de $R$.

Este instructor incluye un método de degradado estocástico y un método de descenso de coordenadas para encontrar $P$ y $Q$ a través de minimizar la distancia entre (parte que no falta) $R$ y su aproximación $P^T Q$. El método de descenso de coordenadas incluido es específicamente para la factorización de matriz de una clase donde todas las clasificaciones observadas son señales positivas (es decir, todos los valores de clasificación son 1). Observe que la única manera de invocar la factorización de matriz de una clase es asignar una pérdida cuadrada de clase a la función de pérdida al llamar a MatrixFactorization(Options). Consulte la página 6 y la página 28 aquí para obtener una breve introducción a la factorización de matriz estándar y la factorización de matriz de una clase. El valor predeterminado induce la factorización de matriz estándar. La biblioteca subyacente usada en ML.NET factorización de matriz se puede encontrar en un repositorio de Github.

Para los usuarios interesados en los detalles matemáticos, consulte las referencias siguientes.

Consulte la sección Consulte también los vínculos a ejemplos de uso.

Propiedades

Info

TrainerInfo contiene parámetros generales para este instructor.

Métodos

Fit(IDataView) Entrena y devuelve un MatrixFactorizationPredictionTransformerobjeto .
Fit(IDataView, IDataView)

Entrena un MatrixFactorizationTrainer objeto mediante datos de entrenamiento y validación, devuelve un MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

Propagación de esquemas para transformadores. Devuelve el esquema de salida de los datos, si el esquema de entrada es similar al proporcionado.

Se aplica a

Consulte también