Criar modelo de R

Cria um modelo R usando recursos personalizados

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

Observação

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

Esse conteúdo pertence apenas ao estúdio (clássico). Módulos de arrastar e soltar semelhantes foram adicionados ao designer de Azure Machine Learning. Saiba mais neste artigo comparando as duas versões.

Visão geral do módulo

Este artigo descreve como usar o módulo criar modelo R no Azure Machine Learning Studio (clássico) para criar um modelo não treinado a partir de um script R.

Você pode basear o modelo em qualquer aprendiz que esteja incluído em um pacote R no ambiente de Azure Machine Learning.

Depois de criar o modelo, você pode usar treinar modelo para treinar o modelo em um conjunto de informações, como qualquer outro aprendiz no Azure 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

Atualmente, não é possível passar os resultados pontuados de um modelo R para avaliar o modelo ou o modelo de validação cruzada. Se você precisar avaliar um modelo, poderá escrever um script R personalizado e executá-lo usando o módulo Executar script r .

Além de usar o modelo criar r para salvar e reutilizar módulos r personalizados, você pode criar sua própria implementação de um processo de modelagem e gerenciamento de dados usando o R, carregar os arquivos no formato compactado para seu espaço de trabalho e, em seguida, registrar o pacote como um módulo personalizado. Para obter mais informações, consulte módulos de R personalizados.

Como configurar criar modelo de R

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

Este exemplo do Galeria de ia do Azure implementa um classificador de Bayes ingênua de duas classes usando o modelo popular de e1070 pacote: + Create R. É recomendável que você copie o exemplo para seu espaço de trabalho e acompanhe.

  1. Adicione esses módulos ao seu experimento: criar modelo de R, treinarmodelo, modelo de Pontuação.

  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. Esse 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 conjunto de módulos do Python e selecione Visualizar.

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

Script de treinamento

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

Esse script carrega um pacote R, cria um modelo usando um aprendiz do pacote e configura as colunas de recurso e rótulo usando as constantes e funções predefinidas fornecidas no modelo de criação de 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 de classificador Bayes ingênua que desejamos usar. Desde que este é um dos pacotes pré-instalados no ambiente de Machine Learning do Azure, você não precisa baixar ou instalar o pacote.

  • As próximas linhas obtêm as colunas de recurso e a coluna de rótulo do conjunto de dados e as combinam em um novo quadro de data 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 predefinidas:

    • get.label.columns() Retorna a coluna selecionada como o rótulo de classe no módulo modelo de treinamento .

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

      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 metadadosou selecione um conjunto de colunas dentro do script R.

    • get.feature.column.names(dataset) Obtém os nomes de coluna de recurso do conjunto de recursos.

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

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

    model <- naiveBayes(Class ~ ., train.data)
    
  • Durante os scripts de criação, treinamento e 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 r do score.

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 computa as probabilidades previstas para o conjunto de linhas de Pontuação usando o modelo treinado do script de treinamento, designado pelo nome de variável necessário, 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 seguinte script Python, 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ê poderá publicar o experimento completo como um serviço Web.

Para obter instruções atualizadas sobre como criar um serviço Web a partir de um experimento de estúdio (clássico), consulte Passo a passo 5: implantar o serviço web Azure Machine Learning

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 conjunto de dados entre a fonte de dado 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. Não é possível 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 de R personalizados 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 predefinidas

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