Show Menu
TÓPICOS×

Otimizar um modelo usando a estrutura do Model Insights

A Framework Model Insights fornece ao cientista de dados ferramentas Data Science Workspace para fazer escolhas rápidas e informadas para modelos ideais de aprendizado de máquina com base em experimentos. A estrutura melhorará a velocidade e a eficácia do fluxo de trabalho de aprendizado de máquina, bem como a facilidade de uso para cientistas de dados. Isso é feito fornecendo um modelo padrão para cada tipo de algoritmo de aprendizado da máquina para auxiliar no ajuste do modelo. O resultado final permite que cientistas de dados e cientistas de dados cidadãos tomem decisões de otimização de modelos melhores para seus clientes finais.

O que são métricas?

Depois de implementar e treinar um modelo, o próximo passo que um cientista da área de dados faria seria descobrir o desempenho do modelo. Várias métricas são usadas para descobrir a eficácia de um modelo em relação a outras. Alguns exemplos de métricas usadas incluem:
  • Precisão da classificação
  • Área sob curva
  • Matriz de confusão
  • Relatório de classificação

Configuração do código de fórmula

Atualmente, o Model Insights Framework suporta os seguintes tempos de execução:
O código de amostra para fórmulas pode ser encontrado no repositório experience-platform-dsw-reference em recipes . Arquivos específicos deste repositório serão referenciados neste tutorial.

Scala

Há duas maneiras de trazer métricas para as receitas. Uma é usar as métricas de avaliação padrão fornecidas pelo SDK e a outra é gravar métricas de avaliação personalizadas.

Métricas de avaliação padrão para Scala

As avaliações padrão são calculadas como parte dos algoritmos de classificação. Estes são alguns valores padrão para avaliadores que estão implementados no momento:
Classe do avaliador
evaluation.class
DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
RecommendationsEvaluator
com.adobe.platform.ml.impl.RecommendationsEvaluator
O avaliador pode ser definido na fórmula no arquivo application.properties na recipe pasta. O código de amostra que permite o DefaultBinaryClassificationEvaluator é mostrado abaixo:
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true

Depois que uma classe avaliadora é ativada, várias métricas serão calculadas durante o treinamento por padrão. As métricas padrão podem ser declaradas explicitamente adicionando a seguinte linha à sua application.properties .
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT

Se a métrica não estiver definida, as métricas padrão estarão ativas.
Uma métrica específica pode ser ativada alterando o valor para evaluation.metrics.com . No exemplo a seguir, a métrica da Pontuação F está ativada.
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE

A tabela a seguir indica as métricas padrão para cada classe. Um usuário também pode usar os valores na evaluation.metric coluna para ativar uma métrica específica.
evaluator.class
Métricas padrão
evaluation.metric
DefaultBinaryClassificationEvaluator
- Precisão
- Matriz de
Confusão de Recall
-F-Pontuação
-Precisão
- Características Operacionais
Do Receptor Na Área Operacional Do Receptor
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
DefaultMultiClassificationEvaluator
- Precisão
- Matriz de
Confusão de Recall
-F-Pontuação
-Precisão
- Características Operacionais
Do Receptor Na Área Operacional Do Receptor
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
RecommendationsEvaluator
-Precisão média (MAP)
- Média de precisão (MAP) normalizada Descontada Ganho acumulado
- Média de classificação
métrica Recírica K
- MEAN_AVERAGE_PRECISION
- NDCG
- MRR
- METRIC_K

Métricas de avaliação personalizadas para Scala

O avaliador personalizado pode ser fornecido estendendo a interface do MLEvaluator.scala em seu Evaluator.scala arquivo. No arquivo Evaluator.escala de exemplo, definimos funções personalizadas split() e evaluate() . Nossa split() função divide nossos dados aleatoriamente com uma proporção de 8:2 e nossa evaluate() função define e retorna 3 métricas: MAPE, MAE e RMSE.
Para a MLMetric classe, não use "measures" para valueType ao criar uma nova MLMetric outra métrica, a métrica não será preenchida na tabela de métricas de avaliação personalizadas.
Faça o seguinte: metrics.add(new MLMetric("MAPE", mape, "double")) Não é isso: metrics.add(new MLMetric("MAPE", mape, "measures"))
Uma vez definido na fórmula, a próxima etapa é ativá-la nas receitas. Isso é feito no arquivo application.properties na resources pasta do projeto. Aqui, a classe evaluation.class é definida para a Evaluator classe definida em Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator

No Data Science Workspace, o usuário poderá ver os insights na guia "Métricas de avaliação" na página de experimentos.

Python/Tensorflow

A partir de agora, não há métricas de avaliação padrão para Python ou Tensorflow. Assim, para obter as métricas de avaliação para Python ou Tensorflow, será necessário criar uma métrica de avaliação personalizada. Isso pode ser feito com a implementação da Evaluator classe.

Métricas de avaliação personalizadas para Python

