Condividi tramite


Esercitazione creare un modello predittivo in R con apprendimento automatico in SQL

Si applica a: SQL Server 2016 (13.x) e versioni successive Istanza gestita di SQL di Azure

Nella terza parte di questa serie di esercitazioni in quattro parti si eseguirà il training di un modello predittivo in R. Nella parte successiva di questa serie questo modello verrà distribuito in un database di SQL Server con Machine Learning Services oppure in cluster Big Data.

Nella terza parte di questa serie di esercitazioni in quattro parti si eseguirà il training di un modello predittivo in R. Nella parte successiva di questa serie questo modello verrà distribuito in un database di SQL Server con Machine Learning Services.

Nella terza parte di questa serie di esercitazioni in quattro parti si eseguirà il training di un modello predittivo in R. Nella parte successiva di questa serie questo modello verrà distribuito in un database con R Services per SQL Server.

Nella terza parte di questa serie di esercitazioni in quattro parti si eseguirà il training di un modello predittivo in R. Nella parte successiva di questa serie il modello verrà distribuito in un database di Istanza gestita di SQL di Azure con Machine Learning Services.

In questo articolo si apprenderà come:

  • Eseguire il training di due modelli di Machine Learning
  • Eseguire stime da entrambi i modelli
  • Confrontare i risultati per scegliere il modello più accurato

Nella prima parte si è appreso come ripristinare il database di esempio.

Nella seconda parte si è appreso come caricare i dati da un database in un frame di dati Python e come preparare i dati in R.

Nelle quarta parte si apprenderà come archiviare il modello in un database e quindi creare le stored procedure dagli script Python sviluppati nella seconda e nella terza parte. Le stored procedure verranno quindi eseguite sul server per eseguire stime basate sui nuovi dati.

Prerequisiti

Nella terza parte di questa serie di esercitazioni si presuppone che siano stati soddisfatti i prerequisiti della prima parte e che siano stati completati i passaggi descritti nella seconda parte.

Eseguire il training di due modelli

Per trovare il modello migliore per i dati di noleggio di sci, creare due modelli diversi (regressione lineare e albero delle decisioni) e vedere quale esegue le stime nel modo più accurato. Si userà il frame di dati rentaldata creato nella prima parte di questa 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);

Eseguire stime da entrambi i modelli

Usare una funzione di stima per stimare i conteggi dei noleggi con ogni modello con training.

#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

Confrontare i risultati

A questo punto si desidera vedere quale dei modelli offre le stime migliori. Un modo semplice e rapido per eseguire questa operazione è usare una funzione di tracciamento di base per visualizzare la differenza tra i valori effettivi nei dati di training e i valori stimati.

#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")

Confronto tra i due modelli

Sembra che il modello di albero delle decisioni sia il più accurato dei due modelli.

Pulire le risorse

Se non si intende continuare con questa esercitazione, eliminare il database TutorialDB.

Passaggi successivi

Nella terza parte di questa serie di esercitazioni si è appreso come:

  • Eseguire il training di due modelli di Machine Learning
  • Eseguire stime da entrambi i modelli
  • Confrontare i risultati per scegliere il modello più accurato

Per distribuire il modello di Machine Learning creato, seguire la quarta parte di questa serie di esercitazioni: