Criar Modelo R

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Cria um modelo R usando recursos personalizados

Categoria: Transformação de Dados / Manipulação

Nota

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

Módulos semelhantes de arrasto e queda estão disponíveis em Azure Machine Learning designer.

Visão geral do módulo

Este artigo descreve como usar o módulo Create R Model em Machine Learning Studio (clássico), para criar um modelo destreinado a partir de um script R.

Pode basear o modelo em qualquer aluno incluído num pacote R no ambiente Machine Learning.

Depois de criar o modelo, pode utilizar o Train Model para treinar o modelo num conjunto de dados, como qualquer outro aluno em Machine Learning. O modelo treinado pode ser passado para o Score Model para usar o modelo para fazer previsões. O modelo treinado pode então ser guardado, e o fluxo de trabalho de pontuação pode ser publicado como um serviço web.

Aviso

Atualmente não é possível passar os resultados pontuados de um modelo R para avaliar modelo ou modelo de validação cruzada. Se precisar de avaliar um modelo, pode escrever um script R personalizado e executá-lo utilizando o módulo Execut R Script .

Além de utilizar o Modelo Create R para guardar e reutilizar módulos R personalizados, pode criar a sua própria implementação de um processo de modelação e gestão de dados utilizando R, fazer o upload dos ficheiros em formato zipped para o seu espaço de trabalho e, em seguida, registar o pacote como um módulo personalizado. Para mais informações, consulte os Módulos R Personalizados.

Como configurar criar modelo R

A utilização deste módulo requer conhecimento intermédio ou especializado de R. O módulo suporta a utilização de qualquer aluno que esteja incluído nos pacotes R já instalados em Machine Learning.

Esta amostra da Galeria Azure AI implementa um classificador Naïve Bayes de duas classes utilizando o pacote popular e1070 : + Criar Modelo R. Recomendamos que copie o exemplo para o seu espaço de trabalho e acompanhe.o mais.

  1. Adicione estes módulos à sua experiência: Criar Modelo R, Modelo de Comboio, Modelo de Pontuação.

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

  3. A experiência da amostra também inclui o módulo Execut Python Script , que é usado para traçar gráficos para avaliação de modelos. Este módulo é opcional ao publicar para um serviço web, mas útil ao desenvolver a experiência.

    • Para ver as tabelas a partir do script Python, clique à direita no módulo Python, selecione Python Device e selecione Visualize.
    • Para ver apenas as métricas do modelo, clique com o botão direito no módulo Python, selecione Python Dataset e selecione Visualize.

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

Roteiro de treino

O exemplo a seguir demonstra o tipo de código que pode utilizar no script Do Treinador R.

Este script carrega um pacote R, cria um modelo utilizando um aprendiz a partir do pacote, e configura as colunas de funcionalidades e etiquetas utilizando as constantes e funções pré-indefinidas fornecidas no Create R Model.

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 de classificação Naïve Bayes que queremos usar. Uma vez que este é um dos pacotes pré-instalados no ambiente Machine Learning, não precisa de descarregar ou instalar o pacote.

  • As próximas linhas obtêm as colunas de funcionalidades e a coluna de etiquetas do conjunto de dados, e combinam-nas num novo quadro de dados R que é nomeado 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)
    
  • Utilização de notas destas funções predefinidas:

    • get.label.columns() retorna a coluna selecionada como a etiqueta de classe no módulo Modelo de Comboio .

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

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

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

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

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

    model <- naiveBayes(Class ~ ., train.data)
    
  • Ao longo da criação, formação e marcação de scripts de modelos, deve utilizar o nome modelvariável.

Roteiro de pontuação

O código que se segue ilustra o tipo de código R que forneceria no script 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 conjunto de dados de pontuação utilizando o modelo treinado a partir do script de treino, designado pelo nome variável exigido, model.

  • A terceira linha aplica um limiar de 0,5 para as probabilidades ao atribuir as etiquetas de classe previstas.

  • 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 python

A experiência da amostra na Galeria Azure AI inclui o seguinte script Python, que é usado para gerar métricas e gráficos para avaliação de modelos.

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,

Publique o fluxo de trabalho personalizado do modelo R como um serviço web

Depois de executar a experiência, pode publicar a experiência completa como um serviço web.

Para obter instruções atualizadas sobre como criar um serviço web a partir de uma experiência studio (clássica), consulte Walkthrough Step 5: Implementar o serviço web Machine Learning

Por predefinição, o serviço web espera que todas as colunas de entrada dos dados de treino sejam fornecidas, incluindo a coluna do rótulo. Pode adicionar uma instância de Colunas Selecionadas no Conjunto de Dados entre a fonte de dados de entrada e o módulo 'Modelo de Pontuação' para excluir a etiqueta que está a tentar prever.

Notas técnicas

  • O módulo Create R Model suporta a utilização apenas de CRAN R. Não é possível selecionar outra versão de R, nem utilizar o Microsoft R Open.

  • O modelo é em cache após a primeira execução do módulo e o módulo não é invocado em execuções posteriores até que quaisquer alterações nos scripts de entrada sejam feitas. Por favor, tenha em consideração este comportamento se os seus scripts R utilizarem 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 determinísticas
  • Os modelos R personalizados criados com este módulo não podem ser utilizados com estes módulos:

  • Os modelos R não executam automaticamente a normalização da funcionalidade de dados categóricos ou manuseiam valores em falta. O manuseamento de tais variáveis deve ser feito dentro dos scripts de treino e pontuação R.

Tabela de funções pré-definidas

Utilização Description
get.feature.columns(dataset) Recebe todas as colunas de recurso.
get.label.column(dataset, label.type=TrueLabelType) Obtém a coluna de etiquetas, dado o tipo.

Consulte a secção Constants para obter uma lista dos tipos disponíveis.
get.label.column.names(dataset) Obtém os nomes de todas as colunas de etiquetas.
get.label.column.name(dataset, label.type=TrueLabelType) Obtém o nome da coluna da etiqueta, dado o tipo.

Consulte a secção Constants para obter uma lista dos tipos disponíveis.
get.label.column.types(dataset) Obtém os tipos de todas as colunas de etiquetas.
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, dado um tipo.

Consulte a secção Constants para obter uma lista dos tipos disponíveis.
dataset < - set.feature.channel(dataset, channel.name, column.names) Define o canal de recurso, dado um nome.

Consulte a secção Constants para obter uma lista dos nomes disponíveis.

Tabela de constantes pré-definidas

Constante Description
TrueLabelType Tipo de coluna de rótulo verdadeiro
MarcaçãoLabelType Tipo de coluna de etiqueta pontuada
RawScoreType Tipo de coluna de pontuação bruta
CalibradoScoreType Tipo de coluna de pontuação calibrada
PontuaçãoProbabilitiesMulticlassColumnTypePattern O padrão para preparar o tipo de coluna de probabilidades pontuada para classificador multiclasse
BayesianLinearRegressionScoresFeatureChannel O nome do canal de recurso com pontuações lineares de regressão bayesiana
BinaryClassificationScoresFeatureChannel O nome do canal de recurso com pontuações de classificação binária
MulticlassclassClassificationScoresFeatureChannel O nome do canal de recurso com pontuações de classificação multiclasse
OrdinalRegressionScoresFeatureChannel O nome do canal de recurso com pontuações de regressão ordinal
RegressãoScoresFeatureChannel O nome do canal de recurso com pontuações de regressão

Exemplos

Para obter exemplos adicionais de como utilizar este módulo em experiências de machine learning, consulte a Galeria Azure AI.

Entradas esperadas

Nome Tipo Description
Guião R do treinador Script Um script R que toma um conjunto de dados como entrada e produz um modelo destreinado.
Guião R do marcador Script Um script R que toma um modelo e um conjunto de dados como entrada e outputs as pontuações especificadas no script.

Saídas

Nome Tipo Description
Modelação Interface ILearner Um modelo destreinado

Ver também

Executar Script R
Módulos de Linguagem R