Para métricas de avaliação personalizadas, há dois métodos principais que precisam ser implementados para o avaliador: split() e evaluate() .
Para Python, esses métodos seriam definidos em evaluate.py para a Evaluator classe. Siga o link evaluate.py para obter um exemplo do Evaluator .
A criação de métricas de avaliação no Python exige que o usuário implemente os evaluate() métodos e split() métodos.
O evaluate() método retorna o objeto de métrica que contém uma matriz de objetos de métrica com propriedades de name , value e valueType .
O objetivo do split() método é inserir dados e produzir um conjunto de dados de treinamento e teste. Em nosso exemplo, o split() método insere dados usando o DataSetReader SDK e limpa os dados removendo colunas não relacionadas. Daí, recursos adicionais são criados a partir de recursos brutos existentes nos dados.
O split() método deve retomar os dados de formação e de ensaio que são depois utilizados pelos pipeline() métodos de treino e ensaio do modelo ML.

Métricas de avaliação personalizadas para Tensorflow

Para Tensorflowque, semelhante a Python, os métodos evaluate() e split() na Evaluator classe precisem ser implementados. No caso evaluate() , as métricas devem ser retornadas enquanto split() retorna o comboio e os conjuntos de dados de ensaio.
from ml.runtime.python.Interfaces.AbstractEvaluator import AbstractEvaluator

class Evaluator(AbstractEvaluator):
    def __init__(self):
       print ("initiate")

    def evaluate(self, data=[], model={}, config={}):

        return metrics

    def split(self, config={}):

       return 'train', 'test'

R

A partir de agora, não há métricas de avaliação padrão para R. Assim, para obter as métricas de avaliação para R, será necessário definir a applicationEvaluator classe como parte da fórmula.

Métricas de avaliação personalizadas para R

O objetivo principal do applicationEvaluator é retornar um objeto JSON contendo pares de valores chave de métricas.
Esse applicationEvaluator.R pode ser usado como exemplo. Neste exemplo, o applicationEvaluator é dividido em três seções familiares:
  • Carregar dados
  • Preparação de dados/engenharia de recursos
  • Recuperar modelo salvo e avaliar
Os dados são carregados pela primeira vez em um conjunto de dados a partir de uma fonte, conforme definido em retail.config.json . A partir daí, os dados são limpos e projetados para se encaixarem no modelo de aprendizado da máquina. Por fim, o modelo é usado para fazer uma previsão usando nosso conjunto de dados e a partir dos valores previstos e valores reais, as métricas são calculadas. Nesse caso, MAPE, MAE e RMSE são definidos e retornados no metrics objeto.

Uso de métricas pré-criadas e gráficos de visualização

O Sensei Model Insights Framework oferecerá suporte a um modelo padrão para cada tipo de algoritmo de aprendizado de máquina. A tabela abaixo mostra classes comuns de algoritmos de aprendizado de máquina de alto nível e métricas de avaliação e visualizações correspondentes.
Tipo de Algoritmo ML
Métricas de avaliação
Visualizações
Regressão
- RMSE
- MAPE
- MASE
- MAE
Curva de sobreposição de valores previstos vs reais
Classificação binária
- Matriz
de perfusão - Precisão
- Precisão
- pontuação F (especificamente F1,F2)
- AUC
- ROC
Matriz de curva e confusão de ROC
Classificação multiclasse
- Matriz
- Para cada classe:
- precisão de evocação
- pontuação F (especificamente F1, F2)
Matriz de curva e confusão de ROC
Agrupamento (sem verdade básica)
- NMI (pontuação normalizada de informação mútua), AMI (pontuação de informação mútua ajustada)
- RI (índice Rand), ARI (índice Rand ajustado)
- pontuação de homogeneidade, pontuação de integralidade e V-measurement
- FMI (índice Fowlkes-Mallows)
- Pureza
- Índice Jaccard
Gráfico de clusters mostrando clusters e centróides com tamanhos de cluster relativos refletindo os pontos de dados dentro do cluster
Agrupamento (sem verdade básica)
- Inércia
- Coeficiente
de silhueta- CHI (índice Calinski-Harabaz)
- DBI (índice Davies-Bouldin)
- Índice Dunn
Gráfico de clusters mostrando clusters e centróides com tamanhos de cluster relativos refletindo os pontos de dados dentro do cluster
Recomendação
-Precisão média (MAP)
- Média de precisão (MAP) normalizada Descontada Ganho acumulado
- Média de classificação
métrica Recírica K
TBD
Casos de uso do TensorFlow
Análise do modelo TensorFlow (TFMA)
Comparação profunda entre o modelo de rede neural e a visualização
Outro mecanismo de captura de erros
Lógica métrica personalizada (e gráficos de avaliação correspondentes) definida pelo autor do modelo. Tratamento de erros graciosos em caso de incompatibilidade do modelo
Tabela com pares de valores chave para métricas de avaliação