Compartir vía


Tutorial: Creación de un modelo predictivo en R con el aprendizaje automático de SQL

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Managed Instance

En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente parte de esta serie, implementará este modelo en una base de datos de SQL Server con Machine Learning Services o en clústeres de macrodatos.

En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente parte de esta serie, implementará este modelo en una base de datos de SQL Server con Machine Learning Services.

En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente parte de esta serie, implementará este modelo en una base de datos con SQL Server R Services.

En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente parte de esta serie, implementará este modelo en una base de datos de Azure SQL Managed Instance con Machine Learning Services.

En este artículo, aprenderá a:

  • Entrenar dos modelos de aprendizaje automático
  • Hacer predicciones a partir de ambos modelos
  • Comparar los resultados para elegir el modelo más preciso

En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.

En la parte dos, ha obtenido información sobre cómo cargar los datos desde una base de datos en una trama de datos de Python y a preparar los datos en R.

En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos almacenados a partir de los scripts de Python desarrollados en las partes dos y tres. Los procedimientos almacenados se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.

Prerrequisitos

En la parte tres de esta serie de tutoriales, se da por hecho que ha completado los requisitos previos de la parte uno y que ha realizado los pasos de la parte dos.

Entrenamiento de dos modelos

Para encontrar el mejor modelo para los datos de alquiler de esquís, cree dos modelos distintos (regresión lineal y árbol de decisión) y vea cuál es más preciso en sus predicciones. Deberá usar la trama de datos rentaldata que creó en la primera parte de esta serie.

#First, split the dataset into two different sets:
# one for training the model and the other for validating it
train_data = rentaldata[rentaldata$Year < 2015,];
test_data  = rentaldata[rentaldata$Year == 2015,];


#Use the RentalCount column to check the quality of the prediction against actual values
actual_counts <- test_data$RentalCount;

#Model 1: Use lm to create a linear regression model, trained with the training data set
model_lm <- lm(RentalCount ~  Month + Day + WeekDay + Snow + Holiday, data = train_data);

#Model 2: Use rpart to create a decision tree model, trained with the training data set
library(rpart);
model_rpart  <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = train_data);

Hacer predicciones a partir de ambos modelos

Use una función de predicción para predecir el número de alquileres con cada modelo entrenado.

#Use both models to make predictions using the test data set.
predict_lm <- predict(model_lm, test_data)
predict_lm <- data.frame(RentalCount_Pred = predict_lm, RentalCount = test_data$RentalCount, 
                         Year = test_data$Year, Month = test_data$Month,
                         Day = test_data$Day, Weekday = test_data$WeekDay,
                         Snow = test_data$Snow, Holiday = test_data$Holiday)

predict_rpart  <- predict(model_rpart,  test_data)
predict_rpart <- data.frame(RentalCount_Pred = predict_rpart, RentalCount = test_data$RentalCount, 
                         Year = test_data$Year, Month = test_data$Month,
                         Day = test_data$Day, Weekday = test_data$WeekDay,
                         Snow = test_data$Snow, Holiday = test_data$Holiday)

#To verify it worked, look at the top rows of the two prediction data sets.
head(predict_lm);
head(predict_rpart);
    RentalCount_Pred  RentalCount  Month  Day  WeekDay  Snow  Holiday
1         27.45858          42       2     11     4      0       0
2        387.29344         360       3     29     1      0       0
3         16.37349          20       4     22     4      0       0
4         31.07058          42       3      6     6      0       0
5        463.97263         405       2     28     7      1       0
6        102.21695          38       1     12     2      1       0
    RentalCount_Pred  RentalCount  Month  Day  WeekDay  Snow  Holiday
1          40.0000          42       2     11     4      0       0
2         332.5714         360       3     29     1      0       0
3          27.7500          20       4     22     4      0       0
4          34.2500          42       3      6     6      0       0
5         645.7059         405       2     28     7      1       0
6          40.0000          38       1     12     2      1       0

Comparación de los resultados

Ahora quiere ver cuál de los modelos ofrece las mejores predicciones. Una manera rápida y sencilla de hacerlo es usar una función de trazado básica para ver la diferencia entre los valores reales de los datos de entrenamiento y los valores previstos.

#Use the plotting functionality in R to visualize the results from the predictions
par(mfrow = c(1, 1));
plot(predict_lm$RentalCount_Pred - predict_lm$RentalCount, main = "Difference between actual and predicted. lm")
plot(predict_rpart$RentalCount_Pred  - predict_rpart$RentalCount,  main = "Difference between actual and predicted. rpart")

Comparación de los dos modelos

Parece que el modelo de árbol de decisión es el más preciso de los dos modelos.

Limpieza de recursos

Si no quiere continuar con este tutorial, elimine la base de datos TutorialDB.

Pasos siguientes

En la tercera parte de la serie de tutoriales, ha aprendido a:

  • Entrenar dos modelos de aprendizaje automático
  • Hacer predicciones a partir de ambos modelos
  • Comparar los resultados para elegir el modelo más preciso

Para implementar el modelo de aprendizaje automático que ha creado, siga la parte cuatro de esta serie de tutoriales: