FieldAwareFactorizationMachineTrainer Classe

Definição

A IEstimator<TTransformer> previsão de um destino usando um modelo de máquina de fatorização com reconhecimento de campo treinado usando um método de gradiente 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)
Herança
FieldAwareFactorizationMachineTrainer
Implementações

Comentários

Colunas de entrada e saída

Os dados da coluna de rótulo de entrada devem ser Boolean. Os dados da coluna de recursos de entrada devem ser um vetor de tamanho conhecido de Single.

Este treinador gera as seguintes colunas:

Nome da Coluna de Saída Tipo de coluna Descrição
Score Single A pontuação não associada calculada pelo modelo.
PredictedLabel Boolean O rótulo previsto com base no sinal da pontuação. Uma pontuação negativa é mapeada para false e uma pontuação positiva é mapeada para true.
Probability Single A probabilidade calculada calibrando a pontuação de ter true como o rótulo. O valor da probabilidade está no intervalo [0, 1].

Para criar esse treinador, use FieldAwareFactorizationMachineFieldAwareFactorizationMachine ou FieldAwareFactorizationMachine(Options).

Em contraste com outros classificadores binários, que só podem dar suporte a uma coluna de recurso, o computador de factorization com reconhecimento de campo pode consumir várias colunas de recursos. Cada coluna é exibida como um contêiner de alguns recursos e esse contêiner é chamado de campo. Observe que todas as colunas de recursos devem ser vetores flutuantes, mas suas dimensões podem ser diferentes. A motivação da divisão de recursos em campos diferentes é modelar recursos de distribuições diferentes de forma independente. Por exemplo, na loja de jogos online, os recursos criados com base no perfil do usuário e aqueles do perfil de jogo podem ser atribuídos a dois campos diferentes.

Características do treinador

Ferramenta de machine learning Classificação binária
A normalização é necessária? Sim
O cache é necessário? No
NuGet necessário além de Microsoft.ML Nenhum
Exportável para ONNX Não

Segundo plano

A família de máquinas de fatorização é um grupo de modelos avançado para problemas de aprendizagem supervisionados. Foi introduzido pela primeira vez no papel de Máquinas de Fatorização da Steffen Rendle em 2010. Posteriormente, uma de suas versões generalizadas, o computador de fatorização com reconhecimento de campo, tornou-se um módulo preditivo importante em sistemas recomendados recentes e concursos de previsão de taxa de clique. Para obter exemplos, consulte soluções vencedoras nos desafios de previsão de clique do Steffen Rendle KDD-Cup 2012 (Faixa 1 e Faixa 2), Criteo,Avazu e Outbrain no Kaggle.

Os computadores de fatorização são especialmente poderosos quando as conjunções de recursos estão extremamente correlacionadas com o sinal que você deseja prever. Um exemplo de pares de recursos que podem formar conjunções importantes é a ID do usuário e a ID de música na recomendação de música. Quando um conjunto de dados consiste apenas em recursos numéricos densos, o uso do computador de fatorização não é recomendado ou algumas funcionalidades devem ser executadas.

Função Score

O computador de factorization com reconhecimento de campo é uma função de pontuação que mapeia vetores de recursos de diferentes campos para uma pontuação escalar. Suponha que todas as colunas de recursos $m$ sejam concatenadas em um vetor de recurso longo $\textbf{x} \in {\mathbb R}^n$ e ${\mathcal F}(j)$ denota o indentifier de campo do recurso $j$-th. A pontuação correspondente é $\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'}$, onde $\langle \cdot, \cdot \rangle$ é o operador interno do produto, $\textbf{w} \in {\mathbb R}^n$ armazena os coeficientes lineares, e $\textbf{v}_{j, f}\in {\mathbb R}^k$ é a representação do recurso $j$-th no espaço latente do campo $f$-th. Observe que $k$ é a dimensão latente especificada pelo usuário.

O rótulo previsto é o sinal de $\hat{y}$. Se $\hat{y} > 0$, este modelo prevê true. Caso contrário, ele prevê false.

Para obter uma introdução sistemática ao computador de fatorização com reconhecimento de campo, consulte este artigo

Detalhes do algoritmo de treinamento

O algoritmo implementado é baseado em FieldAwareFactorizationMachineTrainerum método de gradiente estocástico. Os detalhes do algoritmo são descritos no Algoritmo 3 neste documento online. A função de perda minimizada é a perda logística, portanto, o modelo treinado pode ser visto como uma regressão logística não linear.

Verifique a seção Consulte Também para obter links para exemplos de uso.

Métodos

Fit(IDataView)

Treina e retorna um FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Continua o treinamento de um FieldAwareFactorizationMachineTrainer usando dados já treinados modelParameters e/ou de validação e retorna um FieldAwareFactorizationMachinePredictionTransformer.

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.

Métodos de Extensão

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

Acrescente um 'ponto de verificação de cache' à cadeia do avaliador. Isso garantirá que os estimadores downstream sejam treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que levam vários passes de dados.

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

Dado um avaliador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) que seja 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 estimador para o qual queremos obter o transformador está enterrado em algum lugar nesta 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