II. Một số thuật toán xây dựng cây
5. Cắt tỉa cây quyết định
Qua tìm hiểu các thuật toán xây dựng cây quyết định ở trên, ta thấy việc xây dựng cây bằng cách phát triển nhánh cây đầy đủ theo chiều sâu để phân lớp hoàn toàn các mẫu huấn luyện; như thuật toán CLS và thuật toán ID3 đôi khi gặp khó khăn trong các trường hợp dữ liệu bị nhiễu (Noisy Data) hoặc dữ liệu bị thiếu (Missing Data) không đủ để đại diện cho một quy luật; tức là tạo ra các nút có số mẫu rất nhỏ. Trong trường hợp này, nếu thuật toán vẫn cứ phát triển cây thì ta sẽ dẫn đến một tình huống mà ta gọi là tình trạng "Over fitting" trong cây quyết định.
46 Vấn đề Over fitting là một khó khăn trong việc nghiên cứu và ứng dụng cây quyết định. Để giải quyết tình trạng này người ta sử dụng phương pháp cắt tỉa cây quyết định. Có hai phương pháp cắt tỉa cây quyết định.
a) Tiền cắt tỉa (Prepruning).[1]
Chiến thuật tiến cắt tỉa nghĩa là sẽ dừng sớm việc phát triển cây trước khi nó vươn đến điểm mà việc phân lớp các mẫu huấn luyện được hoàn thành. Nghĩa là trong quá trình xây dựng cây, một nút có thể sẽ không được tách thêm bước nữa nếu như kết quả của phép tách đó rơi vào một ngưỡng gần như chắc chắn.
Nút đó trở thành nút lá và được gán nhãn là nhãn của lớp phổ biến nhất của tập các mẫu tại nút đó.
b) Hậu cắt tỉa (Postpruning): [1]
Chiến thuật này ngược với chiến thuật tiền cắt tỉa. Nó cho phép phát triển cây đầy đủ sau đó mới cắt tỉa. Nghĩa là xây dựng cây sau đó mới thực hiện cắt bỏ các nhánh không hợp lý. Trong quá trình xây dựng cây theo chiến thuật hậu cắt tỉa thì cho phép tình trạng Over fitting xẩy ra. Nếu một nút mà các cây con của nó bị cắt thì nó sẽ trở thành nút lá và nhãn của lá được gán là nhãn của lớp phổ biến nhất của các con trước đó của nó.
Trong thực tế, phương pháp hậu cắt tỉa là một phương pháp khá thành công cho việc tìm ra các giả thuyết chính xác cao. Chiến thuật hậu cắt tỉa được tiến hành thông qua việc tính toán lỗi như sau:
Giả sử ta gọi: E(S) là lỗi tĩnh (Static error hay expected error) của một nút S; BackUpError(S) là lỗi từ các nút con của S (Back Up Error); Error(S) là lỗi của nút S. Các giá trị này được tính như sau:
Error(S) = Min(E(S), BackUpError(S)) (3.16) E(S) = (N - n + 1) / (N + 2) (3.17)
Trong đó: N là tổng số mẫu ở nút S
47 Trong trường hợp tổng quát, nếu thuộc tính lớp có K giá trị (K lớp) thì:
E(S) = (N-n+K-1) / (N+K) (3.18)
i
i
BackUpError(S) = Pi Error(S ) (3.19)
Trong đó: Si là nút con của S
Pi là tỷ lệ số mẫu trong Si trên số mẫu trong S
Như vậy các nút lá sẽ có lỗi Error(Si) = E(Si) do nút lá không có nút con dẫn đến không có lỗi BackUpError. Nếu BackUpError(S) >= E(S) thì chiến thuật hậu cắt tỉa cây quyết định sẽ cắt tại nút S (tức là cắt bỏ các cây con của S).
Ví dụ : Ta có cây trước khi cắt tỉa như sau
Hình 3.8 Cây trước khi cắt tỉa
Tiến hành tính lỗi cho các nút trong ta có:
Xét nút B ta có: N= 6, n= 4
E(B) = (6-4+1 )/(6+2) = 0.375
BackUpError(B) = (5/6)* 0.429 + (1/6)* 0.333 = 0.413
Error(B) = Min(E(B), BackUpError(B)) = Min (0.375, 0.413) = 0.375 Do BackUpError(B) > E(B) nên cắt bỏ các cây con của nút B.
Xét nút D ta có: N= 3, n= 2
E(D) = (3-2+1) /(3+2)= 0.4
48 Error(D) = Min(E(D), BackUpError(D)) = Min (0.4, 0.444) = 0.4
Do BackUpError(D) > E(D) nên cắt bỏ cây con của nút D.
Xét tại nút C ta có: N=4, n=4 E(C) = (4-2+1) /(4+2)=0.5
BackUpError(D) = (3/4)* 0.4 + (1/4)* 0.333 = 0.383
Error(C) = Min(E(C), BackUpError(C)) = Min (0.5, 0.383) = 0.383 Do BackUpError(C) < E(C) nên không cắt bỏ các cây con của nút C.
Xét tại nút A ta có: N=10, n=6
E(A) = (10-6+1) /(10+2)=0.417
BackUpError(A) = (6/10)* 0.375 + (4/10)* 0.383 = 0.378
Error(A) = Min(E(A), BackUpError(A)) = Min (0.417, 0.378) = 0.378 Do BackUpError(A) < E(A) nên không cắt bỏ các cây con của nút A Sau khi thực hiện cắt bỏ các cây con tại nút B và D ta thu được cây sau:
Hình 3.9. Cây sau khi cắt tỉa
Tóm lại, việc cắt tỉa cây nhằm tối ưu hoá cây kết quả. Tối ưu về kích cỡ cây và về độ chính xác của việc phân lớp bằng cách cắt bỏ các nhánh không phù hợp (over fitted branches). Để thực hiện việc cắt tỉa cây thì có các kỹ thuật cơ bản sau đây [1]:
- Sử dụng tập hợp tách rời của mẫu học để đánh giá tính hữu dụng của việc hậu cắt tỉa những nút trong cây. Sử dụng kỹ thuật cắt tỉa cây này có thuật toán CART, gọi tắt là chi phí phức tạp (Cost - Complexity prunning).
49 - Áp dụng phương pháp thống kê để đánh giá và cắt bỏ các nhánh có độ tin cậy kém hoặc mở rộng tiếp các nhánh có độ chính xác cao. Kỹ thuật cắt tỉa này được gọi là cắt tỉa bi quan và thường được sử dụng để cắt tỉa các cây được xây dựng theo thuật toán ID3 và C4.5.
- Kỹ thuật mô tả độ dài tối thiểu - MDL (Minimum Description Length) (với kỹ thuật này không cần kiểm tra các mẫu). Kỹ thuật này không cần thiết phải kiểm tra các mẫu và nó thường được sử dụng trong các thuật toán SLIQ, SPRINT.
6. Đánh giá và kết luận về các thuật toán xây dựng cây quyết định.
Các thuật toán xây dựng cây quyết định vừa được trình bày ở trên theo thứ tự thời gian ra đời và quá trình phát triển có tính chất kế thừa lẫn nhau của chúng.
- Thuật toán CLS: đây là một trong những thuật toán xây dựng cây quyết đinh ra đời sớm nhất. CLS thường chỉ áp dụng cho các CSDL có số lượng thuộc tính nhỏ, mối quan hệ giữa các thuộc tính không quá phức tạp, giá trị thuộc tính thuộc dạng phân loại rời rạc. Còn đối với các CSDL lớn và có chứa các thuộc tính mà giá trị của nó là liên tục thì CLS làm việc không hiệu quả. Do thuật toán CLS chưa có tiêu chuẩn lựa chọn thuộc tính trong quá trình xây dựng cây mà với cùng một tập dữ liệu đầu vào áp dụng thuật toán CLS có thể cho ra nhiều cây kết quả khác nhau. Nhưng đây là thuật toán đơn giản, dễ cài đặt, phù hợp trong việc hình thành ý tưởng và giải quyết những nhiệm vụ đơn giản.
- Thuật toán ID3: trong thuật toán ID3, Quinlan đã khắc phục được hạn chế của thuật toán CLS. ID3 cho cây kết quả tối ưu hơn thuật toán CLS. Khi áp dụng thuật toán ID3 cho cùng một tập dữ liệu đầu vào và thử nhiều lần thì cho cùng một kết quả bởi vì thuộc tính ứng viên ở mỗi bước trong quá trình xây dựng cây được lựa chọn trước. Tuy nhiên thuật toán này cũng chưa giải quyết được về vấn đề thuộc tính số, liên tục, số lượng các thuộc tính còn bị hạn chế và ID3 làm việc không hiệu quả với dữ liệu bị nhiễu hoặc bị thiếu.
50 - Thuật toán C4.5: để khắc phục những hạn chế của thuật toán ID3, Quinlan đã đưa ra thuật toán C4.5. Thuật toán này có thể phân lớp các dữ liệu có chứa thuộc tính số (hoặc thuộc tính liên tục), thuộc tính đa trị và giải quyết được vấn đề dữ liệu bị nhiễu hoặc bị thiếu. Tuy nhiên C4.5 vẫn có hạn chế đó là làm việc không hiệu quả với những cơ sở dữ liệu rất lớn vì chưa giải quyết được vấn đề bộ nhớ. - Thuật toán SLIQ: Thuật toán này phân lớp rất có hiệu quả đối với các tập dữ liệu lớn. SLIQ làm việc không phụ thuộc vào số lượng các lớp, các thuộc tính và số lượng bản ghi trong tập dữ liệu. SLIQ đã cải thiện được vấn đề về bộ nhớ vì có pha tiền xử lý phân loại dữ liệu, tại một thời điểm chỉ có 1 danh sách lớp thường trú trong bộ nhớ còn các danh sách lớp còn lại được lưu trên đĩa. SLIQ có kỹ thuật cắt tỉa cây mô tả độ dài tối thiểu MDL rất hữu hiệu. Có thể nói hiện tại SLIQ là một thuật toán phân lớp nhanh, chính xác, chi phí thấp. Tuy nhiên, cài đặt thuật toán SLIQ thì phức tạp và thường được cài đặt để khai thác các cơ sở dữ liệu rất lớn. Hiện nay các thuật toán khá dữ liệu nói chung và khai phá dữ liệu bằng cây quyết định nói riêng vẫn đang được tiếp tục nghiên cứu, cải tiến để vượt qua được những khó khăn, thách thức trong việc khai phá dữ liệu rút ra các tri thức có ích, đáp ứng nhu cầu của thực tế.
51
CHƢƠNG III
ỨNG DỤNG CÂY QUYẾT ĐỊNH DỰ ĐOÁN CHỈ SỐ NHÓM NỢ 1. Xử lý dữ liệu cho bài toán dự đoán rủi ro tín dụng
Dữ liệu được sử dụng trong khai phá dữ liệu thường được lấy từ nhiều nguồn khác nhau và được lưu trữ trong nhiều năm, trên các thiết bị khác nhau. Điều này dẫn đến dữ liệu thu được từ thực tế có thể chứa nhiễu, lỗi, không hoàn chỉnh, có mâu thuẫn.
Nếu dữ liệu không sạch (có chứa lỗi, nhiễu, không đầy đủ, có mâu thuẫn), thì các kết quả khai phá dữ liệu sẽ bị ảnh hưởng và không đáng tin cậy. Các kết quả khai phá dữ liệu (các tri thức khám phá được) không chính xác (không đáng tin cậy) sẽ dẫn đến các quyết định không chính xác, không tối ưu. Vì vậy công việc xử lý dữ liệu trước khi đưa vào các mô hình là rất cần thiết.
Các công việc chính trong tiền xử lý dữ liệu gồm:
Làm sạch dữ liệu (Data cleaning): Gán các giá trị thuộc tính còn thiếu, sửa chữa các dữ liệu nhiễu/lỗi, xác định hoặc loại bỏ các ngoại lai (outliers), giải quyết các mâu thuẫn dữ liệu
Tích hợp dữ liệu (Data integration) : tích hợp nhiều cơ sở dữ liệu, nhiều khối dữ liệu (data cubes), hoặc nhiều tập tin dữ liệu.
Biến đổi dữ liệu (Data transformation): Chuẩn hóa (normalize) và kết hợp (aggregate) dữ liệu
52 Giảm bớt dữ liệu (Data reduction): giảm bớt về biểu diễn (các thuộc tính) của dữ liệu, giảm bớt kích thước dữ liệu nhưng vẫn đảm bảo thu được các kết quả khai phá dữ liệu tương đương (hoặc xấp xỉ)
Rời rạc hóa dữ liệu (Data discretization): được sử dụng đối với các dữ liệu có các thuộc tính kiểu số.
Trong luận văn này tôi sử dụng phần mềm Weka 3.7 để xử lý dữ liệu và phân lớp nhóm nợ của khách hàng vay vốn.
Từ một tập nguồn dữ liệu gốc của ngân hàng Sacombank năm 2007, tôi lựa chọn ra bảng dữ liệu gồm 2090 bản ghi các khoản vay (với khách hàng là cá nhân). Mỗi bản ghi gồm 13 thuộc tính, trong đó thuộc tính chỉ số nợ là thuộc tính cần dự đoán
STT Tên thuộc tính Diễn giải
1 CUSID Mã khách hàng
2 JOB Nghề nghiệp khách hàng 3 POSITION Vị trí công tác / chức vụ
4 INCOME Lương thu nhập hàng tháng có ổn định không ( N, V) 5 TYPE Xếp loại khách hàng
6 DURTYPE Thời hạn khoản vay 7 PURPOSE Mục đích vay 8 RESIDENT Trạng thái cư trú 9 APRLIMIT Định mức được vay 10 AGE Tuổi
11 MARRIED Đã kết hôn chưa? 12 GTVALUE Giá trị đảm bảo 13 GDEBT Chỉ số nhóm nợ
Bảng 4.1. Bảng thông tin khách hàng vay vốn
Trong file dữ liệu một khách hàng được xác định duy nhất bởi thuộc tính CUSID, vì vậy ta tiến hành loại bỏ thuộc tính này.
53 Thuộc tính TYPE (đánh giá khách hàng) có vài bản ghi thiếu giá trị, tôi thay thế các giá trị thiếu này bằng giá trị chiếm nhiều nhất trong tập dữ liệu. Cụ thể là TYPE=”6”.
Hình 4.1. Giao diện Weka phân tích thuộc tính TYPE
Thuộc tính hạn mức được vay có giá trị là số. Giá trị nhỏ nhất và lớn nhất lần lượt là: 5300000 và 1150000000, mặt khác thuộc tính này có nhiều giá trị
khác nhau vì vậy tôi sẽ chuyển giá trị của thuộc tính từ kiểu số sang kiểu rời rạc. Tôi sử dụng phương pháp tạo ra 10 khoảng giá trị cho thuộc tính. Việc xác định các khoảng giá trị dựa trên tần suất xuất hiện của các giá trị trong tập dữ liệu. Kết quả là 10 khoảng giá trị thuộc tính như sau:
1. (-inf-116800000], gồm 403 mẫu
2. (116800000-231600000], gồm 363 mẫu 3. (231600000-346400000], gồm 358 mẫu 4. (346400000-461200000], gồm 263 mẫu 5. (461200000-576000000], gồm 117 mẫu
54 6. (576000000-690800000], gồm 106 mẫu 7. (690800000-805600000], gồm 110 mẫu 8. (805600000-920400000], gồm 113 mẫu 9. (920400000-1035200000], gồm 127 mẫu 10.(1035200000-inf), gồm 130 mẫu
Hình 4.2: Giao diện Weka phân tích thuộc tính hạn mức được vay
Tương tự, thuộc tính tuổi có các giá trị là số, từ 20 đến 65 tuổi. Vậy nên tôi chọn cách chuyển giá trị số của thuộc tính này thành các khoảng giá trị:
(-inf-29], gồm 349 mẫu (29-38], gồm 527 mẫu (38-47], gồm 452 mẫu (47-56], gồm 609 mẫu (56-inf), 153 mẫu.
55
Hình 4.3. Giao diện Weka phân tích thuộc tính tuổi khách hàng.
Các giá trị còn lại trong tập dữ liệu đều là các giá trị rời rạc và đầy đủ giá trị. Vì vậy không cần xử lý dữ liệu. Tập dữ liệu này gọi là tập A1
2. Phƣơng pháp lấy mẫu dữ liệu
Tập dữ liệu đôi khi phân bố không đồng đều điều này ảnh hưởng đến chất lượng học máy của thuật toán phân lớp. Có ba chiến lược lấy mẫu chính sau là giải pháp cho dữ liệu phân bố không đồng đều của các lớp.
a) Lấy mẫu lên: là việc tăng số ví dụ của lớp thiểu số trong tập dữ liệu làm cho tập dữ liệu cân bằng hơn. Một số phương pháp lấy mẫu lên phổ biến như sau:
Lấy mẫu lên ngẫu nhiên đơn giản (radom oversimpling): nhân đôi số ví dụ của lớp thiểu số trong tập dữ liệu ngẫu nhiên.
Lấy mẫu lên thiểu số nhân tạo: Chawla đưa ra một phương pháp lấy mẫu lên thông minh vào năm 2002, gọi là kỹ thuật lấy mẫu lên thiểu số nhân tạo (Synthetic Minority Over-sampling Technique – SMOTE). SMOTE thêm mới,
56 tạo ra các mẫu lớp thiểu số bằng ngoại suy giữa các ví dụ lớp thiểu số tồn tại từ trước hơn là đơn giản nhân đôi các ví dụ ban đầu. Kỹ thuật này trước hết tìm ra k hàng xóm lân cận của lớp thiểu số (khuyến cáo k=5). Các mẫu nhân tạo sau đó được sinh ra trong sự điều khiển của một số hoặc tất cả hàng xóm lân cận, phụ thuộc số lượng ví dụ lấy mẫu lên mong muốn.
Lấy mẫu lên SMOTE-đường biên: năm 2005, Han đưa ra một bản sửa đổi SMOTE của Chawla gọi là SMOTE – đường biên. Kỹ thuật này chọn các ví dụ thiểu số được xem xét trên đường biên của vùng quyết định thiểu số trong không gian đặc trưng và chỉ thực hiện SMOTE để lấy lên các ví dụ đó hơn là lấy tất cả hoặc một tập con ngẫu nhiên nào đó.
Lấy mẫu lên dựa vào cụm: có nhiều tập con các mẫu trong một lớp rời rạc trong không gian đặc trưng tạo thành sự không cân bằng trong lớp. Điều đó dẫn đến giảm giá trị phân lớp dữ liệu và lấy mẫu lên dựa vào cụm sẽ loại bỏ chúng mà không cần loại bỏ dữ liệu.
b)Lấy mẫu xuống (undersampling): là việc loại bớt các ví dụ của lớp đa số trong tập dữ liệu để tập dữ liệu có sự phân bố giữa các lớp đồng đều hơn. Một số phương pháp lấy mẫu phổ biến sau:
Lấy mẫu xuống ngẫu nhiên đơn giản (radom understampling) đơn giản là loại bỏ các ví dụ của lớp đa số trong tập dữ liệu một cách ngẫu nhiên để tập dữ liệu cân bằng hơn
Lựa chọn một mặt: năm 1997 Kubat & Matwin đề xuất một kỹ thuật gọi là lựa chọn một mặt. Lựa chọn một mặt lấy mẫu xuống của lớp đa số bằng cách loại bỏ bớt ví dụ của lớp đa số mà được coi như là dư thừa hoặc nhiễu
c) Kết hợp hai chiến lược trên:
Kết hợp hai phương pháp trên: thực hiện đồng thời lấy mẫu lên đối với lớp thiểu số và lấy mẫu xuống với mẫu đa số.
57 Trong các thực nghiệm, người ta thường áp dụng các kỹ thuật khai phá trên tập dữ liệu có kích thước nhỏ hơn tập dữ liệu của bài toán. Để bảo đảm kết quả không khác biệt so với khi sử dụng dữ liệu gốc của bài toán, một phương pháp lấy mẫu thường được sử dụng như sau:
Lấy mẫu kết hợp ngẫu nhiên: trong các thực nghiệm lấy mẫu lên hoặc xuống hoặc kết hợp của chúng cho thấy phương pháp lấy mẫu kết hợp thu được các kết quả tốt hơn.
Hợp nhất các lớp của tập dữ liệu
Trong bài toán dự đoán rủi ro tín dụng có 5 nhóm nợ tương ứng với 5 lớp cần dự đoán cho mỗi mẫu dữ liệu. Mặt khác, trong thực tế ngân hàng phân loại nợ thành 2 nhóm chính là nợ xấu và nợ tốt. Nợ xấu gồm nhóm 3,4,5. Nợ tốt gồm nhóm 1,2. Vì vậy tôi hợp nhất tập dữ liệu 5 lớp thành tập dữ liệu 2 lớp. Tập dữ