多種前處理方法

使用 R 的 caret 進行 Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

preProcess 的多元世界

  • 不只中位數或 knn 補值,還有更多作法!
  • 可以串接多個前處理步驟
  • 線性模型常見「配方」(順序很重要!)
    • 中位數補值 ⇒ 中心化 ⇒ 標準化 ⇒ 擬合 glm
  • 更多細節見 ?preProcess
使用 R 的 caret 進行 Machine Learning

範例:前處理 mtcars

# 產生含遺漏值的資料
data(mtcars)
set.seed(42)
mtcars[sample(1:nrow(mtcars), 10), "hp"] <- NA
Y <- mtcars$mpg
X <- mtcars[,2:4] # <- 隨機遺漏
# 使用線性模型「配方」
set.seed(42)
model <- train(
  X, Y, method = "glm",
  preProcess = c("center", "scale", "medianImpute")
)
print(min(model$results$RMSE))
3.612713
使用 R 的 caret 進行 Machine Learning

範例:前處理 mtcars

# 建模前先做 PCA
set.seed(42)
model <- train(
  X, Y, method = "glm",
  preProcess = c("center", "scale", "medianImpute", "pca")
)
min(model$results$RMSE)
3.402557
使用 R 的 caret 進行 Machine Learning

範例:前處理 mtcars

# Spatial sign 轉換
set.seed(42)
model <- train(
  X, Y, method = "glm",
  preProcess = c("center", "scale", "medianImpute", "spatialSign")
)
min(model$results$RMSE)
4.284904
使用 R 的 caret 進行 Machine Learning

前處理小抄

  • 先用中位數補值
  • 若非隨機遺漏,可試 KNN 補值
  • 對線性模型…
    • 先中心化與標準化
    • 可嘗試 PCA 與 spatial sign
  • 樹狀模型通常幾乎不需前處理
使用 R 的 caret 進行 Machine Learning

一起來練習吧!

使用 R 的 caret 進行 Machine Learning

Preparing Video For Download...