Create R Model

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).

La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Crea un modello R usando risorse personalizzate

Categoria: Trasformazione/Manipolazione dei dati

Nota

Si applica a: Machine Learning Studio (versione classica)

Nella finestra di progettazione sono disponibili moduli simili Azure Machine Learning trascinamento della selezione.

Panoramica del modulo

Questo articolo descrive come usare il modulo Create R Model (Crea modello R) in Machine Learning Studio (versione classica) per creare un modello senza training da uno script R.

È possibile basare il modello su qualsiasi apprendimento incluso in un pacchetto R nell'Machine Learning virtuale.

Dopo aver creato il modello, è possibile usare Train Model (Training modello) per eseguire il training del modello su un set di dati, come qualsiasi altro strumento Machine Learning. Il modello con training può essere passato a Score Model per usare il modello per eseguire stime. Il modello con training può quindi essere salvato e il flusso di lavoro per l'assegnazione dei punteggi può essere pubblicato come servizio Web.

Avviso

Attualmente non è possibile passare i risultati con punteggio di un modello R a Evaluate Model o Cross-Validate Model. Se è necessario valutare un modello, è possibile scrivere uno script R personalizzato ed eseguirlo usando il modulo Execute R Script (Esegui script R).

Oltre a usare Il modello R per salvare e usare di nuovo i moduli R personalizzati, è possibile creare un'implementazione personalizzata di un processo di modellazione e gestione dei dati usando R, caricare i file in formato compresso nell'area di lavoro e quindi registrare il pacchetto come modulo personalizzato. Per altre informazioni, vedere Moduli R personalizzati.

Come configurare La creazione di un modello R

L'uso di questo modulo richiede una conoscenza intermedia o esperta di R. Il modulo supporta l'uso di qualsiasi strumento di apprendimento incluso nei pacchetti R già installati in Machine Learning.

Questo esempio della Azure AI Gallery implementa un classificatore Naive Bayes a due classi usando il pacchetto e1070 comune: + Create R Model (+ Crea modello R). È consigliabile copiare l'esempio nell'area di lavoro e seguire la procedura.

  1. Aggiungere questi moduli all'esperimento: Create R Model(Crea modello R), Train Model (Training modello), Score Model (Punteggio modello).

  2. Nel riquadro Proprietà di Crea modello R specificare gli script seguenti:

  3. L'esperimento di esempio include anche il modulo Execute Python Script (Esegui script Python ), usato per tracciare i grafici per la valutazione del modello. Questo modulo è facoltativo durante la pubblicazione in un servizio Web, ma è utile quando si sviluppa l'esperimento.

    • Per visualizzare i grafici dallo script Python, fare clic con il pulsante destro del mouse sul modulo Python, selezionare Dispositivo Python e selezionare Visualizza.
    • Per visualizzare solo le metriche del modello, fare clic con il pulsante destro del mouse sul modulo Python, selezionare Python Dataset (Set di dati Python) e selezionare Visualize (Visualizza).

    Per il codice nel modulo Python facoltativo, vedere Modulo Python per la valutazione del modello.

Script di training

L'esempio seguente illustra il tipo di codice che è possibile usare nello script R di Trainer.

Questo script carica un pacchetto R, crea un modello usando uno strumento di apprendimento dal pacchetto e configura le colonne di caratteristiche ed etichette usando le costanti e le funzioni predefinite fornite in Creare un modello 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)
  • La prima riga carica il pacchetto R, e1071, che contiene l'algoritmo di classificazione Naïve Bayes che si desidera usare. Poiché si tratta di uno dei pacchetti preinstallati nell'ambiente Machine Learning, non è necessario scaricare o installare il pacchetto.

  • Le righe seguenti ottengono le colonne delle caratteristiche e la colonna etichetta dal set di dati e le combinano in un nuovo frame di dati R denominato 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)
    
  • Si noti l'uso di queste funzioni predefinite:

    • get.label.columns() restituisce la colonna selezionata come etichetta di classe nel modulo Train Model .

    • get.feature.columns()seleziona le colonne designate come caratteristiche nel set di dati.

      Per impostazione predefinita, tutte le colonne ad eccezione della colonna etichetta sono considerate funzionalità in Studio (versione classica). Pertanto, per contrassegnare colonne specifiche come funzionalità, usare Modifica metadati o selezionare un set di colonne all'interno dello script R.

    • get.feature.column.names(dataset) ottiene i nomi delle colonne delle caratteristiche dal set di dati.

  • I nomi del set di dati combinato vengono designati come nomi per le colonne in train.datae Class viene creato un nome temporaneo per la colonna etichetta.

    names(train.data) <- c(feature.names, "Class")
    
  • La riga finale del codice definisce l'algoritmo di classificazione Naive Bayes come funzione delle variabili (caratteristiche) e dei risultati (etichette) train.data nel frame di dati.

    model <- naiveBayes(Class ~ ., train.data)
    
  • Nel corso degli script di creazione, training e assegnazione dei punteggi del modello, è necessario usare il nome della variabile model.

Scoring script (Script di assegnazione punteggi)

Il codice seguente illustra il tipo di codice R che è necessario fornire nello 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)
  • La prima riga carica il pacchetto.

  • La seconda riga calcola le probabilità stimate per il set di dati di assegnazione dei punteggi usando il modello con training dallo script di training, designato dal nome della variabile richiesta, model.

  • La terza riga applica una soglia di 0,5 alle probabilità durante l'assegnazione delle etichette di classe stimate.

  • La riga finale combina le etichette di classe e le probabilità nel frame di dati di output scores.

  • Il frame di dati che viene passato al modulo Score Model deve avere il nome scores.

Script di valutazione Python facoltativo

L'esperimento di esempio nella Azure AI Gallery include lo script Python seguente, usato per generare metriche e grafici per la valutazione del modello.

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,

Pubblicare il flusso di lavoro del modello R personalizzato come servizio Web

Dopo aver eseguito l'esperimento, è possibile pubblicare l'esperimento completo come servizio Web.

Per istruzioni aggiornate su come creare un servizio Web da un esperimento di Studio (versione classica), vedere Passaggio 5 della procedura dettagliata: Distribuire il Machine Learning Web

Per impostazione predefinita, il servizio Web prevede che vengano fornite tutte le colonne di input dei dati di training, inclusa la colonna di etichetta. È possibile aggiungere un'istanza di Select Columns in Dataset tra l'origine dati di input e il modulo Score Model per escludere l'etichetta che si sta tentando di stimare.

Note tecniche

  • Il modulo Create R Model (Crea modello R ) supporta solo l'uso di CRAN R. Non è possibile selezionare un'altra versione di R o usare Microsoft R Open.

  • Il modello viene memorizzato nella cache dopo la prima esecuzione del modulo e quest'ultimo non viene richiamato nelle esecuzioni successive fino a quando non vengono apportate modifiche negli script di input. Considerare questo comportamento se gli script R usano uno o più dei seguenti tipi di elementi:

    • Funzioni che generano numeri casuali
    • Funzioni che generano numeri casuali
    • Altre funzioni non deterministiche
  • I modelli R personalizzati creati con questo modulo non possono essere usati con questi moduli:

  • I modelli R non eseguono automaticamente la normalizzazione delle funzioni dei dati categorici né gestiscono i valori mancanti. La gestione di tali variabili deve essere eseguita all'interno degli script R di training e assegnazione dei punteggi.

Tabella delle funzioni predefinite

Utilizzo Descrizione
get.feature.columns(dataset) Ottiene tutte le colonne di funzione.
get.label.column(dataset, label.type=TrueLabelType) Ottiene la colonna di etichetta, dato il tipo.

Per un elenco dei tipi disponibili, vedere la sezione Costanti.
get.label.column.names(dataset) Ottiene i nomi di tutte le colonne di etichetta.
get.label.column.name(dataset, label.type=TrueLabelType) Ottiene il nome della colonna di etichetta, dato il tipo.

Per un elenco dei tipi disponibili, vedere la sezione Costanti.
get.label.column.types(dataset) Ottiene i tipi di tutte le colonne di etichetta.
get.feature.column.names(dataset) Ottiene i nomi di tutte le colonne di funzione.
dataset < - set.score.column(dataset, score.type, column.name) Imposta la colonna di punteggio, dato un tipo.

Per un elenco dei tipi disponibili, vedere la sezione Costanti.
dataset < - set.feature.channel(dataset, channel.name, column.names) Imposta il canale di funzione, dato un nome.

Per un elenco dei nomi disponibili, vedere la sezione Costanti.

Tabella delle costanti predefinite

Costante Descrizione
TrueLabelType Tipo di colonna di etichetta true
ScoredLabelType Tipo di colonna di etichetta con punteggi
RawScoreType Tipo di colonna con punteggi non elaborati
CalibratedScoreType Tipo di colonna con punteggi calibrati
ScoredProbabilitiesMulticlassColumnTypePattern Modello per preparare il tipo di colonna con probabilità con punteggi per il classificatore multiclasse
BayesianLinearRegressionScoresFeatureChannel Nome del canale di funzione con punteggi di regressione lineare bayesiana
BinaryClassificationScoresFeatureChannel Nome del canale di funzione con punteggi di classificazione binaria
MulticlassClassificationScoresFeatureChannel Nome del canale di funzione con punteggi di classificazione multiclasse
OrdinalRegressionScoresFeatureChannel Nome del canale di funzione con punteggi di regressione ordinale
RegressionScoresFeatureChannel Nome del canale di funzione con punteggi di regressione

Esempio

Per altri esempi su come usare questo modulo negli esperimenti di Machine Learning, vedere il Azure AI Gallery.

Input previsti

Nome Tipo Descrizione
Trainer R script Script Script R che accetta un set di dati come input e restituisce un modello senza training.
Scorer R script Script Script R che accetta un modello e un set di dati come input e restituisce i punteggi specificati nello script.

Output

Nome Tipo Descrizione
Modellare ILearner interface Modello senza training

Vedi anche

Execute R Script (Esegui script R)
Moduli del linguaggio R