Bagikan melalui


Tutorial: Membuat model prediktif di R dengan pembelajaran mesin SQL

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Managed Instance yang lebih baru

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan melatih model prediktif di R. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database SQL Server dengan Pembelajaran Mesin Services atau di Kluster Big Data.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan melatih model prediktif di R. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database SQL Server dengan Pembelajaran Mesin Services.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan melatih model prediktif di R. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database dengan SQL Server R Services.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan melatih model prediktif di R. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database Azure SQL Managed Instance dengan Pembelajaran Mesin Services.

Dalam artikel ini, Anda akan mempelajari cara:

  • Melatih dua model pembelajaran mesin
  • Membuat prediksi dari kedua model
  • Bandingkan hasil untuk memilih model yang paling akurat

Di bagian satu, Anda mempelajari cara memulihkan database sampel.

Di bagian dua, Anda mempelajari cara memuat data dari database ke dalam bingkai data Python dan menyiapkan data di R.

Di bagian empat, Anda akan mempelajari cara menyimpan model dalam database, lalu membuat prosedur tersimpan dari skrip Python yang Anda kembangkan di bagian dua dan tiga. Prosedur tersimpan akan berjalan di server untuk membuat prediksi berdasarkan data baru.

Prasyarat

Bagian ketiga dari seri tutorial ini mengasumsikan Anda telah memenuhi prasyarat bagian satu, dan menyelesaikan langkah-langkah di bagian dua.

Melatih dua model

Untuk menemukan model terbaik untuk data sewa ski, buat dua model berbeda (regresi linier dan pohon keputusan) dan lihat mana yang memprediksi dengan lebih akurat. Anda akan menggunakan bingkai rentaldata data yang Anda buat di bagian salah satu seri ini.

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

Membuat prediksi dari kedua model

Gunakan fungsi prediksi untuk memprediksi jumlah sewa menggunakan setiap model terlatih.

#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

Membandingkan hasilnya

Sekarang Anda ingin melihat model mana yang memberikan prediksi terbaik. Cara cepat dan mudah untuk melakukan ini adalah dengan menggunakan fungsi plot dasar untuk melihat perbedaan antara nilai aktual dalam data pelatihan Anda dan nilai yang diprediksi.

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

Membandingkan dua model

Sepertinya model pohon keputusan adalah yang lebih akurat dari dua model.

Membersihkan sumber daya

Jika Anda tidak akan melanjutkan tutorial ini, hapus database TutorialDB.

Langkah berikutnya

Di bagian tiga seri tutorial ini, Anda mempelajari cara:

  • Melatih dua model pembelajaran mesin
  • Membuat prediksi dari kedua model
  • Bandingkan hasil untuk memilih model yang paling akurat

Untuk menyebarkan model pembelajaran mesin yang telah Anda buat, ikuti bagian empat dari seri tutorial ini: