Machine Learning Data Preparation

DP4ML - Feature Selection - Phần 1 - Giới thiệu chung

DP4ML - Feature Selection - Phần 1 - Giới thiệu chung

Bài thứ 8 trong chuỗi các bài viết về chủ đề Data Preparation cho các mô hình ML và là bài đầu tiên về Feature Selection. Trong bài này, chúng ta sẽ chuyển tiếp sang tìm hiểu một nhiệm vụ khác của Data Preparation, đó là Feature Selection.

1. Feature Selection là gì?

Feature Selection là quá trình giảm số lượng features khi phát triển các ML model. Việc làm này xuất phát từ 2 nguyên nhân chính:

  • Giảm thời gian tính toán, huấn luyện mô hình.
  • Tăng hiệu năng của các mô hình.

Feature Selection, đôi khi hay bị hiểu nhầm thành Dimensionality Reduction. Thực ra, chúng đều là các công việc phải thực hiện trong quá trình chuẩn bị dữ liệu cho các ML model. Chúng vừa có sự giống nhau, vừa có sự khác nhau:

  • Giống: Về bản chất, 2 cái đều giảm số lượng chiều của dữ liệu, từ cao xuống thấp.
  • Khác: Feature Selection giảm chiều dữ liệu bằng cách loại bớt một số features không liên quan đi, chỉ giữ lại các features liên quan nhất đến mục đích cần dự đoán. Trong khi đó, Dimensionality Reduction giảm chiều dữ liệu bằng cách ánh xạ tất cả các features hiện có sang một miền không gian có số chiều nhỏ hơn miên không gian ban đầu. Đối với Feature Selection, các features còn lại đều là các features cũ, nằm trong số các features ban đầu. Còn đối với Dimentionality Reduction, các features còn lại đều là các features mới hoàn toàn.

2. Các phương pháp thực hiện Feature Selection

Có 2 phương pháp chính để thực hiện Feature Selection là: Supervised và Unsupervised.

2.1 Supervised

Đây là phương pháp Feature Selection mà có sử dụng đến Target Variable (nhãn). Nó lại được chia thành 3 loại nhỏ hơn:

a, Intrinsic

Là các thuật toán thực hiện Feature Selection trong quá trình huấn luyện mô hình.

b, Filter

Loại này sẽ lựa chọn một tập nhỏ các features dựa trên mối quan hệ của các features đó với Target Variable. Để xác định mối quan hệ này, chúng ta có thể sử dụng một số phương pháp thống kê khác nhau (sẽ được đề cập chi tiết bên dưới). Nói chung, đây là cách thức được sử dụng rất rộng rãi để thực hiện Feature Selection.

c, Wrapper

Wraper tạo ra nhiều tập con của các features, mỗi tập con đó được sử dụng để huấn luyện một mô hình riêng. Kết quả cuối cùng là tổng hợp của các models đó.

2.2 Unsupervised

Đây là phương pháp Feature Selection mà không sử dụng đến Target Variable.

3. Các phương pháp thống kê sử dụng cho Feature Selection

Người ta thường sử dụng các phép đo thống kê kiểu tương quan giữa các biến đầu vào và đầu ra để làm cơ sở cho việc lựa chọn các features. Mỗi một kiểu dữ liệu sẽ có các phép đo tương ứng khác nhau. Có 2 kiểu dữ liệu thường gặp là numerical (integer, float, …) và categorical (boolean, ordinal, nominal, …).

Chúng ta định nghĩa 2 khái niệm sau để thuận tiện sử dụng trong các bài viết thuộc chuỗi chủ đề Data Preparation này:

  • Input Variable: Là tất cả các features có thể được sử dụng để huấn luyện mô hình. Có thể gọi bằng những cái tên Input Variables, Features, Input Features.
  • Ouput Variable: Là kết quả được dự đoán bởi mô hình. Nó còn có thể được gọi bằng cái tên khác là Target Variable, Target.

Sơ đồ cây dưới đây khái quát các phương pháp thống kê tương ứng với các kiểu của Input/Output Variable.

Chúng ta sẽ lần lượt tìm hiểu những thuật toán này trong các bài viết tiếp theo.

Nãy giờ chúng ta mới chỉ đề cập đến phương pháp thống kê cho dữ liệu thuộc một trong hai kiểu Numerical hoặc Categorical. Nhưng trong thực tế, bộ dữ liệu của chúng ta có thể bao gồm cả 2 loại đó. Khi gặp tình huống như vậy, chúng ta phải sử dụng thuật toán ColumnTransformer. Chúng ta sẽ tìm hiểu thuật toán này trong các bài về sau trong cùng chủ đề Data Preparation này.

4. Một số câu hỏi thường gặp

4.1 Làm cách nào để chọn ra được những Input Variables cần thiết?

Trả lời:

  • Sắp xếp các Input Variables theo thứ tự giảm dần của Score hoặc Percentage (cụ thể Score và Percentage là gì thì phụ thuộc vào thuật toán sử dụng).
  • Lựa chọn các Input Variables mong muốn sử dụng một trong hai classes của thư viện Scikit-learn: SelectKbest (sử dụng cho Score), SelectPercentile (sử dụng cho Percentage).

4.2 Làm thế nào biết được phương pháp Feature Selection nào là tốt nhất?

Trả lời: Không thể biết trước. Bạn phải dựa vào kinh nghiệm, sự hiểu biết về bài toán, cũng như ưu/nhược điểm của các thuật toán. Nếu vẫn không thể chọn được thì sử dụng phương án thử-sai, tức chọn một số phương pháp khả dĩ, rồi so sánh kết quả của chúng với nhau.

5. Kết luận

OK, bài đầu tiên về Feature Selection chỉ ngắn như vậy thôi. Mình đã giới thiệu khái quát qua về Feature Selection để cho các bạn có cái nhìn tổng thể về nó. Trong các bài tiếp theo, mình sẽ đi chi tiết vào từng phương pháp. Mời các bạn đón đọc.

6. Tham khảo

[1] Jason Brownlee, “Data Preparation for Machine Learning”, Book: https://machinelearningmastery.com/data-preparation-for-machine-learning/.