MatrixFactorizationTrainer Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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? | Sí |
¿Se requiere el almacenamiento en caché? | Sí |
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.
- Para obtener la implementación de varios subprocesos del método de degradado estocástico usado, vea Un método rápido de degradado estocástico estocástico para factorización de matriz en sistemas de memoria compartida.
- Para conocer el cálculo que se produce dentro de un único subproceso, consulte A Learning-rate Schedule for Stochastic Gradient Methods to Matrix Factorization(Programación de velocidad de aprendizaje para métodos de degradado estocástico a factorización de matriz).
- Para conocer el método de descenso de coordenadas paralelos usado y la fórmula de factorización de matriz de una clase, vea Selección de ejemplos negativos para factorización de matriz de una clase.
- Para obtener más información sobre la biblioteca subyacente usada, vea LIBMF: Una biblioteca para factorización de matriz paralela en sistemas de memoria compartida.
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) |
|
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. |