Chọn lọc feature

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 75 - 87)

4 Giảm kích thước và trích xuất các feature

4.2 Các hàm

4.2.1 Chọn lọc feature

1. fscchi2

• idx = fscchi2(Tbl,ResponseVarName) xếp hạng các features (yếu tố dự đoán) bằng cách sử dụng kiểm định chi - bình phương. BảngT bl chứa các biến dự đốn và một biến phụ thuộc, vàResponseVarName là tên của biến phụ thuộc trongT bl. Hàm trả vềidx, chứa các chỉ số của các yếu tố dự đoán được sắp xếp theo mức độ quan trọng,

có nghĩa làidx(1)là chỉ số của yếu tố dự đốn quan trọng nhất. Có thể sử dụng idx để chọn các yếu tố dự đoán quan trọng cho bài toán phân loại.

VD: Load dữ liệu mẫuionospherevới biến dự đoánX và biến phụ thuộcY. Xếp hạng các yếu tố phụ thuộc bằng kiểm định chi - bình phương:

>> load ionosphere

>> [idx,scores] = fscchi2(X,Y);

Giá trị trongscores là negative logs của p-value. Nếu p-value ≤0thì giá trị tương ứng của nó trongscores làIn f. Vì vậy trước khi tạo biểu đồ cột cần kiểm tra xem trongscores có giá trịIn f nào khơng:

>> find(isinf(scores)) ans =

1x0 empty double row vector

Trongscoreskhông chứa giá trịIn f. Trong trường hợp có thì thayIn f bằng 1 số rất lớn trước khi tạo biểu đồ cột.

Tạo biểu đồ cột thể hiện số điểm quan trọng của các của yếu tố dự đoán:

>> bar(scores(idx))

>> xlabel(’Predictor rank’)

>> ylabel(’Predictor importance score’)

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

Chọn ra 5 yếu tố dự đốn quan trọng nhất và xuất ra vị trí cột của chúng:

>> idx(1:5)

ans =

5 7 3 8 6

Ta thấy cột thứ 5 củaX lf yếu tố quan trong nhất. 2. fscmrmr

• idx = fscmrmr(Tbl,ResponseVarName)xếp hạng các tính năng (yếu tố dự đốn) bằng cách sử dụng thuật toán MRMR (Minimum Redundancy Maximum Relevance). Bảng

T bl chứa các biến dự đoán và một biến phụ thuộc, vàResponseVarNamelà tên của biến phản hồi trongT bl. Hàm trả vềidx, chứa các chỉ số của các yếu tố dự đốn được

sắp xếp theo mức độ quan trọng. Có thể sử dụngidxđể chọn các yếu tố dự đoán quan trọng cho bài tốn phân loại.

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

>> load ionosphere

>> [idx,scores] = fscmrmr(X,Y); >> bar(scores(idx))

>> xlabel(’Predictor rank’)

>> ylabel(’Predictor importance score’)

Đồ thị trả về:

Ta thấy, điểm số giảm từ cột 1 sang cột 2 của đồ thị là rất lớn, nhưng từ cột 6 thì giảm tương đối nhỏ. Sự sụt giảm số điểm quan trọng thể hiện mức độ tin cậy của việc lựa chọn features. Do đó, mức sụt giảm lớn ngụ ý rằng phần mềm tự tin trong việc chọn ra yếu tố dự đoán quan trọng nhất. Sự sụt giảm nhỏ cho thấy rằng sự khác biệt về tầm quan trọng của yếu tố dự đốn là khơng đáng kể. Chọn ra 5 yếu tố dự đoán quan trọng nhất và xuất ra vị trí cột của chúng:

>> idx(1:5)

ans =

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

Ta thấy cột thứ 5 củaX lf yếu tố quan trọng nhất 3. fscnca

• mdl = fscnca(X,Y) thực hiện lựa chọn feature để phân loại bằng cách sử dụng các yếu tố dự đoán trongX và phụ thuộc trongY.fscncahọc các trọng số của features bằng cách sử dụng sự thích ứng theo đường chéo NCA (Neighborhood Component

Analysis) với regularization.

• mdl = fscnca(X,Y,Name,Value) thêm một số tuỳ chọn quy định bởi 1 hay nhiều cặp

Name−Value

VD: Tạo ra một bộ dữ liệu phụ thuộc vào các feature thứ 3, 5 và 15:

>> rng(0,’twister’); >> N = 100;

>> X = rand(N,20);

>> y = -ones(N,1);

>> y(X(:, 3).*X(:, 9)./X(:, 15) < 0.4) = 1;

Fit mơ hình NCA cho việc phân loại:

>> mdl = fscnca(X,y,’Solver’,’sgd’,’Verbose’,1);

o Tuning initial learning rate: NumTuningIterations = 20, TuningSubsetSize = 100

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

o Solver = SGD, MiniBatchSize = 10, PassLimit = 5

Two norm of the final step = 2.946e-01

Relative two norm of the final step = 6.588e-02, TolX = 1.000e-06 EXIT: Iteration or pass limit reached.

Vẽ đồ thị các features đã chọn. Trọng số của các features không liên quan cần phải gần bằng 0:

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE figure() plot(mdl.FeatureWeights,’ro’) grid on xlabel(’Feature index’) ylabel(’Feature weight’) Đồ thị trả ra:

fscncachính xác trong việc xác định các features liên quan. 4. fsrftest

• idx = fsrftest(Tbl,ResponseVarName)xếp hạng các features (yếu tố dự đoán) bằng cách sử dụng F-tests. Bảng T bl chứa các biến dự đoán và một biến phụ thuộc, và

ResponseVarNamelà tên của biến phản hồi trong Tbl. Hàm trả vềidx, chứa các chỉ

số của các dự báo được sắp xếp theo mức độ quan trọng. Có thể sử dụngidxđể chọn các yếu tố dự báo quan trọng cho bài tốn hồi quy.

VD: Load dữ liệu mẫurobotarm:

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

Dữ liệu mẫu chứa 7168 quan sát huấn luyện (Xtestvàytest) với 32 features. Xếp hạng

các yếu tố dự đoán bằng cách sử dụng các quan sát được huấn luyện:

>> [idx,scores] = fsrftest(Xtrain,ytrain);

Giá trị trongscores là negative logs của p-value. Nếu p-value ≤0thì giá trị tương ứng của nó trongscores làIn f. Vì vậy trước khi tạo biểu đồ cột cần kiểm tra xem trongscores có giá trịIn f nào không:

>> find(isinf(scores)) ans =

1x0 empty double row vector

Trongscoreskhông chứa giá trịIn f. Trong trường hợp có thì thayIn f bằng 1 số rất lớn trước khi tạo biểu đồ cột.

Tạo biểu đồ cột thể hiện số điểm quan trọng của các của yếu tố dự đoán:

>> bar(scores(idx))

>> xlabel(’Predictor rank’)

>> ylabel(’Predictor importance score’)

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

Chọn ra 5 yếu tố dự đoán quan trọng nhất và xuất ra số cột của chúng trongXtrain:

>> idx(1:5)

ans =

30 24 10 4 5

Ta thấy cột thứ 30 củaXtrainlà yếu tố dự đốn quan trọng nhất củaytrain.

5. fsrnca

• mdl = fsrnca(X,Y)thực hiện lựa chọn features cho bài toán hồi quy sử dụng yếu tố dự đoánX và biến phụ thuộcY. fsrncahọc các trọng số của features bằng cách sử dụng sự thích ứng theo đường chéo NCA (Neighborhood Component Analysis) với regularization.

• mdl = fsrnca(X,Y,Name,Value)bổ sung một số tuỳ chọn phụ thuộc vào giá trị của cặp

Name−Value.

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

>> rng(0,’twister’); % For reproducibility

>> N = 100;

>> X = rand(N,20);

>> y = 1 + X(:,3)*5 + sin(X(:,9)./X(:,15) + 0.25*randn(N,1));

Fit mơ hình NCA cho hồi quy:

>> mdl = fsrnca(X,y,’Verbose’,1,’Lambda’,0.5/N);

o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe

Infinity norm of the final gradient = 2.596e-07

Two norm of the final step = 1.111e-04, TolX = 1.000e-06 Relative infinity norm of the final gradient = 2.596e-07, TolFun =

1.000e-06

EXIT: Local minimum found.

Vẽ biểu đồ cho các features được chọn. Trọng số của các features khơng liên quan cần phải gần 0:

>> plot(mdl.FeatureWeights,’ro’)

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

>> xlabel(’Feature index’)

>> ylabel(’Feature weight’)

Đồ thị trả ra:

fsrncaxác định chính xác yếu tố dự đốn liên quan đến biến phụ thuộc. 6. fsulaplacian

• [idx,scores]= fsulaplacian(X) xếp hạng các features (biến) trong X bằng cách sử dụng điểm Laplacian. Hàm trả vềidxchứa các chỉ số của các features được sắp xếp theo mức độ quan trọng, vàscores cho các features, giá trị trongscores càng cao thì features đó càng quan trọng. Có thể sử dụngidxđể chọn các features quan trọng cho việc học không giám sát.

VD: Load dữ liệu mẫuionosphere:

>> load ionosphere

Xếp hạng features dựa theo mức độ quan trọng:

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

Tạo biểu đồ cột số điểm quan trọng của feature:

>> bar(scores(idx))

>> xlabel(’Feature rank’)

>>ylabel(’Feature importance score’)

Biểu đồ trả ra:

Chọn ra 5 features quan trọng nhất và xuất ra số cột của chúng trongX:

>> idx(1:5)

ans =

15 13 17 21 19

Ta thấy cột thứ 15 củaX là feature quan trọng nhất. 7. relieff

• [idx,weights] = relieff(X,y,k)xếp hạng các yếu tố dự đoán bằng thuật toán ReliefF hoặc thuật toán RReliefF kết hợp với K - láng giếng. Ma trận đầu vàoX chứa các

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

biến dự đoán và vectorychứa 1 biến phụ thuộc. Hàm trả vềidx, chứa các chỉ số của

các yếu tố dự đoán quan trọng nhất, vàweight chứa trọng số của các yếu tố dự đoán. VD: Load dữ liệu mẫuionosphere:

>> load ionosphere

Xếp hạng yếu tố dự đoán bằng 10 lân cận gần nhất:

>> [idx,weights] = relieff(X,Y,10);

Tạo biểu đồ cột số điểm quan trọng của feature:

>> bar(scores(idx))

>> xlabel(’Feature rank’)

>>ylabel(’Feature importance score’)

Biểu đồ trả ra:

Chọn ra 5 features quan trọng nhất và xuất ra số cột của chúng trongX:

4 GIẢM KÍCH THƯỚC VÀ TRÍCH XUẤT CÁC FEATURE

ans =

24 3 8 5 14

Ta thấy cột thứ 24 củaX là feature quan trọng nhất.

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 75 - 87)

Tải bản đầy đủ (PDF)

(184 trang)