Sdílet prostřednictvím


Kurz: Vytvoření prediktivního modelu v R pomocí strojového učení SQL

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL Managed Instance

Ve třetí části této čtyřdílné série kurzů vytrénujete prediktivní model v jazyce R. V další části této série nasadíte tento model do databáze SQL Serveru se službou Machine Learning Services nebo v clusterech s velkými objemy dat.

Ve třetí části této čtyřdílné série kurzů vytrénujete prediktivní model v jazyce R. V další části této série nasadíte tento model do databáze SQL Serveru se službou Machine Learning Services.

Ve třetí části této čtyřdílné série kurzů vytrénujete prediktivní model v jazyce R. V další části této série nasadíte tento model do databáze se službami SQL Server R Services.

Ve třetí části této čtyřdílné série kurzů vytrénujete prediktivní model v jazyce R. V další části této série nasadíte tento model do databáze azure SQL Managed Instance se službou Machine Learning Services.

V tomto článku se dozvíte, jak:

  • Trénování dvou modelů strojového učení
  • Vytváření předpovědí z obou modelů
  • Porovnání výsledků a výběr nejpřesnějšího modelu

V první části jste zjistili, jak obnovit ukázkovou databázi.

V druhé části jste zjistili, jak načíst data z databáze do datového rámce Pythonu a připravit data v jazyce R.

Ve čtvrté části se dozvíte, jak model uložit do databáze a pak vytvořit uložené procedury ze skriptů Pythonu, které jste vytvořili ve dvou a třech částech. Uložené procedury budou na serveru spuštěny, aby prováděly předpovědi na základě nových dat.

Prerequisites

Třetí část této série kurzů předpokládá, že jste splnili požadavky první části a dokončili kroky v druhé části.

Trénování dvou modelů

Pokud chcete najít nejlepší model pro data půjčovny lyží, vytvořte dva různé modely (lineární regrese a rozhodovací strom) a zjistěte, který z nich predikuje přesněji. Použijete datový rámec rentaldata , který jste vytvořili v první části této řady.

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

Vytváření předpovědí z obou modelů

Pomocí funkce predict můžete předpovědět počty pronájmů pomocí každého natrénovaného modelu.

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

Tady je soubor výsledků.

    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

Porovnání výsledků

Teď chcete zjistit, které modely poskytují nejlepší předpovědi. Rychlým a snadným způsobem, jak to udělat, je použít základní vykreslovací funkci k zobrazení rozdílu mezi skutečnými hodnotami v trénovacích datech a predikovanými hodnotami.

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

Porovnání dvou modelů

Vypadá to, že model rozhodovacího stromu je přesnější ze dvou modelů.

Vyčistěte zdroje

Pokud nebudete pokračovat v tomto kurzu, odstraňte databázi TutorialDB.

Další kroky

Ve třetí části této série kurzů jste se naučili:

  • Trénování dvou modelů strojového učení
  • Vytváření předpovědí z obou modelů
  • Porovnání výsledků a výběr nejpřesnějšího modelu

Pokud chcete nasadit model strojového učení, který jste vytvořili, postupujte podle části 4 této série kurzů: