Crear modelo R

Crea un modelo de R con recursos personalizados

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

Nota

Se aplica a: machine learning Studio (clásico)

Este contenido solo pertenece a Studio (clásico). Se han agregado módulos similares de arrastrar y colocar al diseñador de Azure Machine Learning. Obtenga más información en este artículo comparativa de las dos versiones.

Información general sobre el módulo

En este artículo se describe cómo usar el módulo crear modelo de r en Azure machine learning Studio (clásico) para crear un modelo no entrenado a partir de un script de R.

Puede basar el modelo en cualquier aprendiz que esté incluido en un paquete de R en el entorno de Azure Machine Learning.

Después de crear el modelo, puede usar Train model (Entrenar modelo) para entrenar el modelo en un conjunto de datos, al igual que cualquier otro aprendiz en Azure 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 para evaluar el modelo o el modelo de validación cruzada. Si necesita evaluar un modelo, puede escribir un script de R personalizado y ejecutarlo mediante el módulo Ejecutar script de r .

Además de usar el modelo Create r para guardar y volver a usar módulos de r personalizados, puede crear su propia implementación de un proceso de administración de datos y modelado 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, consulte módulos R personalizados.

Cómo configurar Create R Model

El uso de este módulo requiere un conocimiento intermedio o experto de R. El módulo admite el uso de cualquier aprendiz incluido en los paquetes de R ya instalados en Azure Machine Learning.

Este ejemplo del Azure AI Gallery implementa un clasificador Bayes Naive de dos clases mediante el conocido e1070 paquete: + crear modelo R. Se recomienda copiar el ejemplo en el área de trabajo y seguir el tutorial.

  1. Agregue estos módulos al experimento: crear modelo R, entrenar modeloy puntuar modelo.

  2. En el panel propiedades de crear modelo 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 de modelos. Este módulo es opcional al publicar en un servicio Web, pero resulta útil al desarrollar el experimento.

    • Para ver los gráficos del script de Python, haga clic con el botón derecho en el módulo de Python, seleccione el dispositivo Python y seleccione visualizar.
    • Para ver solo las métricas del modelo, haga clic con el botón derecho en el módulo de Python, seleccione conjunto de información de Python y seleccione visualizar.

    Para el código del módulo opcional de Python, vea 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 del instructor.

Este script carga un paquete de R, crea un modelo mediante un aprendiz del paquete y configura las columnas de característica y etiqueta mediante las constantes y funciones predefinidas 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 es uno de los paquetes previamente instalados en el entorno de Azure Machine Learning, no es necesario descargarlo o instalarlo.

  • Las líneas siguientes obtienen las columnas de características y la columna de etiqueta del conjunto de datos, y las combina 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 que se designaron como características en el conjunto de elementos.

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

    • get.feature.column.names(dataset) Obtiene los nombres de las columnas de características del conjunto de DataSet.

  • Los nombres del conjunto de DataSet combinado se designan como los nombres de las columnas de train.data y se crea un nombre temporal Class para la columna de etiqueta.

    names(train.data) <- c(feature.names, "Class")
    
  • La última línea del código define el algoritmo clasificador Bayes Naive como una función de las variables (características) y los resultados (etiquetas) en la train.data trama 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 la variable model .

Script de puntuación

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

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 de predicción para el conjunto de resultados de puntuación mediante el modelo entrenado del script de entrenamiento, designado por el nombre de variable requerido, 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 en el Azure AI Gallery incluye el siguiente script de Python, que se usa para generar métricas y gráficos para la evaluación 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,

Publicar el flujo de trabajo del modelo de R personalizado como un 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 desde un experimento de Studio (clásico), vea el paso 5 del tutorial: implementar el servicio web Azure machine learning

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 seleccionar columnas en el conjunto de datos entre el origen de datos de entrada y el módulo puntuar modelo para excluir la etiqueta que está intentando predecir.

Notas técnicas

  • El módulo Create r Model solo admite el uso de Cran r. No se 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 más ejemplos de cómo usar este módulo en experimentos de aprendizaje automático, vea la 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

Ejecutar script de R
Módulos del lenguaje R