Otimizar um modelo usando a estrutura do Model Insights
A Estrutura do Model Insights fornece ao cientista de dados ferramentas no 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 de máquina para auxiliar no ajuste do modelo. O resultado final permite que cientistas de dados e cientistas de dados cidadãos tomem melhores decisões de otimização de modelos para seus clientes finais.
O que são métricas?
Depois de implementar e treinar um modelo, o próximo passo que um cientista de dados faria é descobrir o desempenho do modelo. Várias métricas são usadas para descobrir a eficiência de um modelo em comparação com outras. Alguns exemplos de métricas usadas:
- Precisão da classificação
- Área sob a curva
- Matriz de confusão
- Relatório de classificação
Configuração do código de fórmula
Atualmente, a Estrutura do Model Insights é compatível com os seguintes tempos de execução:
O código de amostra para receitas pode ser encontrado no repositório experience-platform-dsw-reference em recipes
. Os arquivos específicos deste repositório serão referenciados neste tutorial.
Scala scala
Há duas maneiras de inserir métricas nas 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 a 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:
evaluation.class
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
com.adobe.platform.ml.impl.RecommendationsEvaluator
O avaliador pode ser definido na fórmula do arquivo application.properties na pasta recipe
. O exemplo de código que habilita 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 de avaliador é ativada, várias métricas são calculadas durante o treinamento por padrão. As métricas padrão podem ser declaradas explicitamente ao adicionar a seguinte linha ao seu application.properties
.
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
Uma métrica específica pode ser habilitada alterando-se o valor de evaluation.metrics.com
. No exemplo a seguir, a métrica F-Score está ativada.
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE
A tabela a seguir especifica as métricas padrão para cada classe. Um usuário também pode usar os valores na coluna evaluation.metric
para habilitar uma métrica específica.
evaluator.class
evaluation.metric
DefaultBinaryClassificationEvaluator
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Sob As Características Operacionais Do Receptor
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-
ROC
-
AUROC
DefaultMultiClassificationEvaluator
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Sob As Características Operacionais Do Receptor
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-
ROC
-
AUROC
RecommendationsEvaluator
-Ganho Cumulativo Descontado Normalizado
-Classificação Recíproca Média
-Métrica K
MEAN_AVERAGE_PRECISION
-
NDCG
-
MRR
-
METRIC_K
Métricas de avaliação personalizadas para a Scala
O avaliador personalizado pode ser fornecido estendendo a interface de MLEvaluator.scala
no arquivo Evaluator.scala
. No arquivo de exemplo Evaluator.scala, definimos funções split()
e evaluate()
personalizadas. Nossa função split()
divide nossos dados aleatoriamente com uma proporção de 8:2 e nossa função evaluate()
define e retorna 3 métricas: MAPE, MAE e RMSE.
MLMetric
, não use "measures"
para valueType
ao criar um novo MLMetric
; caso contrário, a métrica não será preenchida na tabela de métricas de avaliação personalizadas.metrics.add(new MLMetric("MAPE", mape, "double"))
Não é isto:
metrics.add(new MLMetric("MAPE", mape, "measures"))
Uma vez definido na fórmula, o próximo passo é ativá-lo nas receitas. Isso é feito no arquivo application.properties da pasta resources
do projeto. Aqui o evaluation.class
está definido como a classe Evaluator
definida em Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator
No Data Science Workspace, o usuário poderia ver os insights na guia "Métricas de avaliação" na página de experimento.
Python/Tensorflow pythontensorflow
Até 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 implementando a classe Evaluator
.
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 valuator.py para a classe Evaluator
. Siga o link valuator.py para obter um exemplo de Evaluator
.
A criação de métricas de avaliação em Python requer que o usuário implemente os métodos evaluate()
e split()
.
O método evaluate()
retorna o objeto de métrica que contém uma matriz de objetos de métrica com propriedades name
, value
e valueType
.
A finalidade do método split()
é inserir dados e produzir um conjunto de dados de treinamento e teste. Em nosso exemplo, o método split()
insere dados usando o SDK DataSetReader
e, em seguida, limpa os dados removendo colunas não relacionadas. A partir daí, os recursos adicionais são criados a partir dos recursos brutos existentes nos dados.
O método split()
deve retornar um dataframe de treinamento e teste que é usado pelos métodos pipeline()
para treinar e testar o modelo ML.
Métricas de avaliação personalizadas para Tensorflow
Para Tensorflow, semelhante a Python, os métodos evaluate()
e split()
na classe Evaluator
precisarão ser implementados. Para evaluate()
, as métricas devem ser retornadas, enquanto split()
retorna o trem e os conjuntos de dados de teste.
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 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 classe applicationEvaluator
como parte da fórmula.
Métricas de avaliação personalizadas para o R
A principal finalidade do applicationEvaluator
é retornar um objeto JSON que contém pares de valores-chave de métricas.
Este applicationEvaluator.R pode ser usado como exemplo. Neste exemplo, o applicationEvaluator
está 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 primeiro em um conjunto de dados a partir de uma origem conforme definido em retail.config.json. A partir daí, os dados são limpos e projetados para se ajustarem ao modelo de aprendizado de 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 objeto metrics
.
Uso de métricas e gráficos de visualização pré-criados
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 algoritmo de aprendizado de máquina de alto nível e as métricas e visualizações de avaliação correspondentes.
- MAPE
- MASE
- MAE
- Precision-recall
- Precisão
- Pontuação F (especificamente F1 ,F2)
- AUC
- ROC
- Para cada classe:
- precisão-recall
- Pontuação F (especificamente F1, F2)
- RI (índice Rand), ARI (índice Rand ajustado)
- pontuação de homogeneidade, pontuação de integridade e medida V
- FMI (índice Fowlkes-Mallows)
- Pureza
- índice Jaccard
- Coeficiente de silhueta
- CHI (índice Calinski-Harabaz)
- DBI (índice Davies-Bouldin)
- índice Dunn
-Ganho Cumulativo Descontado Normalizado
-Classificação Recíproca Média
-Métrica K