Hậu cắt tỉa (post-prunning)

Một phần của tài liệu Khai phá dữ liệu với cây quyết định (Trang 53)

Phương pháp Hậu cắt tỉa cho phép phát triển cây đầy đủ sau đó mới cắt tỉa các nhánh không hợp lý trong quá trình xây dựng cây (cho phép tình trạng over- fitting xảy ra). Đây là một phương pháp khá thành công cho việc tìm ra các giả thiết chính xác cao.

Ta có thể sử dụng post-pruning theo luật (Rule post-pruning) như sau: chuyển đổi cây quyết định thành tập hợp những luật tương đương bằng việc tạo ra một luật cho mỗi đường đi từ gốc đến những nút lá. Mỗi thuộc tính kiểm tra theo đường từ gốc đến lá trở thành một tiền luật (precondition) và sự phân loại ở nút lá trở thành hậu luật (postcondition). Sau đó, thu gọn mỗi luật bằng việc loại bỏ những tiền luật có lỗi mà không thay đổi phần hậu luật, ước lượng độ chính xác. Sắp xếp những luật được thu gọn theo độ chính xác của nó và xem xét chúng trong thứ tự này khi phân loại những trường hợp tiếp theo.

Một phương pháp Hậu cắt tỉa khác được sử dụng bởi C4.5 là tính toán các lỗi của các nút như sau [18][22] :

Ký hiệu: 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 lỗi trên được tính như sau:

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).

BackupError or(s) = 

i

Pi Error(Si) Trong đó: Si là các nút con của S.

Pi là tỉ lệ số mẫu trong Si trên số mẫu trong S

Các nút lá không có con nên không có lỗi Backup, nên Error(Si) = E(Si). Nút S sẽ được cắt nhánh nếu BackupError(S)  E(S)

Ví dụ: Ta có cây quyết định như hình dưới đây

Hình 2.7: Cây trước khi cắt nhánh Lỗi trong các nút được tính như sau:

Nút lá S4 : E(S4) = (1-1+1)/(1+2) =1/3 = 0.33 Nút lá S5 : E(S5) = (2-2+1)/(2+2) =1/4 = 0.25 Nút lá S6 : E(S6) = (11-6+1)/(11+2) =6/13 = 0.46 S4:(1+,0-) S: (12+,8-) S1: (5+,2-) S3: (4+,2-) S2: (7+ ,6-) S7:(2+,2-) S5:(2+,0-) S6:(5+ ,6-) S8:(2+,0-)

Nút lá S7 : E(S7) = (4-2+1)/(4+2) =3/6 = 0.5 Nút lá S8 : E(S8) = (2-2+1)/(2+2) =1/4 = 0.25 Nút S3: E(S3) = (6 –4+1)/(6+2)= 3/8 =0.375

BackupError(S3) = (4/6). E(S7) + (2/6). E(S8) = 0.33+0.08 = 0.41 Error(S3) = Min (E(S3),BackupError(S3)) = 0.375

Nút S1: E(S1) = (7 –5+1)/(7+2)= 3/9 =0.33

BackupError(S1) = (1/7). E(S4) + (6/7). Error(S3) = 0.047+0.321 = 0.368 Error(S1) = Min (E(S1),BackupError(S1)) = 0.33

Nút S2: E(S2) = (13 –7+1)/(13+2)= 7/15 =0.467

BackupError(S2) = (2/13). E(S5) + (11/13). E(S6) = 0.077+0.389 = 0.466 Error(S2) = Min (E(S2),BackupError(S2)) = 0.466

Ta thấy tại S1 và S3 có lỗi Backup lớn hơn lỗi tĩnh, do đó ta sẽ cắt nhánh tại hai nút này và thu được cây như hình 2.8

Hình 2.8: Cây sau khi cắt nhánh

Như vậy, việc cắt nhánh cây giúp tối ưu hóa cây kết quả về kích cỡ cây hay (5+,2-)

S: (12+,8-)

S2: (7+ ,6-)

Một phần của tài liệu Khai phá dữ liệu với cây quyết định (Trang 53)

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

(129 trang)