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.
- Consulte la información acerca de traslado de proyectos de aprendizaje automático de ML Studio (clásico) a Azure Machine Learning.
- Más información sobre Azure Machine Learning.
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.
Agregue estos módulos al experimento: Crear modelo de R, Entrenar modelo, Puntuar modelo.
En el panel Propiedades de Crear modelo de R, proporcione estos scripts:
Script R del instructor: el script de R que se proporciona aquí se usa para entrenar el modelo. Al ejecutar el experimento, se implementa en el módulo Entrenar modelo.
Script de R puntuador: el script de R que se proporciona en esta entrada es solo para puntuación. al ejecutar el experimento, se implementa en el módulo Score Model (Puntuar modelo).
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.data
como nombres para las columnas de yClass
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:
- Tune Model Hyperparameters (Optimizar hiperparámetros del modelo)
- Modelo de validación cruzada
- Uno frente a todos multiclase
- Regresión ordinal
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. |