Compartilhar via


Criar modelo de R

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

Cria um modelo R usando recursos personalizados

Categoria: Transformação/manipulação de dados

Observação

Aplica-se a: Machine Learning Studio (clássico) somente

Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.

Visão geral do módulo

Este artigo descreve como usar o módulo Criar Modelo do R no Machine Learning Studio (clássico) para criar um modelo sem treinamento de um script R.

Você pode basear o modelo em qualquer aluno incluído em um pacote R no Machine Learning ambiente.

Depois de criar o modelo, você pode usar Treinar Modelo para treinar o modelo em um conjuntos de dados, como qualquer outro aluno no Machine Learning. O modelo treinado pode ser passado para o Modelo de Pontuação para usar o modelo para fazer previsões. O modelo treinado pode, então, ser salvo e o fluxo de trabalho de pontuação pode ser publicado como um serviço Web.

Aviso

No momento, não é possível passar os resultados pontuados de um modelo do R para Avaliar Modelo ou Modelo de Validação Cruzada. Se precisar avaliar um modelo, você poderá escrever um script R personalizado e executá-lo usando o módulo Executar Script R .

Além de usar o Criar Modelo do R para salvar e rea própria utilização de módulos personalizados do R, você pode criar sua própria implementação de um processo de modelagem e gerenciamento de dados usando R, carregar os arquivos em formato recortado para seu workspace e, em seguida, registrar o pacote como um módulo personalizado. Para obter mais informações, consulte Módulos personalizados do R.

Como configurar Criar Modelo do R

O uso deste módulo requer conhecimento intermediário ou especialista do R. O módulo dá suporte ao uso de qualquer aluno incluído nos pacotes do R já instalados no Machine Learning.

Este exemplo do Galeria de IA do Azure implementa um classificador naïve Bayes de duas classes usando o pacote popular e1070 : + Criar Modelo R. Recomendamos que você copie o exemplo para seu workspace e acompanhe-o.

  1. Adicione estes módulos ao seu experimento: Criar Modelo R, Treinar Modelo, Pontuar Modelo.

  2. No painel Propriedades de Criar Modelo R, forneça estes scripts:

  3. O experimento de exemplo também inclui o módulo Executar Script Python , que é usado para plotar grafos para avaliação de modelo. Este módulo é opcional ao publicar em um serviço Web, mas útil ao desenvolver o experimento.

    • Para exibir os gráficos do script Python, clique com o botão direito do mouse no módulo python, selecione Dispositivo Python e selecione Visualizar.
    • Para exibir apenas as métricas do modelo, clique com o botão direito do mouse no módulo python, selecione Python Dataset e selecione Visualizar.

    Para o código no módulo opcional do Python, consulte Módulo python para avaliação de modelo.

Script de treinamento

O exemplo a seguir demonstra o tipo de código que você pode usar no script R do Treinador.

Esse script carrega um pacote R, cria um modelo usando um learner do pacote e configura o recurso e as colunas de rótulo usando as constantes e funções predefinidos fornecidas em Criar Modelo R.

library(e1071)
features <- get.feature.columns(dataset)
labels   <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
  • A primeira linha carrega o pacote R, e1071, que contém o algoritmo classificador Naïve Bayes que desejamos usar. Como esse é um dos pacotes pré-instalados no ambiente Machine Learning, você não precisa baixar nem instalar o pacote.

  • As próximas linhas obterão as colunas de recurso e a coluna de rótulo do conjuntos de dados e as combinarão em um novo quadro de dados do R chamado train.data:

    features <- get.feature.columns(dataset)   
    labels <- as.factor(get.label.column(dataset))   
    train.data <- data.frame(features, labels)
    feature.names <- get.feature.column.names(dataset)
    
  • Observe o uso dessas funções predefinida:

    • get.label.columns() retorna a coluna selecionada como o rótulo de classe no módulo Treinar Modelo .

    • get.feature.columns()seleciona as colunas que foram designadas como recursos no conjuntos de dados.

      Por padrão, todas as colunas, exceto a coluna de rótulo, são consideradas recursos no Studio (clássico). Portanto, para marcar colunas específicas como recursos, use Editar Metadados ou selecione um conjunto de colunas dentro do script R.

    • get.feature.column.names(dataset) obtém nomes de coluna de recurso do conjuntos de dados.

  • Os nomes do conjunto de dados combinado são designados como nomes para colunas train.datano e um nome temporário é criado para a Class coluna de rótulo.

    names(train.data) <- c(feature.names, "Class")
    
  • A linha final do código define o algoritmo classificador Naïve Bayes como uma função das variáveis (recursos) e resultados (rótulos) train.data no quadro de dados.

    model <- naiveBayes(Class ~ ., train.data)
    
  • Durante a criação, o treinamento e os scripts de pontuação do modelo, você deve usar o nome da variável model.

Script de pontuação

O código a seguir ilustra o tipo de código R que você forneceria no script do Scorer R.

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • A primeira linha carrega o pacote.

  • A segunda linha calcula as probabilidades previstas para o conjuntos de dados de pontuação usando o modelo treinado do script de treinamento, designado pelo nome da variável necessária, model.

  • A terceira linha aplica um limite de 0,5 para probabilidades quando atribuir as etiquetas de classe de previsão.

  • A linha final combina as etiquetas de classe e as probabilidades no quadro de dados de saída, scores.

  • O quadro de dados que é passado para o módulo Modelo de Pontuação deve ter o nome scores.

