Compartir a través de


FieldAwareFactorizationMachineTrainer Clase

Definición

IEstimator<TTransformer> para predecir un destino mediante un modelo de máquina de factorización con reconocimiento de campos entrenado mediante un método de degradado estocástico.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Herencia
FieldAwareFactorizationMachineTrainer
Implementaciones

Comentarios

Columnas de entrada y salida

Los datos de la columna de etiquetas de entrada deben ser Boolean. Los datos de columna de características de entrada deben ser un vector de tamaño conocido de Single.

Este instructor genera las siguientes columnas:

Nombre de columna de salida Tipo de columna Descripción
Score Single Puntuación sin enlazar calculada por el modelo.
PredictedLabel Boolean Etiqueta de predicción, según el signo de la puntuación. Una puntuación negativa se asigna a false y una positiva a true.
Probability Single Probabilidad calculada mediante la calibración de la puntuación de tener true como etiqueta. El valor de probabilidad está en el intervalo [0, 1].

Para crear este instructor, use FieldAwareFactorizationMachineFieldAwareFactorizationMachine o FieldAwareFactorizationMachine(Options).

A diferencia de otros clasificadores binarios, que solo pueden admitir una columna de características, la máquina de factorización con reconocimiento de campos puede consumir varias columnas de características. Cada columna se ve como un contenedor de algunas características y este contenedor se denomina campo. Tenga en cuenta que todas las columnas de características deben ser vectores flotantes, pero sus dimensiones pueden ser diferentes. La motivación de dividir las características en distintos campos es modelar características de diferentes distribuciones de forma independiente. Por ejemplo, en la tienda de juegos en línea, las características creadas a partir del perfil de usuario y las del perfil de juego se pueden asignar a dos campos diferentes.

Características del entrenador

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

Información previa

La familia de máquinas de factorización es un grupo de modelos eficaz para problemas de aprendizaje supervisados. Se introdujo por primera vez en el documento Factorization Machines de Steffen Rendle en 2010. Más adelante, una de sus versiones generalizadas, la máquina de factorización con reconocimiento de campos, se convirtió en un módulo predictivo importante en los sistemas recomendadores recientes y concursos de predicción de velocidad de clic a través. Para obtener ejemplos, consulte las soluciones ganadoras en el KDD-Cup 2012 de Steffen Rendle (Pista 1 y Pista 2), Criteo, Avazu y desafíos de predicción de clic de Outbrain en Kaggle.

Las máquinas de factorización son especialmente eficaces cuando las conjunciones de características están extremadamente correlacionadas con la señal que desea predecir. Un ejemplo de pares de características que pueden formar conjunciones importantes es el identificador de usuario y el identificador de música en la recomendación de música. Cuando un conjunto de datos consta solo de características numéricas densas, no se recomienda el uso de la máquina de factorización o se deben realizar algunas caracterizaciones.

Función de puntuación

La máquina de factorización con reconocimiento de campos es una función de puntuación que asigna vectores de características de distintos campos a una puntuación escalar. Supongamos que todas las columnas de características de $m$ se concatenan en un vector de característica largo $\textbf{x} \in {\mathbb R}^n$ y ${\mathcal F}(j)$ denotan el $j$-th feature's field indentifier. La puntuación correspondiente es $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangle x_j x_{j'}$, donde $\langle \cdot, \cdot \rangle$ es el operador de producto interno, $\textbf{w} \in {\mathbb R}^n$ almacena los coeficientes lineales, y $\textbf{v}_{j, f}\in {\mathbb R}^k$ es la representación de la característica $j$-th en el espacio latente del campo $f$-th. Tenga en cuenta que $k$ es la dimensión latente especificada por el usuario.

La etiqueta predicha es el signo de $\hat{y}$. Si $\hat{y} > 0$, este modelo predice true. De lo contrario, predice false.

Para obtener una introducción sistemática a la máquina de factorización con reconocimiento de campos, consulte este documento.

Detalles del algoritmo de entrenamiento

El algoritmo implementado en se basa en FieldAwareFactorizationMachineTrainerun método de degradado estocástico. Los detalles del algoritmo se describen en algoritmo 3 en este documento en línea. La función de pérdida minimizada es una pérdida logística, por lo que el modelo entrenado se puede ver como una regresión logística no lineal.

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

Métodos

Fit(IDataView)

Entrena y devuelve un FieldAwareFactorizationMachinePredictionTransformerobjeto .

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Continúa el entrenamiento de un FieldAwareFactorizationMachineTrainer objeto con datos ya entrenados modelParameters o de validación, y devuelve un FieldAwareFactorizationMachinePredictionTransformer.

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.

Métodos de extensión

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

Anexe un "punto de control de almacenamiento en caché" a la cadena del estimador. Esto garantizará que los estimadores de bajada se entrenarán con datos almacenados en caché. Resulta útil tener un punto de control de almacenamiento en caché antes de que los instructores tomen varios pases de datos.

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

Dado un estimador, devuelva un objeto de ajuste que llamará a un delegado una vez Fit(IDataView) . A menudo, es importante que un estimador devuelva información sobre lo que cabe, por lo que el Fit(IDataView) método devuelve un objeto con tipo específico, en lugar de simplemente un general ITransformer. Sin embargo, al mismo tiempo, IEstimator<TTransformer> a menudo se forman en canalizaciones con muchos objetos, por lo que es posible que tengamos que crear una cadena de estimadores a través EstimatorChain<TLastTransformer> de donde el estimador para el que queremos obtener el transformador se enterró en algún lugar de esta cadena. En ese escenario, podemos a través de este método adjuntar un delegado al que se llamará una vez que se llame a fit.

Se aplica a

Consulte también