Có rất nhiều phương pháp chọn lựa thuộc tính theo kinh nghiệm. Nhìn chung, các phương pháp này đều là sự đánh đổi việc tìm ra một tập con tốt nhất, với việc tìm ra một tập con tốt có thể chấp nhận được ở chừng mực nào đó nhưng có thời gian thực hiện nhanh hơn. Mặc dù, mục đích của các phương pháp tìm kiếm theo kinh nghiệm vẫn là tìm ra một tập con tối ưu.
Phương pháp đơn giản nhất trong các phương pháp tìm kiếm theo kinh nghiệm là “trích” ra một bộ phân lớp và thực hiện việc chọn lựa các thuộc tính bằng cách sử dụng bộ phân lớp được tạo ra trước đó. Dưới đây là pseudo-code của phương pháp tìm kiếm theo kinh nghiệm Wrap1:
Wrap1
Input: x – features
LA – learning algorithm
Initialize: set S ={} /* L stores selected features */ C = induceClassifier(x,LA)
S = findAllFeatures(C) /* Find all features in C */
Output: S
Trong phương pháp Wrap1, từ một tập dữ liệu N thuộc tính chúng ta áp dụng một giải thuật học trên bộ dữ liệu đó nhằm tìm ra một bộ phân lớp (các tham số) có kết quả phân lớp tốt nhất. Sau đó, áp dụng bộ phân lớp này đối với tất cả các thuộc tính trong bộ dữ liệu cần phân lớp.
Một phương pháp phức tạp hơn trong việc sử dụng bộ phân lớp nhằm tìm ra các thuộc tính tốt nhất là việc sử dụng phương pháp chọn lựa thuộc tính tiến hoặc lùi (forward/backward selection). Kết hợp với việc sử dụng độ chính xác của bộ phân lớp như một tiêu chí quyết định xem một thuộc tính có được chọn lựa vào tập kết quả tại mỗi lần thêm/loại bỏ thuộc tính hay không. Một giải thuật chọn lựa thuộc tính theo hướng tiến, tuần tự sẽ thực hiện như sau: Bắt đầu với một tập trống các thuộc tính, tại
Chương 3: Một số giải thuật trích chọn thuộc tính Trang 31
mỗi bước lặp (số lần lặp tối đa là N lần) chọn một thuộc tính từ tập các thuộc tính chưa được chọn lựa, sao cho khi thêm thuộc tính này vào bộ phân lớp sẽ cho độ chính xác phân lớp tốt hơn so với các thuộc tính đã được chọn lựa trước đó.
Dưới đây thể hiện pseudo-code một giải thuật tìm kiếm theo kinh nghiệm sử dụng tỷ lệ lỗi của bộ phân lớp như một tiêu chí đo lường cho việc quyết định thêm/loại bỏ thuộc tính.
Accuracy
Input: D - the training data set; F - the full set of features; Ai - feature i, i = 1,2,…..,N
Initialize: S=F /*S - full feature set */ L={} /* L - empty list */
ER = induce(D, S) /*ER - error rate with set S */
repeat min = ER; for i = 1 to N begin Si = S – Ai; ERi = induce(D, Si); if min > ERi min = ERi; index = i; end N = N-1;
remove Aindex from S and append it to L
reorganize S from 1 to N
Chương 3: Một số giải thuật trích chọn thuộc tính Trang 32
append A1 to L /*Features in L are in original indexes*/
Output: reversed L /*The first Ai in L is the best */