Phân tích thành phần chính (PCA)

Machine Learning với caret trong R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Phân tích thành phần chính

  • Kết hợp biến phương sai thấp và biến tương quan
  • Tạo một tập biến dự báo trực giao, phương sai cao
  • Ngăn đa cộng tuyến (tương quan giữa biến dự báo)
Machine Learning với caret trong R

PCA: minh họa trực quan

  • Thành phần 1 có phương sai lớn nhất
  • Thành phần 2 có phương sai lớn nhì
  • Tiếp tục như vậy...

hình-dán-919.png

Machine Learning với caret trong R

Ví dụ: dữ liệu máu–não

  • Nhiều biến dự báo
  • Nhiều biến có phương sai thấp
# Tải bộ dữ liệu máu–não
data(BloodBrain)
names(bbbDescr)[nearZeroVar(bbbDescr)]
[1] "negative"     "peoe_vsa.2.1" "peoe_vsa.3.1"
[4] "a_acid"       "vsa_acid"     "frac.anion7."
[7] "alert"  
Machine Learning với caret trong R

Ví dụ: dữ liệu máu–não

# Mô hình cơ bản
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("zv", "center", "scale")
)
min(model$results$RMSE)
1.107702     
Machine Learning với caret trong R

Ví dụ: dữ liệu máu–não

# Loại bỏ biến dự báo có phương sai thấp
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("nzv", "center", "scale")
)
min(model$results$RMSE)
0.9796199
Machine Learning với caret trong R

Ví dụ: dữ liệu máu–não

# Thêm PCA
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("zv", "center", "scale", "pca")
)
min(model$results$RMSE)
0.9796199
Machine Learning với caret trong R

Vamos praticar!

Machine Learning với caret trong R

Preparing Video For Download...