Tutorial: Menyebarkan 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 empat dari seri tutorial empat bagian ini, Anda akan menyebarkan model pembelajaran mesin yang dikembangkan di R ke SQL Server Pembelajaran Mesin Services atau di Kluster Big Data.
Di bagian empat seri tutorial empat bagian ini, Anda akan menyebarkan model pembelajaran mesin yang dikembangkan di R ke SQL Server menggunakan Pembelajaran Mesin Services.
Di bagian empat dari seri tutorial empat bagian ini, Anda akan menyebarkan model pembelajaran mesin yang dikembangkan di R ke SQL Server menggunakan SQL Server R Services.
Di bagian empat dari seri tutorial empat bagian ini, Anda akan menyebarkan model pembelajaran mesin yang dikembangkan dalam R ke Azure SQL Managed Instance menggunakan Pembelajaran Mesin Services.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat prosedur tersimpan yang menghasilkan model pembelajaran mesin
- Menyimpan model dalam tabel database
- Membuat prosedur tersimpan yang membuat prediksi menggunakan model
- Jalankan model dengan data baru
Di bagian satu, Anda mempelajari cara memulihkan database sampel.
Di bagian dua, Anda mempelajari cara mengimpor database sampel lalu menyiapkan data yang akan digunakan untuk melatih model prediktif di R.
Di bagian tiga, Anda mempelajari cara membuat dan melatih beberapa model pembelajaran mesin di R, lalu memilih yang paling akurat.
Prasyarat
Bagian empat dari tutorial ini mengasumsikan Anda memenuhi prasyarat bagian satu dan menyelesaikan langkah-langkah di bagian dua dan bagian tiga.
Membuat prosedur tersimpan yang menghasilkan model
Di bagian tiga seri tutorial ini, Anda memutuskan bahwa model pohon keputusan (dtree) adalah yang paling akurat. Sekarang, menggunakan skrip R yang Anda kembangkan, buat prosedur tersimpan (generate_rental_model
) yang melatih dan menghasilkan model dtree menggunakan rpart dari paket R.
Jalankan perintah berikut di Azure Data Studio.
USE [TutorialDB]
DROP PROCEDURE IF EXISTS generate_rental_model;
GO
CREATE PROCEDURE generate_rental_model (@trained_model VARBINARY(max) OUTPUT)
AS
BEGIN
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
rental_train_data$Month <- factor(rental_train_data$Month);
rental_train_data$Day <- factor(rental_train_data$Day);
rental_train_data$Holiday <- factor(rental_train_data$Holiday);
rental_train_data$Snow <- factor(rental_train_data$Snow);
rental_train_data$WeekDay <- factor(rental_train_data$WeekDay);
#Create a dtree model and train it using the training data set
library(rpart);
model_dtree <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = rental_train_data);
#Serialize the model before saving it to the database table
trained_model <- as.raw(serialize(model_dtree, connection=NULL));
'
, @input_data_1 = N'
SELECT RentalCount
, Year
, Month
, Day
, WeekDay
, Snow
, Holiday
FROM dbo.rental_data
WHERE Year < 2015
'
, @input_data_1_name = N'rental_train_data'
, @params = N'@trained_model varbinary(max) OUTPUT'
, @trained_model = @trained_model OUTPUT;
END;
GO
Menyimpan model dalam tabel database
Buat tabel di database TutorialDB lalu simpan model ke tabel.
Buat tabel (
rental_models
) untuk menyimpan model.USE TutorialDB; DROP TABLE IF EXISTS rental_models; GO CREATE TABLE rental_models ( model_name VARCHAR(30) NOT NULL DEFAULT('default model') PRIMARY KEY , model VARBINARY(MAX) NOT NULL ); GO
Simpan model ke tabel sebagai objek biner, dengan nama model "DTree".
-- Save model to table TRUNCATE TABLE rental_models; DECLARE @model VARBINARY(MAX); EXECUTE generate_rental_model @model OUTPUT; INSERT INTO rental_models ( model_name , model ) VALUES ( 'DTree' , @model ); SELECT * FROM rental_models;
Membuat prosedur tersimpan yang membuat prediksi
Buat prosedur tersimpan (predict_rentalcount_new
) yang membuat prediksi menggunakan model terlatih dan sekumpulan data baru.
-- Stored procedure that takes model name and new data as input parameters and predicts the rental count for the new data
USE [TutorialDB]
DROP PROCEDURE IF EXISTS predict_rentalcount_new;
GO
CREATE PROCEDURE predict_rentalcount_new (
@model_name VARCHAR(100)
, @input_query NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @model VARBINARY(MAX) = (
SELECT model
FROM rental_models
WHERE model_name = @model_name
);
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
#Convert types to factors
rentals$Month <- factor(rentals$Month);
rentals$Day <- factor(rentals$Day);
rentals$Holiday <- factor(rentals$Holiday);
rentals$Snow <- factor(rentals$Snow);
rentals$WeekDay <- factor(rentals$WeekDay);
#Before using the model to predict, we need to unserialize it
rental_model <- unserialize(model);
#Call prediction function
rental_predictions <- predict(rental_model, rentals);
rental_predictions <- data.frame(rental_predictions);
'
, @input_data_1 = @input_query
, @input_data_1_name = N'rentals'
, @output_data_1_name = N'rental_predictions'
, @params = N'@model varbinary(max)'
, @model = @model
WITH RESULT SETS(("RentalCount_Predicted" FLOAT));
END;
GO
Jalankan model dengan data baru
Sekarang Anda dapat menggunakan prosedur predict_rentalcount_new
tersimpan untuk memprediksi jumlah sewa dari data baru.
-- Use the predict_rentalcount_new stored procedure with the model name and a set of features to predict the rental count
EXECUTE dbo.predict_rentalcount_new @model_name = 'DTree'
, @input_query = '
SELECT CONVERT(INT, 3) AS Month
, CONVERT(INT, 24) AS Day
, CONVERT(INT, 4) AS WeekDay
, CONVERT(INT, 1) AS Snow
, CONVERT(INT, 1) AS Holiday
';
GO
Anda akan melihat hasil yang mirip dengan yang berikut ini.
RentalCount_Predicted
332.571428571429
Anda telah berhasil membuat, melatih, dan menyebarkan model dalam database. Anda kemudian menggunakan model tersebut dalam prosedur tersimpan untuk memprediksi nilai berdasarkan data baru.
Membersihkan sumber daya
Setelah selesai menggunakan database TutorialDB, hapus dari server Anda.
Langkah berikutnya
Di bagian empat seri tutorial ini, Anda mempelajari cara:
- Membuat prosedur tersimpan yang menghasilkan model pembelajaran mesin
- Menyimpan model dalam tabel database
- Membuat prosedur tersimpan yang membuat prediksi menggunakan model
- Jalankan model dengan data baru
Untuk mempelajari selengkapnya tentang menggunakan R di Pembelajaran Mesin Services, lihat:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk