Lựa chọn đặc trưng (Feature selection)


Lựa chọn đặc trưng

  Trong phương pháp học máy, số lượng đặc trưng (features) càng nhiều thì độ chính xác càng cao (? - thực ra cũng chưa hẳn có chứng minh nào cho nhận xét này, nhận xét này mang tính kinh nghiệm nhiều hơn), nhưng ngược lại, lượng đặc trưng quá nhiều sẽ khiến cho quá trình huấn luyện, quá trình phân loại mất nhiều thời gian hơn. Ngoài ra, nó còn khiến chương trình chiếm nhiều dung lượng bộ nhớ và đĩa cứng nhiều hơn.
  Vì thế, đối với phương pháp máy học, rất cần thiết phải lựa chọn từ tập các đặc trưng ra 1 tập con nhỏ hơn mà vẫn đảm bảo độ chính xác của quá trình phân loại. Việc lựa chọn đó, gọi là lựa chọn đặc trưng (feature selection, hay còn các tên khác như variable selection, feature reduction, attribute selection or variable subset selection).
  Đối với từng phương pháp học máy, sẽ có những phương pháp tương ứng hiệu quả riêng với nó. Nói cách khác, không có phương pháp vạn năng nào.

Các phương pháp

  Cá nhân tôi đi sâu và thường xuyên sử dụng SVM, vì thế bài viết này chỉ mạn phép đề cập đến các phương pháp sử dụng cho SVM. Tôi cũng không đi sâu về mặt lý thuyết, mà chú trọng nhiều vào ứng dụng của các phương pháp này hơn.
  Một cách tổng quát, các phương pháp này đều có 1 điểm chung là chấm điểm các features theo một giá trị, hoặc một công thức nào đó. Ví dụ như tính giá trị F (phương pháp F-score), tính giá trị "lượng thông tin tương quan"(PMI), giá trị "lợi ích thông tin" (information gain), ...

Phương pháp dựa vào F-score

  Tôi thường sử dụng thư viện LIBSVM, và thư viện này cũng cung cấp 1 tool thực hiện feature selection. Các bạn có thể tham khảo ở đây.
  Bạn nào muốn tham khảo kĩ hơn về thuật toán và cơ sở lý thuyết của phương pháp này, có thể đọc bài báo tiếng Anh này.
  Các bước sử dụng :
  1. Download file fselect.py tại đây
  2. Bạn copy file fselect.py này vào thư mục tools, phía dưới thư mục LIBSVM. 
  3. Sử dụng terminal
    ./fselect.py training_file [testing_file]
    file training phải có định dạng kiểu Liblinear, Libsvm.
    máy của bạn phải có python.
  4. Sau khi chạy, chương trình sẽ cho ra 3 file : .fscore thể hiện độ quan trọng của các features. .select cho các bản ghi quá trình chạy chương trình, .pred cho kết quả file kiểm tra.
  5. Chọn 1 số lượng feature nhất định, hoặc chọn 1 ngưỡng giá trị F-score. 
  6. Lấy ra các feature này. Sắp xếp lại các feature, và gán cho các feature 1 nhãn mới, bắt đầu từ 1 và tăng dần.
  7. Sửa lại file training theo cách :
         Giữ lại các feature được chọn.
         Đổi các feature này thành các nhãn mới tương ứng và lưu lại. 
  8. Huấn luyện lại file training này để nhận lại model mới.

Phương pháp dựa vào PMI


Phương pháp dựa vào information gain


Comments