Partilhar via


Tutorial: Criar um modelo preditivo em R com aprendizado de máquina SQL

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada SQL do Azure

Na terceira parte desta série de tutoriais de quatro partes, você treinará um modelo preditivo em R. Na próxima parte desta série, você implantará esse modelo em um banco de dados do SQL Server com Serviços de Aprendizado de Máquina ou em Clusters de Big Data.

Na terceira parte desta série de tutoriais de quatro partes, você treinará um modelo preditivo em R. Na próxima parte desta série, você implantará esse modelo em um banco de dados do SQL Server com os Serviços de Aprendizado de Máquina.

Na terceira parte desta série de tutoriais de quatro partes, você treinará um modelo preditivo em R. Na próxima parte desta série, você implantará esse modelo em um banco de dados com o SQL Server R Services.

Na terceira parte desta série de tutoriais de quatro partes, você treinará um modelo preditivo em R. Na próxima parte desta série, você implantará esse modelo em um banco de dados de Instância Gerenciada SQL do Azure com Serviços de Aprendizado de Máquina.

Neste artigo, você aprenderá a:

  • Treinar dois modelos de aprendizado de máquina
  • Faça previsões a partir de ambos os modelos
  • Compare os resultados para escolher o modelo mais preciso

Na primeira parte, você aprendeu como restaurar o banco de dados de exemplo.

Na segunda parte, você aprendeu como carregar os dados de um banco de dados em um quadro de dados Python e preparar os dados em R.

Na quarta parte, você aprenderá como armazenar o modelo em um banco de dados e, em seguida, criar procedimentos armazenados a partir dos scripts Python desenvolvidos nas partes dois e três. Os procedimentos armazenados serão executados no servidor para fazer previsões com base em novos dados.

Prerequisites

A terceira parte desta série de tutoriais pressupõe que você tenha cumprido os pré-requisitos da primeira parte e concluído as etapas da segunda parte.

Treinar dois modelos

Para encontrar o melhor modelo para os dados de aluguel de esqui, crie dois modelos diferentes (regressão linear e árvore de decisão) e veja qual deles está prevendo com mais precisão. Você usará o quadro rentaldata de dados criado na primeira parte desta série.

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

Faça previsões a partir de ambos os modelos

Use uma função de previsão para prever as contagens de aluguel usando cada modelo treinado.

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

Aqui está o conjunto de resultados.

    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

Compare os resultados

Agora você quer ver qual dos modelos dá as melhores previsões. Uma maneira rápida e fácil de fazer isso é usar uma função de plotagem básica para exibir a diferença entre os valores reais em seus dados de treinamento e os 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")

Comparando os dois modelos

Parece que o modelo de árvore de decisão é o mais preciso dos dois modelos.

Limpeza de recursos

Se você não quiser continuar com este tutorial, exclua o banco de dados TutorialDB.

Próximos passos

Na terceira parte desta série de tutoriais, você aprendeu como:

  • Treinar dois modelos de aprendizado de máquina
  • Faça previsões a partir de ambos os modelos
  • Compare os resultados para escolher o modelo mais preciso

Para implantar o modelo de aprendizado de máquina que você criou, siga a quarta parte desta série de tutoriais: