A Estrutura do Model Insights fornece ao cientista de dados ferramentas no Data Science Workspace 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.
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:
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 experience-platform-dsw-reference repositório em recipes
. Os arquivos específicos deste repositório serão referenciados neste tutorial.
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.
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 do application.properties arquivo no recipe
pasta. Código de exemplo 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
Se a métrica não for definida, as métricas padrão estarão ativas.
Uma métrica específica pode ser ativada ao alterar 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 variável evaluation.metric
para ativar uma métrica específica.
evaluator.class |
Métricas padrão | evaluation.metric |
---|---|---|
DefaultBinaryClassificationEvaluator |
-Precisão -Retroceder -Matriz de Confusão -F-Score -Precisão -Características de operação do receptor -Área sob as características operacionais do receptor |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC - AUROC |
DefaultMultiClassificationEvaluator |
-Precisão -Retroceder -Matriz de Confusão -F-Score -Precisão -Características de operação do receptor -Área sob as características operacionais do receptor |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC - AUROC |
RecommendationsEvaluator |
-Precisão média (MAP) -Ganho Acumulado Descontado Normalizado -Classificação Recíproca Média -Métrica K |
-MEAN_AVERAGE_PRECISION - NDCG - MRR - METRIC_K |
O avaliador personalizado pode ser fornecido estendendo a interface do MLEvaluator.scala
no seu Evaluator.scala
arquivo. No exemplo Avaliador.escala arquivo, definimos personalizado split()
e evaluate()
funções. Nosso split()
A função divide nossos dados aleatoriamente com uma proporção de 8:2 e nossos evaluate()
define e retorna três métricas: MAPE, MAE e RMSE.
Para o MLMetric
classe, não use "measures"
para valueType
ao criar um novo MLMetric
caso contrário, a métrica não será preenchida na tabela métricas de avaliação personalizadas.
Faça o seguinte: 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 application.properties no arquivo do projeto resources
pasta. Aqui, o evaluation.class
está definido como 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 experimento.
Por enquanto, 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 o Evaluator
classe.
Para métricas de avaliação personalizadas, há dois métodos principais que precisam ser implementados para o avaliador: split()
e evaluate()
.
Para Python, estes métodos seriam definidos em avaliador.py para o Evaluator
classe. Siga as avaliador.py para obter um exemplo do Evaluator
.
Criação de métricas de avaliação no Python exige que o usuário implemente o evaluate()
e split()
métodos.
A variável 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 da split()
é inserir dados e produzir um treinamento e um conjunto de dados de teste. No nosso exemplo, a variável split()
o método insere dados usando o 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.
A variável split()
deve retornar um quadro de dados de treinamento e teste que é então usado pelo pipeline()
métodos para treinar e testar o modelo de ML.
Para Tensorflow, semelhante a Python, os métodos evaluate()
e split()
no Evaluator
precisará ser implementada. 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'
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 o applicationEvaluator
classe como parte da fórmula.
O principal objetivo da applicationEvaluator
é retornar um objeto JSON que contém pares de valores-chave das métricas.
Este applicationEvaluator.R pode ser usado como exemplo. Neste exemplo, a variável applicationEvaluator
O está dividido em três seções familiares:
Os dados são carregados pela primeira vez em um conjunto de dados a partir de uma origem, conforme definido na 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 na variável metrics
objeto.
A variável Sensei Model Insights Framework O 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.
Tipo de algoritmo ML | Métricas de avaliação | Visualizações |
---|---|---|
Regressão | - RMSE - MAPE - MASSA - MAE |
Curva de sobreposição de valores previstos versus reais |
Classificação binária | - Matriz de confusão - Recolha de precisão - Precisão - Pontuação F (especificamente F1 ,F2) - AUC - ROC |
Curva ROC e matriz de confusão |
Classificação de várias classes | -Matriz de confusão - Para cada classe: - precisão da recuperação de precisão - Pontuação F (especificamente F1, F2) |
Curva ROC e matriz de confusão |
Agrupamento (c/ verdade fundamental) | - NMI (pontuação normalizada de informação mútua), AMI (pontuação ajustada de informação mútua) - 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 |
Gráfico de clusters mostrando clusters e centroides com tamanhos relativos de cluster que refletem os pontos de dados que estão no cluster |
Clustering (sem verdade fundamental) | - Inércia - Coeficiente de silhueta - CHI (índice Calinski-Harabaz) - DBI (índice Davies-Bouldin) - Índice de Dunn |
Gráfico de clusters mostrando clusters e centroides com tamanhos relativos de cluster que refletem os pontos de dados que estão no cluster |
Recomendação | -Precisão média (MAP) -Ganho Acumulado Descontado Normalizado -Classificação Recíproca Média -Métrica K |
A confirmar |
Casos de uso do TensorFlow | Análise do modelo TensorFlow (TFMA) | Comparação/visualização do modelo de rede neural Deepcompare |
Outro/mecanismo de captura de erros | Lógica de métrica personalizada (e gráficos de avaliação correspondentes) definida pelo autor do modelo. Tratamento de erros naturais em caso de incompatibilidade de modelo | Tabela com pares de valores-chave para métricas de avaliação |