2. Cây quyết định:
2.3. Thuật toán xây dựng
Để xây dựng một cây quyết định và đánh giá hiệu quả của cây quyết định đó ta cần phải thực hiện các bước sau:
55
+ Một phần là tập huấn luyện dùng để xây dựng cây. + Một phần là tập kiểm tra để đánh giá hiệu quả của cây.
- Bước 2: Thực hiện thuật toán xây dựng cây bằng cách chia một cách đệ quy tập huấn luyện cho đến khi các mẫu ở mỗi nút lá thuộc cùng một lớp (thuộc tính).
- Bước 3: Cắt tỉa cây sao cho phù hợp và tối ưu hóa.
- Bước 4: Đánh giá cây- dùng để đánh giá độ chính xác của cây đã dựng. Tiêu chí đánh giá là tổng số mẫu được phân lớp chính xác trên tổng số mẫu đưa vào.
Có rất nhiều thuật toán được nghiên cứu nhưng phổ biến nhất là thuật toán ID3, C4.5 và CLS.
2.3.1. Thuật toán xây dựng cây ID3:
ID3 được phát triển bởi Ross Quinlan (1983). Ý tưởng cơ bản của thuật toán ID3 là xây dựng cây quyết định bằng việc sử dụng chia nhỏ từ trên xuống dựa trên các tiêu chí đánh giá. Một câu hỏi đặt ra là chỉ tiêu nào là tốt nhất?
Dựa theo nghiên cứu của Ross Quinlan để chọn ra được thuộc tính tốt nhất ta phải tính độ bất định (Entropy) và tính hiệu quả của thuộc tính (Gain).
Trường hợp tổng quát đối với tập con S có n phân lớp thì ta có công thức sau:
Trong đó Pi là xác xuất các quan sát mẫu trong tập Si.
Trong trường hợp các mẫu dữ liệu có hai thuộc tính phân lớp: Entropy của một tập S được tính theo công thức:
Entropy= -P+log2(P+) – P- log2(P-) (24) Ký hiệu: S là tập dữ liệu
P+ là xác suất các quan sát mẫu có giá trị của thuộc tính quyết định là “yes”. P- là xác suất các quan sát mẫu có giá trị của thuộc tính quyết định là “no”. Các trường hợp của Entropy:
56
Nếu tất cả các mẫu thành viên trong tập S đều thuộc cùng một lớp.
Nếu tập S có số mẫu phân bổ đều nhau vào các lớp thì Entropy(S)=1.
Các trường hợp còn lại 0<Entropy(S)<1.
Information Gain (viết tắt là Gain): Gain là đại lượng dùng để đo tính hiệu quả của một thuộc tính được lựa chọn cho việc phân lớp.
Cho tập dữ liệu S gồm có n thuộc tính Ai (i=1,2,…,n) giá trị lượng thông tin (Information) của thuộc tính Ai, ký hiệu là Information(Ai) được xác định bởi công thức:
Information(Ai) = -∑ 2(pi)= Entropy(S) (25)
Giá trị Gain của thuộc tính A trong tập S ký hiệu là Gain(S,A) và được tính theo công thức sau:
Gain(S,A)= Information(A) – Entropy(A) = Entropy(S) - ∑
Entropy(Sv) (26)
Trong đó : S là tập hợp ban đầu với thuốc tính chọn để đánh giá là A. Các giá trị của v tương ứng là các giá trị của thuộc tính A.
Sv bằng tập hợp con của tập S mà có thuộc tính A mang giá trị v. |Sv| là số phần tử của tập Sv.
|S| là số phần tử của tập S.
Trong quá tình xây dựng cây quyết định theo thuật toán ID3 tại mỗi bước triển khai cây, thuộc tính được chọn để triển khai là thuộc tính mà giá trị Gain là lớn nhất.
Thuật toán ID3 gồm các bước sau:
Xây dựng cây nhị phân với tập dữ liệu đầu vào là tập huấn luyện (training data). Đầu vào: tập huấn luyện, mẫu, thuộc tính được chọn, danh sách thuộc tính. Đầu ra: một cây quyết định.
Thuật toán: Generate_decision_tree(Trainingdata, danh_sach_thuoc_tinh);
57
(2)If(tất cả các mẫu trong Trainingdata nằm trong cùng 1 lớp C) (3) Return N là node lá với nhãn là C;
(4) If(danh_sach_thuoc_tinh là “empty”)
(5) Return N là node lá với nhãn phần chung nhất của lớp mẫu;
(6) Select thuoc_tinh_test, đó là thuộc tính có chỉ số Gain tốt nhất trong danh sách các thuộc tính
(7) Node N với nhãn thuoc_tinh_test;
(8)For(each known value of thuoc_tinh_test);
(9)Phát triển nhánh của node N với điều kiện thuoc_tinh_test = ai;
(10) Chia tập mẫu thành các nhánh Si với điều kiện thuoc_tinh_test = ai; (11) If Si is rỗng(empty) then
(12) Tạo node lá với nhãn phần chung nhất của lớp mẫu;
(13) Else Generate_decision_tree(Si, attribute_list_test_attribute);
Vì ID3 sử dụng tất cả các ví dụ ở mỗi bước để đưa ra các quyết định dựa trên thống kê, nên kết quả tìm kiếm của ID3 rất ít bị ảnh hưởng bởi một vài dữ liệu sai (hay dữ liệu nhiễu).
Bên cạnh các vấn đề cơ bản được trình bày trong phần này, ID3 còn được thảo luận nhiều vấn đề liên quan như làm sao để tránh cho cây quyết định không bị ảnh hưởng quá nhiều vào tập huấn luyện, để nó có thể tổng quát hơn, phân loại đúng được cho các trường hợp chưa gặp. Có nhiều giải pháp đã được đưa ra như cắt tỉa lại cây quyết định sau khi học, hoặc cắt tỉa các luật sau khi chuyển cây về dạng luật, vấn đề về thuộc tính có giá trị liên tục,… Giải quyết các vấn đề này dẫn đến việc sinh ra nhiều thế hệ sau của ID3 mà nổi bật trong đó là C4.5 (Quinlan 1996).
2.3.2. Thuật toán xây dựng cây C4.5
Thuật toán C4.5 được phát triển và công bố bởi Quinlan vào năm 1996. Thuật toán C4.5 là một thuật toán được cả tiến từ thuật toán ID3 với việc cho phép xử lý trên tập dữ liệu có các thuộc tính số- thuộc tính có giá trị liên tục và làm việc được với tập
58 dữ liệu bị thiếu và bị nhiễu.
(1) Với thuộc tính liên tục
Xử lý thuộc tính liên tục đòi hỏi nhiều tài nguyên tính toán hơn thuộc tính rời rạc. Gồm các bước sau:
- Bước 1: Kỹ thuật Quick sort được sử dụng để sắp xếp các mẫu trong tập dữ liệu huấn luyện theo thứ tự tăng dần (hoặc giảm dần) các giá trị của thuộc tính liên tục V đang xét. Được tập giá trị V = {v1,v2,…,vm}.
- Bước 2: Chia tập dữ liệu thành hai tập con theo ngưỡng ai=(vi+vi+1)/2 nằm giữa hai giá trị liền kề nhau là vi và vi+1. Sau đó chúng ta tiến hành phân chia dữ liệu thành 2 tập là V1<= ai hay V2>ai. Chúng ta có được hai tập dữ liệu con: V1 = {v1, v2,…, vi} và V2 = {vi+1, vi+2,…, vm}.
- Bước 3: Xét (m-1) ngưỡng ai có thể có ứng với m giá trị của thuộc tính V bằng cách tính Information gain hay Gain ratio với từng ngưỡng đó. Ngưỡng có giá trị của Information gain hay Gain ratio lớn nhất sẽ được chọn làm ngưỡng phân chia của thuộc tính đó.
(2) C4.5 làm việc với tập dữ liệu bị thiếu hoặc bị nhiễu
Giá trị khuyết thiếu của thuộc tính là hiện tượng phổ biến trong dữ liệu. Trong quá trình xây dựng cây từ tập huấn luyện S, với A là thuộc tính kiểm tra (dự đoán) dựa trên các thuộc tính B với giá trị đầu ra b1, b2 (B = {b1, b2}).
Tập S0 là tập thuộc S, S0 chứa tất cả những quan sát có thuộc tính B không biết. Tập Si là tập thuộc tính S, Si chứa tất cả nhưng quan sát có thuộc tính B có giá trị bi đã biết.
Khi đó độ đo information gain của thuộc tính test A giảm:
Gain(S,A) =
Gain(S – S0,A ) (27) Tương ứng với Gain(S, B), P(S, B) cũng thay đổi:
Entropy(A) = -
( ) ∑ (
)
59
C4.5 giải quyết rất nhiều vấn đề mà ID3 chưa giải quyết được. Tuy nhiên, điểm yếu của thuật toán này là làm việc không hiệu quả với những cơ sở dữ liệu lớn vì chưa giải quyết được vấn đề bộ nhớ.
Mặc dù đã có nhiều cải tiến, nhiều thuật toán xây dựng cây quyết định ra đời, nhưng nói chung vẫn có nhiều vấn đề khó khăn phức tạp và nhiều thách thức trong khai phá dữ liệu bằng cây quyết định. Trên thực tế, các thuật toán xây dựng cây quyết định vẫn đang được cải tiến, nghiên cứu và phát triển.
2.3.3. Thuật toán xây dựng cây CLS
Thuật toán này được Hovland và Hint giới thiệu trong Concept learning system (CLS) vào những năm 50 của thế kỷ 20. Sau đó gọi tắt là thuật toán CLS.
Thuật toán CLS được thiết kế theo chiến lược chia để trị từ trên xuống. Nó gồm các bước sau:
a. Tạo ra nút T, nút này gồm tất cả các mẫu của tập huấn luyện.
b. Nếu tất cả các mẫu trong T có thuộc tính quyết định mang giá trị “yes” (hay thuộc cùng một lớp) thì gán nhãn cho nút T là “yes” và dừng lại. T lúc này là nút lá.
c. Nếu tất cả các mẫu trong T có thuộc tính quyết định mang giá trị “no” (hay thuộc cùng một lớp) thì gán cho nút T là “no” và dừng lại. T lúc này là nút lá.
d. Trường hợp ngược lại các mẫu của tập huấn luyện thuộc cả hai lớp “yes” và “no” thì:
- Chọn một thuộc tính X trong tập thuộc tính của tập mẫu dữ liệu, X có giá trị v1,v2,…,vn.
- Chia tập mẫu trong T thành các tập con T1,T2,…,Tn chia theo giá trị của X. - Tạo n nút con Ti(i=1,2,…,n) với nút cha là nút T.
- Tạo các nhánh nối từ nút T đến các nút Ti(i=1,2,…,n) là các thuộc tính của X. e. Thực hiện lặp cho các nút con Ti(i=1,2,…,n) và quay lại bước 2.
Ta nhận thấy trong bước 4 của thuật toán, thuộc tính được chọn để triển khai cây là tùy ý. Do vậy cùng với một tập mẫu dữ liệu huấn luyện nếu áp dụng thuật toán CLS
60
với thứ tự chọn thuộc tính triển khai cây khác nhau, sẽ cho ra các cây có hình dạng khác nhau. Việc lựa chọn thuộc tính sẽ ảnh hưởng tới độ rộng, độ sâu, độ phức tạp của cây.