1. 학습
  2. /
  3. 강의
  4. /
  5. Machine Learning với caret trong R

Connected

연습 문제

Loại bỏ các biến dự báo có phương sai gần như bằng 0

Như bạn đã thấy trong video, ở loạt bài tập tiếp theo, bạn sẽ dùng bộ dữ liệu blood-brain. Đây là một bộ dữ liệu sinh hóa, trong đó nhiệm vụ là dự đoán giá trị sau cho một tập hợp các hợp chất sinh hóa:

log((nồng độ hợp chất trong não) /
      (nồng độ hợp chất trong máu))

Giá trị này cung cấp một thước đo định lượng về khả năng của hợp chất đi qua hàng rào máu não, hữu ích để hiểu các đặc tính sinh học của hàng rào đó.

Một điểm thú vị của bộ dữ liệu này là nó chứa rất nhiều biến, và nhiều biến trong số đó có phương sai cực kỳ thấp. Điều này có nghĩa là các biến đó chứa rất ít thông tin vì chúng chủ yếu chỉ có một giá trị (ví dụ: 0).

May mắn là caret có một hàm tiện ích gọi là nearZeroVar() để loại bỏ các biến như vậy nhằm tiết kiệm thời gian khi mô hình hóa.

nearZeroVar() nhận dữ liệu x, sau đó xem xét tỷ lệ giữa giá trị xuất hiện nhiều nhất và giá trị xuất hiện nhiều thứ hai, freqCut, và phần trăm số giá trị phân biệt so với tổng số mẫu, uniqueCut. Mặc định, caret dùng freqCut = 19 và uniqueCut = 10, khá thận trọng. Tôi thích đặt tham số quyết liệt hơn một chút và dùng freqCut = 2 và uniqueCut = 20 khi gọi nearZeroVar().

지침

100 XP

bloodbrain_x và bloodbrain_y đã được nạp trong không gian làm việc của bạn.

  • Xác định các biến dự báo có phương sai gần như bằng 0 bằng cách chạy nearZeroVar() trên bộ dữ liệu blood-brain. Lưu kết quả vào một đối tượng tên là remove_cols. Dùng freqCut = 2 và uniqueCut = 20 trong lời gọi nearZeroVar().
  • Dùng names() để tạo một vector chứa tất cả tên cột của bloodbrain_x. Gọi vector này là all_cols.
  • Tạo một data frame mới tên bloodbrain_x_small với các biến có phương sai gần như bằng 0 đã được loại bỏ. Dùng setdiff() để lấy các tên cột bạn muốn giữ lại (tức là không muốn loại bỏ).