Chương 3 : Một số giải thuật trích chọn thuộc tính
3.2. Tìm kiếm theo kinh nghiệm
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
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
append A1 to L /*Features in L are in original indexes*/
Output: reversed L /*The first Ai in L is the best */