Lựa chọn từng bước (Stepwise Selection) là một sự kết hợp khéo léo giữa “tiến” và “lùi” – như đang chọn người yêu nhưng vẫn lùi bước khi thấy “cờ đỏ” 🚩🤣
Bạn đang xây dựng đội hình trong mơ (hoặc chọn crush tiềm năng 🤭).
Bạn bắt đầu thêm từng người như trong lựa chọn tiến. Nhưng khác là:
- Mỗi lần thêm người mới vô, bạn quay lại kiểm tra mấy người đã chọn trước đó.
- Nếu phát hiện ai hết hữu ích (do người mới làm thay tốt hơn chẳng hạn) → đuổi ra luôn!
🎯 => Thêm từng bước, nhưng đồng thời loại luôn khi cần. Rất thực tế, rất “thức thời” 😎
🔧 Cơ chế hoạt động:
- Bắt đầu với mô hình rỗng (giống lựa chọn tiến).
- Thêm đặc trưng tốt nhất vào mô hình.
- Sau mỗi lần thêm, kiểm tra lại tất cả đặc trưng đang có:
- Nếu có đặc trưng nào trở nên vô dụng → loại bỏ ngay!
- Lặp lại cho đến khi:
- Không còn đặc trưng nào đáng thêm hoặc đáng bỏ.
📦 Python thì sao?
Thư viện scikit-learn chưa hỗ trợ stepwise trực tiếp, nhưng bạn có thể tự code bằng cách kết hợp forward
và backward
logic. Hoặc dùng R thì có hàm step()
rất phổ biến cho việc này.
🤹♂️ Ví dụ minh họa vui:
Bạn đang mở lớp học võ:
- Đầu tiên chọn bạn “có thể lực tốt”.
- Rồi thêm bạn “nhanh nhẹn”.
- Nhưng khi có bạn nhanh nhẹn vào rồi, bạn thấy bạn thể lực giờ… chỉ biết thở gấp 😓 → cho nghỉ!
- Rồi thêm bạn biết né đòn.
- Rồi… lại đá ai đó ra nếu không còn giá trị 🤭
📊 So sánh 3 phương pháp:
Phương pháp | Chiến lược | Ưu điểm | Nhược điểm |
---|---|---|---|
Lựa chọn tiến | Chỉ thêm đặc trưng | Nhanh, đơn giản | Có thể bỏ lỡ tổ hợp đặc biệt |
Lựa chọn lùi | Bắt đầu với tất cả, loại dần | Xem xét toàn diện | Tốn tài nguyên, chậm |
Lựa chọn từng bước | Thêm rồi kiểm lại, có thể loại bớt | Linh hoạt, thông minh hơn | Cần kiểm tra nhiều lần, phức tạp hơn |
🎯 Tóm gọn:
“Thêm thì dễ, giữ mới khó –
Mỗi bước thêm người, lại phải soi ai đáng ở, ai nên đi!” 👀