Lần trước chúng ta đã tìm hiểu phương pháp lựa chọn đặc trưng đơn biến Filter. Bây giờ, chúng ta sẽ khám phá các phương pháp lựa chọn đặc trưng dựa trên mô hình: Wrapper (phương pháp gói) và Embedded (phương pháp nhúng).
Kiến Thức Về Phương Pháp Chọn Đặc Trưng Dựa Trên Mô Hình:
Theo quan điểm học máy, đặc trưng và mô hình không thể tách rời được. Việc lựa chọn các đặc trưng khác nhau sẽ tạo ra các mô hình khác nhau, do đó lựa chọn đặc trưng là một phần của việc lựa chọn mô hình.
So với phương pháp lựa chọn đặc trưng đơn biến như Filter, phương pháp dựa trên mô hình là một loại lựa chọn đặc trưng khác, còn gọi là phương pháp đa biến.
Một số phương pháp học máy có cơ chế tự đánh giá đặc trưng hoặc dễ dàng áp dụng vào nhiệm vụ lựa chọn đặc trưng, ví dụ như mô hình hồi quy, SVM, cây quyết định, rừng ngẫu nhiên v.v.
Có hai loại chính của phương pháp này:
- Wrapper (phương pháp gói)
- Embedded (phương pháp nhúng)
Wrapper (Phương Pháp Gói):
Wrapper, còn gọi là phương pháp gỡi, giải quyết vấn đề bằng cách sử dụng hiệu suất của mô hình làm tiêu chí đánh giá sau khi xác định mô hình.
Phương pháp này kết hợp mô hình học máy được lựa chọn để tìm ra tập đặc trưng con khiến mô hình đạt hiệu suất cao.
Theo mục tiêu hàm, mỗi lần lựa chọn hoặc loại bỏ một số đặc trưng.
Các Phương Pháp Gói Thường Dùng:
- Thuật toán loại bỏ đệ quy đặc trưng (RFE)
Thuật Toán Loại Bỏ Đệ Quy Đặc Trưng (RFE):
RFE sử dụng một mô hình cơ sở để huấn luyện nhiều vòng lặp, sau mỗi vòng lặp, loại bỏ một số đặc trưng có trọng số nhỏ nhất, sau đó tiếp tục huấn luyện trên tập đặc trưng mới.
Đối với mô hình dự đoán có trọng số đặc trưng (ví dụ, mô hình tuyến tính với hệ số), RFE loại bỏ dần dần các đặc trưng có trọng số nhỏ nhất cho đến khi đạt được số lượng đặc trưng mong muốn.
from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
from sklearn.feature_selection import RFE
# estimator: mô hình cơ sở
# n_features_to_select: số lượng đặc trưng cuối cùng
# step: số lượng đặc trưng loại bỏ mỗi vòng
rfe = RFE(estimator=lr, n_features_to_select=5, step=1)
# chỉ áp dụng cho mô hình tuyến tính hoặc cây quyết định
arr = rfe.fit_transform(X, y)
print(arr)
print(rfe.ranking_) # xem các đặc trưng bị loại bỏ ở mỗi vòng
Embedded (Phương Pháp Nhúng):
Embedded, còn gọi là phương pháp nhúng, phức tạp hơn so với hai phương pháp đầu tiên. Nó sử dụng quá trình huấn luyện của mô hình học máy để xác định trọng số của các đặc trưng và lựa chọn các đặc trưng dựa trên trọng số.
Tương tự như Filter, nhưng nó sử dụng huấn luyện mô hình để xác định chất lượng của các đặc trưng thay vì sử dụng chỉ số thống kê.
So với Wrapper, Embedded cũng sử dụng mô hình học máy nhưng không loại bỏ đặc trưng trong quá trình huấn luyện, mà luôn sử dụng toàn bộ tập đặc trưng.
Phương pháp lựa chọn đặc trưng nhúng tích hợp quá trình lựa chọn đặc trưng vào quá trình huấn luyện mô hình, hoàn thành cả hai trong một chu trình tối ưu.
Các Công Nghệ Nhúng Thường Dùng:
- Mô hình tuyến tính và chuẩn hóa (Embedded)
- Mô hình cây quyết định (Embedded)
Embedded - Chuẩn Hóa L1:
Chuẩn hóa L1 bổ sung một ràng buộc hình phạt dựa trên chuẩn L1 vào hàm mất mát của mô hình hồi quy tuyến tính, khiến các hệ số của các đặc trưng yếu trở thành 0.
Nhờ tính chất làm giảm kích thước mô hình, chuẩn hóa L1 thường được sử dụng cho lựa chọn đặc trưng.
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.linear_model import Lasso
boston = load_boston()
X = boston['data']
y = boston['target']
lasso = Lasso(alpha=2)
lasso.fit(X, y)
print(lasso.coef_) # xem các đặc trưng có hệ số bằng 0 hay không
from sklearn.feature_selection import SelectFromModel
# sfm = SelectFromModel(estimator=lasso, threshold=1e-5)
# sfm.fit_transform(X, y)
# print(sfm.get_support())
from sklearn.datasets import load_wine
wine = load_wine()
X = wine['data']
y = wine['target']
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier()
dt.fit(X, y)
print(dt.feature_importances_)
sfm = SelectFromModel(dt)
sfm.fit_transform(X, y)
print(sfm.get_support())
Embedded - Mô Hình Cây Ngẫu Nhiên:
Mô hình dự đoán dựa trên cây có thể đánh giá mức độ quan trọng của các đặc trưng, từ đó loại bỏ các đặc trưng không liên quan.
Hai phương pháp lựa chọn đặc trưng phổ biến từ mô hình rừng ngẫu nhiên là:
- Giảm độ không thuần khiết trung bình (Mean Decrease Impurity)
- Giảm độ chính xác trung bình (Mean Decrease Accuracy)
Các Ý Tư Khác Về Chọn Đặc Trưng:
- Sử dụng xác thực chéo kết hợp với các phương pháp dựa trên mô hình.
- Sử dụng học sâu để lựa chọn đặc trưng.
Tăng Đặc Trưng:
Ngoài việc lựa chọn tập đặc trưng con, đôi khi cần tạo ra các đặc trưng mới để cải thiện mối quan hệ với đặc trưng mục tiêu.
Các phương pháp tăng đặc trưng phổ biến:
- Tổng hợp tuyến tính các đặc trưng gốc.
- Tổng hợp phi tuyến tính các đặc trưng gốc.
- Sử dụng các hàm biến đổi phi tuyến tính khác như log, hàm mũ.
Tóm Tắt Về Chọn Đặc Trưng:
Chọn đặc trưng rất hữu ích trong nhiều ứng dụng học máy và khai thác dữ liệu:
- Nắm rõ mục tiêu và lựa chọn phương pháp phù hợp.
- Sử dụng xác thực chéo để kiểm tra hiệu quả của mô hình.
- Xác nhận sự ổn định của mô hình lựa chọn đặc trưng.
Bảng So Sánh Ba Phương Pháp Chọn Đặc Trưng:
- Filter: không phụ thuộc vào mô hình cụ thể, ít tốn kém tính toán, khả năng tổng quát cao hơn hai phương pháp còn lại.
- Wrapper: hiệu suất tốt hơn Filter nhưng tốn nhiều thời gian hơn.
- Embedded: chuẩn hóa L1 mạnh mẽ cho việc hiểu và lựa chọn đặc trưng, dễ sử dụng hơn và có sẵn công cụ hỗ trợ.