FieldAwareFactorizationMachineTrainer 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.
A IEstimator<TTransformer> previsão de um destino usando um modelo de computador de factorizaçã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 associado 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).
Ao contrário de outros classificadores binários, que só podem dar suporte a uma coluna de recursos, 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 de dividir recursos em campos diferentes é modelar recursos de diferentes distribuições de forma independente. Por exemplo, na loja de jogos online, os recursos criados a partir do perfil do usuário e aqueles do perfil do jogo podem ser atribuídos a dois campos diferentes.
Características do Treinador
| Tarefa de machine learning | Classificação binária |
| A normalização é necessária? | Yes |
| O cache é necessário? | No |
| NuGet necessário além de Microsoft.ML | None |
| Exportável para ONNX | No |
Tela de fundo
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 Factorização da Steffen Rendle em 2010. Posteriormente, uma de suas versões generalizadas, a máquina de fatoração com reconhecimento de campo, tornou-se um módulo preditivo importante em sistemas recomendados recentes e competições de previsão de taxa de cliques. 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's, 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 da música na recomendação musical. Quando um conjunto de dados consiste apenas em recursos numéricos densos, o uso do computador de factorização não é recomendado ou algumas funcionalidades devem ser executadas.
Função de pontuação
O computador de fatorização com reconhecimento de campo é uma função de pontuação que mapeia vetores de recursos de campos diferentes 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)$ indica 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 do produto interno, $\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 factorization 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, de modo que 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
| Nome | Description |
|---|---|
| Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters) |
Continua o treinamento de um FieldAwareFactorizationMachineTrainer usando dados já treinados |
| Fit(IDataView) |
Treina 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 como o fornecido. |
Métodos de Extensão
| Nome | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Acrescente um 'ponto de verificação de cache' à cadeia do avaliador. Isso garantirá que os avaliadores downstream serão treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que têm várias passagens de dados. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dado um avaliador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) 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 avaliador para o qual queremos obter o transformador está enterrado em algum lugar nessa 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
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)
- FieldAwareFactorizationMachineTrainer.Options