69
mỗi cây quyết định trong quần thể. Thử với các kích thước lá lần lượt là 1, 5, 10 và khởi đầu với một số lượng nhỏ cây là 25 nhằm so sánh xu hướng ban đầu của sai số phân lớp đối với kích thước lá khác nhau. Để so sánh được khách quan, ta tái thiết lập lại bộ tạo số ngẫu nhiên của MATLAB được dùng để lấy mẫu hoán vị dữ liệu mỗi lần xây dựng một bộ phân lớp.
Để xây dựng bộ phân lớp với quần thể cây quyết định, ta sử dụng hàm Treebagger. Hàm này có nhiệm vụ thu hoạch quần thể các cây quyết định phân lớp hoặc cây quyết định hồi quy. Mỗi cây trong quần thể phát triển từ một phiên bản bootstrap độc lập của dữ liệu đầu vào. Các quan sát (bộ dữ liệu, bản ghi, dòng) không nằm trong phiên bản này được coi là nằm ngoài đối với cây này. Để tính toán dự đoán của một quần thể cây quyết định đối với dữ liệu mới, hàm TreeBagger lấy trung bình của các dự đoán của các cây riêng lẻ. Để ước tính sai số dự đoán của quần thể, ta có thể tính toán dự đoán đối với mỗi cây trên số quan sát nằm ngoài của cây đó. Lấy trung bình của các dự đoán này trên toàn bộ quần thể đối với mỗi quan sát và so sánh đáp ứng dự đoán nằm ngoài với giá trị đúng tại quan sát này.
leaf = [1 5 10]; nTrees = 25;
rng(9876,'twister');
savedRng = rng; % lưu các thiết lập RNG hiện thời color = 'bgr';
for ii = 1:length(leaf)
% Tái thiết lập bộ tạo số ngẫu nhiên để cho
% các mẫu ngẫu nhiên là giống nhau đối với mỗi kích thước lá rng(savedRng);
% Tạo một cây quyết định và vẽ biểu đồ tương ứng với mỗi %kích thước lá
70
% sai số nằm ngoài 'oobError'
b = TreeBagger(nTrees,X,Y,'OOBPred','on',...
'CategoricalPredictors',6, 'MinLeaf',leaf(ii)); plot(b.oobError,color(ii));
hold on; end
xlabel('So luong cay sinh truong'); ylabel('Sai so phan lop nam ngoai');
legend({'1', '5', '10'},'Location','NorthEast');
title('Sai so phan lop voi moi kich thuoc la khac nhau); hold off;
71
Ta so sánh sai số đối với ba lựa chọn kích thước lá. Cuối cùng ta chọn kích thước lá là 10 vì nó tạo ra những cây đơn giản hơn và có hiệu năng tính toán tốt hơn. Nếu kích thước lá quá nhỏ, sẽ dẫn đến cây trở nên quá phức tạp, làm giảm hiệu năng tính toán của mô hình. Nếu kích thước lá quá lớn cây sẽ quá đơn giản, làm giảm khả năng dự đoán chính xác của mô hình.
Tập dữ liệu đầu vào không cần phải chia thành hai tập là tập huấn luyện và tập kiểm tra vì điều này đã được thực hiện ngầm trong quá trình thực hiện phương thức lấy mẫu. Tại mỗi bước lặp bootstrap, phiên bản bootstrap khi đó là một tập huấn luyện, còn toàn bộ các bộ dữ liệu nằm ngoài (không được đưa vào tập huấn luyện) được dùng để tính toán sai số phân lớp nằm ngoài như được biểu diễn ở biểu đồ trên.
Để kiểm tra xem tất cả các thuộc tính có quan trọng đối với độ chính xác của bộ phân lớp hay không thì ta sử dụng phép đo độ quan trọng của thuộc tính (oobvarimp) và thể hiện kết quả trên biểu đồ để tìm ra các thuộc tính quan trọng nhất một cách trực quan. Thử với số lượng cây lớn hơn là 50 và lưu lại sai số phân lớp nhằm mục đích so sánh. nTrees = 50; leaf = 10; rng(savedRng); b = TreeBagger(nTrees,X,Y,'OOBVarImp','on',... 'CategoricalPredictors',6,'MinLeaf',leaf); bar(b.OOBPermutedVarDeltaError);
xlabel('So thu tu thuoc tinh');
ylabel('Đo quan trong cua thuoc tinh nam ngoai'); title('Ket qua do quan trong cua thuoc tinh'); oobErrorFullX = b.oobError;
72
Hình 14 - Mứ độ quan tr ng c a các thuộc tính
Trên biểu đồ ta thấy rằng các thuộc tính 2, 4, 6 vượt hẳn lên so với các thuộc tính còn lại. Thuộc tính thứ 4 (giá trị vốn hóa thị trường / giá trị sổ sách của tổng nợ) là biến độc lập quan trọng nhất đối với bộ dữ liệu. Thuộc tính này là thuộc tính dùng để xác định xác suất vỡ nợ của doanh nghiệp.
Thuộc tính số 6 (mã ngành) cũng có mức độ quan trọng tương đối cao hơn các thuộc tính khác trong việc đánh giá tín nhiệm doanh nghiệp.
Thuộc tính số 2 (Lợi nhuận giữ lại / Tổng tài sản), mặc dù không quan trọng bằng thuộc tính số 4 nhưng cũng vượt trội hơn các thuộc tính còn lại khác. Nhìn chung, có một sự tương quan giữa lợi nhuận giữ lại và thời gian hoạt động của doanh nghiệp. Một doanh nghiệp tồn tại càng lâu thì nó càng tích lũy được nhiều lợi nhuận. Do đó, tuổi đời của doanh nghiệp có tương quan với mức độ tín nhiệm của doanh nghiệp đó vì
73
các doanh nghiệp có tuổi đời lâu năm thường tồn tại qua những khoảng thời gian khó khăn.
Bây giờ ta sẽ chỉ dùng 3 biến độc lập trên để tạo nên một quần thể phân lớp mới là các thuộc tính số 2, 4 và 6. Sau đó tiến hành so sánh sai số phân lớp của mô hình mới này với mô hình có đầy đủ các thuộc tính trước đó.
X = [creditDS.RE_TA creditDS.MVE_BVTD creditDS.Industry]; rng(savedRng); b = TreeBagger(nTrees,X,Y,'OOBPred','on','CategoricalPredictors', …3,'MinLeaf',leaf); oobErrorX246 = b.oobError; plot(oobErrorFullX,'b'); hold on; plot(oobErrorX246,'r');
xlabel('So luong cay sinh truong'); ylabel('Sai so phan lop nam ngoai');
legend({'Tat ca thuoc tinh', 'Thuoc tinh 2, 4, 6'},
'Location','NorthEast');
title('Sai so phan lop voi cac tap bien doc lap khac nhau'); hold off;
74
Hình 15 - Sai số phân lớp với các tập biến độc lập khác nhau
Dựa trên biểu đồ ta thấy độ chính xác phân lớp rõ ràng không suy giảm đáng kể khi các thuộc tính có mức độ quan trọng thấp (1, 3 ,5) được loại bỏ khỏi mô hình. Do đó, mô hình với 3 thuộc tính quan trọng sẽ được sử dụng để xây dựng quần thể phân lớp dự đoán.
Quá trình lựa chọn thuộc tính có thể mất nhiều thời gian khi mà số lượng thuộc tính lên đến hàng chục. Ngoài các công cụ đã được sử dụng ở trên thì bộ công cụ thống kê và học máy của MATLAB còn cung cấp các công cụ hữu ích khác phục vụ cho các phân tích dạng này. Tuy nhiên, quá trình lựa chọn thuộc tính cuối cùng đòi hỏi sự kết hợp các công cụ định lượng và đánh giá của các nhà phân tích.
Phép đo độ quan trọng của thuộc tính được sử dụng ở trên thực chất là một cơ chế xếp hạng mà có thể ước lượng mức độ ảnh hưởng tương đối của các thuộc tính
75
bằng cách đo lường xem độ chính xác của bộ phân lớp suy giảm đi bao nhiêu khi các giá trị của thuộc tính đó được hoán vị ngẫu nhiên. Khi thuộc tính đang được xem xét đóng góp không đáng kể vào năng lực dự đoán của bộ phân lớp thì việc sử dụng các giá trị thay thế (giá trị đã được hoán vị) sẽ không ảnh hưởng đến kết quả phân lớp. Trong khi đó, thông tin phù hợp không thể bị tráo đổi ngẫu nhiên mà không làm giảm giá trị của dự đoán. Nếu hai thuộc tính có mức độ tương quan cao đều có tính chất quan trọng thì chúng đều có thứ hạng cao trong phân tích này. Khi đó ta chỉ cần giữ lại một trong số chúng là đã đủ để duy trì độ chính xác phân lớp. Nhưng ta không thể biết được mức độ tương quan đó nếu chỉ dựa vào kết quả phân hạng mà sẽ phải kiểm tra sự tương quan một cách độc lập hoặc sử dụng đánh giá của chuyên gia. Như vậy, dù các công cụ hỗ trợ lựa chọn thuộc tính có hữu ích nhiều đến đâu thì đánh giá của các nhà phân tích vẫn đóng vai trò chủ chốt trong quá trình này.
Tiếp theo, bộ phân lớp cần được lưu lại để sử dụng cho việc phân lớp khách hàng mới. Ta sẽ lưu phiên bản nén của nó khi quá trình huấn luyện kết thúc để đảm bảo tính hiệu quả trong việc tính toán sau này.
b = b.compact;