Script de avaliação opcional do Python

O experimento de exemplo no Galeria de IA do Azure inclui o script Python a seguir, que é usado para gerar métricas e gráficos para avaliação de modelo.

def azureml_main(dataframe):
    import matplotlib
    matplotlib.use("agg")
    
    from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
    ytrue = scores["Class"]
    ypred = np.array([float(val) for val in scores["classes"]])    
    probabilities = scores["probabilities"]
    
    accuracy, precision, recall, auc = \
    accuracy_score(ytrue, ypred),\
    precision_score(ytrue, ypred),\
    recall_score(ytrue, ypred),\
    roc_auc_score(ytrue, probabilities)
    
    metrics = pd.DataFrame();
    metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
    metrics["Value"] = [accuracy, precision, recall, auc]

# Plot ROC Curve
    fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
    fig = plt.figure()
    axis = fig.gca()
    axis.plot(fpr, tpr, linewidth=8)
    axis.grid("on")
    axis.set_xlabel("False positive rate")
    axis.set_ylabel("True positive rate")
    axis.set_title("ROC Curve")
    fig.savefig("roc.png")

    return metrics,

Publicar o fluxo de trabalho do modelo R personalizado como um serviço Web

Depois de executar o experimento, você pode publicar o experimento completo como um serviço Web.

Para obter instruções atualizadas sobre como criar um serviço Web de um experimento do Studio (clássico), consulte Passo a passo Etapa 5: Implantar o Machine Learning web

Por padrão, o serviço Web espera todas as colunas de entrada dos dados de treinamento serem fornecidas, incluindo a coluna de etiqueta. Você pode adicionar uma instância de Selecionar Colunas no Dataset entre a fonte de dados de entrada e o módulo Modelo de Pontuação para excluir o rótulo que você está tentando prever.

Observações técnicas

  • O módulo Criar Modelo R dá suporte ao uso somente do CRAN R. Você não pode selecionar outra versão do R ou usar o Microsoft R Open.

  • O modelo está em cache após a primeira execução do módulo, e o módulo não é invocado na execução subsequente até que as alterações nos scripts de entrada sejam feitas. Leve este comportamento em consideração se seus scripts R usam qualquer um dos seguintes:

    • Funções que geram números aleatórios
    • Funções que geram números aleatórios
    • Outras funções não determinadas
  • Modelos personalizados do R criados com este módulo não podem ser usados com estes módulos:

  • Os modelos R não realizam automaticamente a normalização do recurso de dados categóricos ou valores ausentes do identificador. A identificação de tais variáveis deve ser feita dentro dos scripts R de treinamento e pontuação.

Tabela de funções pré-definidas

Uso Descrição
get.feature.columns(dataset) Obtém todas as colunas de recurso.
get.label.column(dataset, label.type=TrueLabelType) Obtém a coluna de etiqueta, devido ao tipo.

Consulte a seção Constantes para obter uma lista dos tipos de variáveis.
get.label.column.names(dataset) Obtém os nomes de todas as colunas de etiqueta.
get.label.column.name(dataset, label.type=TrueLabelType) Obtém o nome da coluna de etiqueta, devido ao tipo.

Consulte a seção Constantes para obter uma lista dos tipos de variáveis.
get.label.column.types(dataset) Obtém os tipos de todas as colunas de etiqueta.
get.feature.column.names(dataset) Obtém os nomes de todas as colunas de recurso.
dataset < - set.score.column(dataset, score.type, column.name) Define a coluna de pontuação, devido ao tipo.

Consulte a seção Constantes para obter uma lista dos tipos de variáveis.
dataset < - set.feature.channel(dataset, channel.name, column.names) Define o canal de recurso, devido ao nome.

Consulte a seção Constantes para obter uma lista de nomes disponíveis.

Tabela de constantes predefinidas

Constante Descrição
TrueLabelType Tipo de coluna de etiqueta True
ScoredLabelType Tipo de coluna de etiqueta pontuada
RawScoreType Tipo de coluna de pontuação bruta
CalibratedScoreType Tipo de coluna de pontuação calibrada
ScoredProbabilitiesMulticlassColumnTypePattern O padrão para preparar o tipo de coluna das probabilidades pontuadas para o classificador de multiclasse
BayesianLinearRegressionScoresFeatureChannel O nome do canal de recurso com pontuações de regressão linear Bayesiana
BinaryClassificationScoresFeatureChannel O nome do canal de recurso com pontuações de classificação binária
MulticlassClassificationScoresFeatureChannel O nome do canal do recurso com pontuações de classificação multiclasse
OrdinalRegressionScoresFeatureChannel O nome do canal do recurso com pontuações de regressão ordinária
RegressionScoresFeatureChannel O nome do canal do recurso com pontuações de regressão

Exemplos

Para obter exemplos adicionais de como usar esse módulo em experimentos de aprendizado de máquina, consulte a Galeria de ia do Azure.

Entradas esperadas

Nome Tipo Descrição
Script R do treinador Script Um script R que tem um conjunto de dados como entrada e saída de um modelo não treinado.
Script R do pontuador Script Um script R que tem um modelo e conjunto de dados como entrada e saída das pontuações especificadas no script.

Saídas

Nome Tipo Descrição
Modelar Interface ILearner Um modelo não treinado

Confira também

Executar Script R
Módulos de linguagem R