預測
是使用過去的歷史資料來推估未來的情況,模型的準確率越高代表在預測未來情況的時候將可能越準。此外,資料量多寡、資料的穩定性也有助於模型準確率提升
迴歸模型
是最簡單且常見的連續型預測模型,使用迴歸模型時資料須包含自變數(X)和應變數(Y),也是一種監督式學習
模型,在訓練模型的時候需要有標籤(Y)的資料,舉個例子: 利用氣溫(X)來預測商店冰淇淋的銷售數(Y)
# 資料
ice_cream_predict = data.frame(
temperature = c(30, 35, 25, 30, 23, 34, 10, 25, 15, 10,
42, 38, 31, 25, 30, 33, 13, 26, 17, 12,
35, 32, 33, 27, 36, 36, 15, 28, 15, 13,
35, 34, 13, 23, 30, 30, 10, 25, 19, 15),
sales = c(47, 48, 42, 45, 42, 47, 33, 42, 38, 35,
53, 49, 46, 42, 45, 46, 36, 43, 38, 36,
44, 46, 46, 44, 52, 50, 38, 44, 38, 36,
48, 47, 34, 42, 45, 45, 30, 42, 40, 38)
)
使用lm()
函數來建立迴歸模型,並利用summary()
來查看模型結果,由下表可以看到temperature
是影響銷量的顯著因素,因為 Pr(>|t|) < 2e-16 顯示P-value
< 0.05,當該變數的P-value不顯著時,代表他不是影響銷售量的主要因素,可以選擇不加入模型做訓練。
判斷模型好壞: R-squared
約為 0.93,顯示模型的解釋例高
# regression model
model <- lm(sales ~ temperature, data = ice_cream_predict)
summary(model)
Call:
lm(formula = sales ~ temperature, data = ice_cream_predict)
Residuals:
Min 1Q Median 3Q Max
-4.0666 -0.4374 -0.0666 0.8954 3.3705
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.36449 0.62109 45.67 <2e-16 ***
temperature 0.56292 0.02319 24.28 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.331 on 38 degrees of freedom
Multiple R-squared: 0.9394, Adjusted R-squared: 0.9378
F-statistic: 589.3 on 1 and 38 DF, p-value: < 2.2e-16
確認模型的解釋力高之後,可以進行其他的數據預測
例如: 預測當溫度為40度的時候,冰淇淋銷售量為多少? (約為45支)
predict(model, data.frame(temperature = 30))
1
45.252
還可以再加入其他變數,例如:氣溫(X1)、每天進入該店的人數(X2)來預測冰淇淋銷售量(Y),也可以使用同樣的函數lm()
, summary()
來看模型表現好壞