Crear modelo R

Importante

El soporte técnico de Machine Learning Studio (clásico) finalizará el 31 de agosto de 2024. Se recomienda realizar la transición a Azure Machine Learning antes de esa fecha.

A partir del 1 de diciembre de 2021 no se podrán crear recursos de Machine Learning Studio (clásico). Hasta el 31 de agosto de 2024, puede seguir usando los recursos de Machine Learning Studio (clásico) existentes.

La documentación de ML Studio (clásico) se está retirando y es posible que no se actualice en el futuro.

Crea un modelo de R con recursos personalizados

Categoría: Transformación y manipulación de datos

Nota:

Solo se aplica a: Machine Learning Studio (clásico)

Hay módulos para arrastrar y colocar similares en el diseñador de Azure Machine Learning.

Información general sobre el módulo

En este artículo se describe cómo usar el módulo Crear modelo de R en Machine Learning Studio (clásico) para crear un modelo sin entrenar a partir de un script de R.

Puede basar el modelo en cualquier aprendiz que se incluya en un paquete de R en Machine Learning entorno.

Después de crear el modelo, puede usar Entrenar modelo para entrenarlo en un conjunto de datos, como cualquier otro aprendiz de Machine Learning. El modelo entrenado puede pasarse a Score Model (Puntuación del modelo) para usar el modelo para hacer predicciones. Luego, se puede guardar el modelo entrenado y se puede publicar el flujo de trabajo de puntuación como servicio web.

Advertencia

Actualmente no es posible pasar los resultados puntuados de un modelo de R a Evaluar modelo o Validar modelo de forma cruzada. Si necesita evaluar un modelo, puede escribir un script de R personalizado y ejecutarlo mediante el módulo Ejecutar script R .

Además de usar Create R Model (Crear modelo de R) para guardar y volver a usar módulos de R personalizados, puede crear su propia implementación de un proceso de modelado y administración de datos mediante R, cargar los archivos en formato comprimido en el área de trabajo y, a continuación, registrar el paquete como un módulo personalizado. Para obtener más información, vea Módulos de R personalizados.

Cómo configurar crear un modelo de R

El uso de este módulo requiere conocimientos intermedios o expertos de R. El módulo admite el uso de cualquier aprendiz que se incluya en los paquetes de R ya instalados en Machine Learning.

Este ejemplo de la Azure AI Gallery implementa un clasificador Bayes naïve de dos clases mediante el paquete popular e1070 : + Create R Model (+ Crear modelo de R). Se recomienda copiar el ejemplo en el área de trabajo y seguir el procedimiento.

  1. Agregue estos módulos al experimento: Crear modelo de R, Entrenar modelo, Puntuar modelo.

  2. En el panel Propiedades de Crear modelo de R, proporcione estos scripts:

  3. El experimento de ejemplo también incluye el módulo Ejecutar script de Python , que se usa para trazar gráficos para la evaluación del modelo. Este módulo es opcional al publicar en un servicio web, pero resulta útil al desarrollar el experimento.

    • Para ver los gráficos desde el script de Python, haga clic con el botón derecho en el módulo de Python, seleccione Dispositivo Pythony visualizar.
    • Para ver solo las métricas del modelo, haga clic con el botón derecho en el módulo python, seleccione Conjunto de datos de Python y, después, visualizar.

    Para obtener el código del módulo de Python opcional, consulte Módulo de Python para la evaluación de modelos.

Script de entrenamiento

En el ejemplo siguiente se muestra el tipo de código que puede usar en el script de R de Trainer.

Este script carga un paquete de R, crea un modelo mediante un aprendiz del paquete y configura las columnas de características y etiquetas mediante las constantes predefinidas y las funciones proporcionadas en Crear modelo 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)
  • La primera línea carga el paquete R, e1071, que contiene el algoritmo clasificador Bayes naive que deseamos utilizar. Puesto que se trata de uno de los paquetes preinstalados en el entorno Machine Learning, no es necesario descargar ni instalar el paquete.

  • Las líneas siguientes obtienen las columnas de características y la columna de etiqueta del conjunto de datos y las combinan en una nueva trama de datos de R denominada 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)
    
  • Tenga en cuenta el uso de estas funciones predefinidas:

    • get.label.columns() devuelve la columna seleccionada como etiqueta de clase en el módulo Entrenar modelo.

    • get.feature.columns()selecciona las columnas designadas como características del conjunto de datos.

      De forma predeterminada, todas las columnas excepto la columna de etiqueta se consideran características de Studio (clásico). Por lo tanto, para marcar columnas específicas como características, use Editar metadatos o seleccione un conjunto de columnas dentro del script de R.

    • get.feature.column.names(dataset) obtiene los nombres de columna de características del conjunto de datos.

  • Los nombres del conjunto de datos combinado se designan train.datacomo nombres para las columnas de y Class se crea un nombre temporal para la columna de etiqueta.

    names(train.data) <- c(feature.names, "Class")
    
  • La línea final del código define el algoritmo clasificador Bayes naïve como una función de las variables (características) y los resultados (etiquetas) en la trama train.data de datos.

    model <- naiveBayes(Class ~ ., train.data)
    
  • A lo largo de los scripts de creación, entrenamiento y puntuación del modelo, debe usar el nombre de variable model.

Script de puntuación

En el código siguiente se muestra el tipo de código de R que se proporcionaría en el script de R puntuador.

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • La primera línea carga el paquete.

  • La segunda línea calcula las probabilidades predichos para el conjunto de datos de puntuación mediante el modelo entrenado del script de entrenamiento, designado por el nombre de variable necesario, model.

  • La tercera línea aplica un umbral de 0,5 a las probabilidades al asignar las etiquetas de clase de predicción.

  • La última línea combina las etiquetas de clase y las probabilidades en la trama de datos de salida, scores.

  • La trama de datos que se pasa al módulo Score Model (Puntuar modelo) debe tener el nombre scores.

Script de evaluación de Python opcional

El experimento de ejemplo de la Azure AI Gallery incluye el siguiente script de Python, que se usa para generar métricas y gráficos para la evaluación del 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,

Publicación del flujo de trabajo del modelo de R personalizado como servicio web

Después de ejecutar el experimento, puede publicar el experimento completo como un servicio web.

Para obtener instrucciones actualizadas sobre cómo crear un servicio web a partir de un experimento de Studio (clásico), vea Paso 5 del tutorial: Implementación del servicio web Machine Learning web.

De forma predeterminada, el servicio web espera que se proporcionen todas las columnas de entrada de los datos de entrenamiento, incluida la columna de etiqueta. Puede agregar una instancia de Select Columns in Dataset (Seleccionar columnas en el conjunto de datos) entre el origen de datos de entrada y el módulo Score Model (Puntuar modelo) para excluir la etiqueta que está intentando predecir.

Notas técnicas

  • El módulo Crear modelo R solo admite el uso de CRAN R. No puede seleccionar otra versión de R ni usar Microsoft R Open.

  • El modelo se almacena en caché después de su primera ejecución y no se invoca en ejecuciones posteriores hasta que se realizan cambios en los scripts de entrada. Conviene tener en cuenta este comportamiento si los scripts R usan lo siguiente:

    • Funciones que generan números aleatorios
    • Funciones que generan números aleatorios
    • Otras funciones no deterministas
  • Los modelos de R personalizados creados con este módulo no se pueden usar con estos módulos:

  • Los modelos R no realizan automáticamente la normalización de características de datos de categorías ni controlan los valores que faltan. El control de tales variables debe realizarse en los scripts R de entrenamiento y de puntuación.

Tabla de funciones predefinidas

Uso Descripción
get.feature.columns(dataset) Obtiene todas las columnas de característica.
get.label.column(dataset, label.type=TrueLabelType) Obtiene la columna de etiqueta de un tipo determinado.

Consulte la sección Constantes para obtener una lista de los tipos disponibles.
get.label.column.names(dataset) Obtiene los nombres de todas las columnas de etiqueta.
get.label.column.name(dataset, label.type=TrueLabelType) Obtiene el nombre de la columna de etiqueta de un tipo determinado.

Consulte la sección Constantes para obtener una lista de los tipos disponibles.
get.label.column.types(dataset) Obtiene los tipos de todas las columnas de etiqueta.
get.feature.column.names(dataset) Obtiene los nombres de todas las columnas de característica.
dataset < - set.score.column(dataset, score.type, column.name) Establece la columna de puntuación de un tipo determinado.

Consulte la sección Constantes para obtener una lista de los tipos disponibles.
dataset < - set.feature.channel(dataset, channel.name, column.names) Establece el canal de característica de un nombre determinado.

Consulte la sección Constantes para obtener una lista de los nombres disponibles.

Tabla de constantes predefinidas

Constante Descripción
TrueLabelType Tipo de columna de etiqueta true
ScoredLabelType Tipo de columna de etiqueta puntuada
RawScoreType Tipo de columna de puntuación sin formato
CalibratedScoreType Tipo de columna de puntuación calibrada
ScoredProbabilitiesMulticlassColumnTypePattern Patrón para preparar el tipo de columna de probabilidades puntuadas para el clasificador multiclase
BayesianLinearRegressionScoresFeatureChannel Nombre del canal de característica con puntuaciones de regresión lineal bayesiana
BinaryClassificationScoresFeatureChannel Nombre del canal de característica con puntuaciones de clasificación binaria
MulticlassClassificationScoresFeatureChannel Nombre del canal de característica con puntuaciones de clasificación multiclase
OrdinalRegressionScoresFeatureChannel Nombre del canal de característica con puntuaciones de regresión ordinal
RegressionScoresFeatureChannel Nombre del canal de característica con puntuaciones de regresión

Ejemplos

Para obtener ejemplos adicionales de cómo usar este módulo en experimentos de aprendizaje automático, consulte el Azure AI Gallery.

Entradas esperadas

Nombre Tipo Descripción
Script R de entrenamiento Script Script R que toma como entrada un conjunto de datos y genera un modelo no entrenado.
Script R de puntuación Script Script R que toma como entrada un modelo y un conjunto de datos y genera las puntuaciones especificadas en el script.

Salidas

Nombre Tipo Descripción
Modelo Interfaz ILearner Modelo no entrenado.

Consulte también

Ejecución script de R
Módulos del lenguaje R