Series: Machine Learning Fundamentals – Bài 17
Ở bài trước, chúng ta đã tìm hiểu về Feature Engineering – quá trình tạo mới và biến đổi dữ liệu để giúp mô hình Machine Learning học tốt hơn.
Nhưng có một vấn đề khác xuất hiện:
Nếu chúng ta có quá nhiều Feature thì sao?
Giả sử một bộ dữ liệu có 200 Feature. Liệu sử dụng cả 200 Feature có giúp mô hình tốt hơn so với sử dụng 20 Feature quan trọng nhất?
Câu trả lời là: không nhất thiết.
Một số Feature có thể không mang lại thông tin hữu ích. Một số khác thậm chí chứa nhiễu và khiến mô hình hoạt động kém hơn.
Đây chính là lúc chúng ta cần Feature Selection.
Feature Selection là gì?
Feature Selection là quá trình lựa chọn một tập hợp các Feature có giá trị nhất từ dữ liệu ban đầu để sử dụng trong quá trình huấn luyện mô hình.
Giả sử dữ liệu ban đầu gồm:
Age
Income
Gender
City
Customer_ID
Browser_ID
Purchase_History
Average_Order_Value
Number_of_Orders
...
Sau quá trình Feature Selection, chúng ta có thể chỉ giữ:
Age
Income
Purchase_History
Average_Order_Value
Number_of_Orders
Mục tiêu không phải đơn giản là giảm số lượng cột.
Quan trọng hơn là giữ lại những Feature chứa nhiều thông tin hữu ích nhất đối với biến mục tiêu.
Vì sao không nên sử dụng tất cả Feature?
Một suy nghĩ khá tự nhiên là:
Càng cung cấp nhiều dữ liệu cho mô hình thì mô hình càng thông minh.
Nhưng Machine Learning không phải lúc nào cũng hoạt động như vậy.
Những Feature không cần thiết có thể dẫn đến:
- Tăng nguy cơ Overfitting.
- Tăng thời gian huấn luyện.
- Tăng yêu cầu về bộ nhớ.
- Làm mô hình phức tạp hơn.
- Làm giảm khả năng giải thích mô hình.
- Đưa thêm Noise vào dữ liệu.
Vì vậy:
Nhiều Feature hơn không đồng nghĩa với nhiều thông tin hữu ích hơn.
Ví dụ: Dự đoán giá nhà
Giả sử chúng ta muốn xây dựng mô hình dự đoán giá nhà với các Feature:
- Diện tích.
- Số phòng ngủ.
- Khoảng cách tới trung tâm.
- Khu vực.
- Tuổi căn nhà.
- Số cửa sổ.
- ID của căn nhà.
- Mã bản ghi trong database.
Trong đó:
Diện tích có thể liên quan rất mạnh đến giá nhà.
Khoảng cách tới trung tâm cũng có thể chứa nhiều thông tin.
Nhưng:
ID căn nhà gần như không mang ý nghĩa dự đoán.
Nếu đưa tất cả Feature vào mô hình một cách máy móc, chúng ta có thể khiến mô hình học cả những mối quan hệ không có ý nghĩa thực tế.
Ba nhóm phương pháp Feature Selection
Các kỹ thuật Feature Selection thường được chia thành ba nhóm chính:
Feature Selection
↓
┌─────┼──────────┐
↓ ↓ ↓
Filter Wrapper Embedded
Mỗi phương pháp có cách tiếp cận khác nhau.
1. Filter Methods
Filter Method đánh giá Feature dựa trên các đặc tính thống kê của dữ liệu mà không cần huấn luyện một mô hình cụ thể cho từng tập Feature.
Một số kỹ thuật thường gặp:
- Correlation.
- Chi-Square Test.
- ANOVA.
- Mutual Information.
- Variance Threshold.
Ví dụ, nếu một Feature gần như không thay đổi:
Feature A
1
1
1
1
1
1
Feature này gần như không cung cấp khả năng phân biệt giữa các mẫu.
Ta có thể cân nhắc loại bỏ nó bằng Variance Threshold.
Ưu điểm
Filter Method thường:
- Nhanh.
- Dễ triển khai.
- Phù hợp với dữ liệu có nhiều Feature.
- Không phụ thuộc vào một thuật toán ML cụ thể.
Tuy nhiên, nó có thể bỏ qua những tương tác phức tạp giữa các Feature.
2. Wrapper Methods
Wrapper Method sử dụng chính hiệu suất của mô hình để đánh giá các tập Feature khác nhau.
Quy trình có thể hình dung:
Chọn một tập Feature
↓
Huấn luyện Model
↓
Đánh giá Model
↓
Thay đổi Feature
↓
Huấn luyện lại
↓
Tìm tập Feature tốt nhất
Một kỹ thuật nổi tiếng là:
Recursive Feature Elimination – RFE
RFE hoạt động bằng cách:
- Huấn luyện mô hình với toàn bộ Feature.
- Xác định Feature ít quan trọng nhất.
- Loại Feature đó.
- Huấn luyện lại mô hình.
- Tiếp tục quá trình cho đến khi đạt số Feature mong muốn.
Ưu điểm
Có thể tìm được tập Feature rất phù hợp với mô hình.
Hạn chế
Chi phí tính toán cao vì mô hình phải được huấn luyện nhiều lần.
3. Embedded Methods
Embedded Method thực hiện Feature Selection ngay trong quá trình huấn luyện mô hình.
Một ví dụ điển hình là Lasso Regression – L1 Regularization.
Trong quá trình tối ưu, L1 có thể đưa hệ số của một số Feature về 0.
Những Feature đó về cơ bản sẽ bị loại khỏi mô hình.
Một số thuật toán dạng cây cũng cung cấp thông tin về Feature Importance, chẳng hạn:
- Decision Tree.
- Random Forest.
- Gradient Boosting.
Embedded Method thường là sự cân bằng khá tốt giữa tốc độ của Filter Method và khả năng tận dụng mô hình của Wrapper Method.
So sánh ba phương pháp
| Phương pháp | Cách hoạt động | Tốc độ | Phụ thuộc mô hình |
|---|---|---|---|
| Filter | Dựa trên thống kê | Nhanh | Không |
| Wrapper | Thử nhiều tập Feature | Chậm | Có |
| Embedded | Chọn trong lúc Training | Trung bình | Có |
Không tồn tại một phương pháp Feature Selection tốt nhất cho mọi bài toán.
Việc lựa chọn phụ thuộc vào:
- Số lượng Feature.
- Kích thước dữ liệu.
- Thuật toán sử dụng.
- Khả năng tính toán.
- Mục tiêu của dự án.
Correlation có đủ để chọn Feature không?
Correlation Matrix là công cụ rất phổ biến khi khám phá dữ liệu.
Ví dụ:
Feature A ───── 0.87 ───── Target
Feature B ───── 0.04 ───── Target
Feature C ───── 0.63 ───── Target
Nhìn vào đây, Feature B dường như không liên quan nhiều đến Target.
Nhưng cần cẩn thận.
Correlation thấp không đồng nghĩa Feature vô dụng.
Một Feature có thể không có quan hệ tuyến tính với Target nhưng vẫn chứa mối quan hệ phi tuyến mà mô hình có thể khai thác.
Do đó, không nên loại Feature chỉ dựa trên một chỉ số duy nhất.
Multicollinearity – Khi các Feature quá giống nhau
Một vấn đề khác xảy ra khi nhiều Feature chứa gần như cùng một thông tin.
Ví dụ:
- Chiều cao tính bằng centimet.
- Chiều cao tính bằng mét.
Hai Feature này gần như hoàn toàn tương quan.
Hoặc trong dữ liệu tài chính:
- Doanh thu năm.
- Doanh thu trung bình tháng.
Các Feature có tương quan rất cao có thể tạo ra Multicollinearity, đặc biệt đáng chú ý với các mô hình tuyến tính.
Feature Selection có thể giúp loại bỏ những Feature dư thừa này.
Feature Importance có phải Feature Selection?
Không hoàn toàn.
Feature Importance cho biết mức độ mà mô hình sử dụng hoặc coi trọng từng Feature theo một định nghĩa cụ thể.
Ví dụ:
| Feature | Importance |
|---|---|
| Income | 0.38 |
| Age | 0.25 |
| Purchase History | 0.21 |
| City | 0.10 |
| Customer ID | 0.01 |
Thông tin này có thể được sử dụng để hỗ trợ Feature Selection.
Nhưng Feature Importance cần được diễn giải cẩn thận vì cách tính và ý nghĩa của Importance phụ thuộc vào loại mô hình và phương pháp đo lường.
Feature Selection và Feature Engineering khác nhau thế nào?
Hai khái niệm này có liên quan nhưng giải quyết hai vấn đề khác nhau.
| Feature Engineering | Feature Selection |
|---|---|
| Tạo và biến đổi Feature | Chọn Feature cần giữ |
| Làm dữ liệu giàu thông tin hơn | Loại Feature dư thừa |
| Có thể tăng số Feature | Thường giảm số Feature |
| Tập trung vào biểu diễn dữ liệu | Tập trung vào lựa chọn dữ liệu |
Một pipeline thực tế có thể là:
Raw Data
↓
Data Cleaning
↓
Feature Engineering
↓
Feature Selection
↓
Model Training
↓
Model Evaluation
Cẩn thận với Data Leakage
Đây là một lỗi rất quan trọng khi thực hiện Feature Selection.
Giả sử bạn sử dụng toàn bộ dataset, bao gồm cả Test Set, để tìm những Feature tốt nhất.
Sau đó mới chia dữ liệu thành Train/Test.
Lúc này thông tin từ Test Set đã gián tiếp ảnh hưởng đến quá trình lựa chọn Feature.
Đó là một dạng Data Leakage.
Kết quả đánh giá có thể trở nên quá lạc quan.
Nguyên tắc quan trọng là:
Test Set phải được giữ độc lập với quá trình xây dựng và lựa chọn mô hình.
Nếu sử dụng Cross Validation, Feature Selection cũng nên nằm bên trong pipeline của từng fold, thay vì thực hiện trên toàn bộ dữ liệu trước khi Cross Validation.
Feature Selection có luôn cải thiện Accuracy không?
Không.
Mục tiêu của Feature Selection không phải lúc nào cũng là tăng Accuracy.
Một mô hình sau Feature Selection có thể:
- Accuracy gần như không đổi.
- Nhưng số Feature giảm từ 200 xuống còn 30.
- Training nhanh hơn.
- Prediction nhanh hơn.
- Dễ giải thích hơn.
- Giảm nguy cơ Overfitting.
Trong môi trường thực tế, đây có thể là một cải thiện rất lớn.
Làm sao biết nên giữ Feature nào?
Không nên chỉ dựa vào một phương pháp duy nhất.
Một quy trình hợp lý có thể là:
Bước 1: Hiểu dữ liệu
Xác định ý nghĩa nghiệp vụ của từng Feature.
Bước 2: Loại Feature rõ ràng không hữu ích
Ví dụ:
- ID ngẫu nhiên.
- Cột trùng lặp.
- Feature gần như không có variance.
Bước 3: Phân tích thống kê
Kiểm tra:
- Correlation.
- Mutual Information.
- Phân phối dữ liệu.
Bước 4: Thử Feature Selection
Sử dụng:
- Filter Method.
- RFE.
- L1 Regularization.
- Các phương pháp Feature Importance phù hợp.
Bước 5: Cross Validation
So sánh hiệu suất trước và sau Feature Selection.
Đây mới là bước giúp xác định việc loại Feature có thực sự cải thiện khả năng tổng quát hóa hay không.
Kết luận
Feature Selection không đơn giản là xóa bớt các cột khỏi dataset.
Đó là quá trình tìm ra những thông tin thực sự cần thiết để mô hình học hiệu quả.
Một tập Feature tốt có thể giúp:
- Giảm Overfitting.
- Tăng tốc độ Training.
- Giảm chi phí tính toán.
- Đơn giản hóa mô hình.
- Cải thiện khả năng giải thích.
- Duy trì hoặc cải thiện khả năng tổng quát hóa.
Sau Feature Engineering, Feature Selection chính là bước giúp chúng ta trả lời một câu hỏi quan trọng:
Trong tất cả những thông tin đang có, đâu là những thông tin thực sự đáng để mô hình học?
Bài tiếp theo
Trong bài viết tiếp theo, MCNA Technology School sẽ cùng bạn tìm hiểu:
Hyperparameter là gì? Vì sao cùng một thuật toán nhưng kết quả có thể khác nhau hoàn toàn?
Chúng ta sẽ đi vào sự khác biệt giữa Parameter và Hyperparameter, sau đó tìm hiểu Grid Search, Random Search và cách Cross Validation được sử dụng để tìm cấu hình phù hợp cho mô hình.
Khóa học tại MCNA Technology School
Nếu bạn muốn thực hành Feature Engineering, Feature Selection và xây dựng các mô hình Machine Learning bằng Python trên dữ liệu thực tế, có thể tham khảo:
🤖 Combo 5 khóa AI & Power BI
🐍 Combo Python
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: mcna.vn
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

