2.2.1 Nén dữ liệu (Data Compression)
Chức năng nén dữ liệu [12] của cây quyết định là giúp đơn giản cơ sở dữ liệu phức tạp ban đầu với hàng nghìn bản ghi và rất nhiều trường thành một sơ đồ cây dễ hiểu, mô tả tổng quan toàn bộ cơ sở dữ liệu.
Ví dụ với một cơ sở dữ liệu ban đầu là hàng nghìn bản ghi và hàng chục thuộc tính như bảng 2.1, cây quyết định được tạo ra bởi cơ sở dữ liệu đó như một mô hình mô phỏng lại dữ liệu một cách trực quan, lôgic và ngắn gọn như hình 2.3.
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 13 / 61
Hình 2.3 Cây quyết định được xây dựng dựa trên cơ sở dữ liệu ở bảng 2.1
2.2.3 Dự đoán (Prediction)
Chức năng dự đoán [12] của cây quyết định là chức năng quan trọng giúp dự đoán kết quả của trường hợp chưa xảy ra. Ví dụ với cây quyết định như sau :
Hình 2.4 Cây quyết định cho bài toán playgolf
Khi đưa vào bộ dữ liệu là Out Look là Sunny, Humidity là 77, Weather là 74, Windy là false. Dựa vào cây quyết định sau khi đã xây dựng dựa trên tập huấn luyện trên ta có lập luận và kết quả như sau: Với outlook là sunny, ta đi vào nhánh “sunny”, humidity là 77 đi vào nhánh “>75” và được kết quả là “don’t play”.
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 14 / 61
Để có được một cây quyết định và đánh giá hiệu quả của cây quyết định đó ta cần thực hiện các bước sau :
Bƣớc 1. Tách cơ sở dữ liệu mẫu ban đầu thành 2 phần : một phần là tập
huấn luyện được 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 chia một cách đệ quy tập mẫu dữ liệu huấn luyện cho
đến khi các mẫu ở mối nút lá thuộc cùng một lớp.
Bƣớc 3. Cắt tỉa cây là việc làm dùng để tối ưu hoá cây.
Bƣớc 4. Đánh giá cây- dùng để đánh giá độ chính xác của cây kết quả. 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.
2.3.1 Thuật toán xây dựng cây CLD
Thuật toán CLD [4] thiết kế theo chiến lược chia để trị từ trên xuống, gồm có 4 bước:
Bƣớc 1: Tạo một nút T, gồm tất cả các mẫu của tập huấn luyện.
Bƣớc 2: Nếu tất cả các mẫu trong T có thuộc tính đều là Yes, hoặc đều là No (thuộc cùng một lớp) thì T là nút lá.
Bƣớc 3: Nếu các thuộc tính trong tập gốc thuộc cả 2 lớp Yes và No thì :
- Chọn một thuộc tính X bất kì trong tập mẫu dữ liệu đó (giá trị của X là
V1, V1,….Vn).
- Chia T thành T1, T2,…Tn theo các giá trị của X. - Ta có các nút con Ti (i: 1 → n).
- Các nhánh từ T → Ti là các giá trị V1, V2 …, Vn
Bƣớc 4: Thực hiện lặp lại cho nút con và quay lại bƣớc 2.
Nhược điểm của thuật toán này là tại bước 3 khi mà chúng ta chọn một thuộc tính bất kì thì sẽ tạo ra nhiều cây khác nhau và không biết được cây nào là cây tốt nhất. Hay nói cách khác là nhược điểm của thuật toán này là chưa chọn ra được thuộc tính tốt nhất làm nút để được cây tối ưu.
2.3.2 Thuật toán xây dựng cây ID3
ID3 [4] được phát triển bởi Ross Quinlan (1983). Ý tưởng cơ bản của giải thuật ID3 là xây dựng cây quyết định bằng việc sử dụng một cách tìm kiếm từ trên xuống dựa trên những tập hợp cho trước để kiểm tra mỗi thuộc tính tại mỗi nút của cây. Từ đó, để chọn ra thuộc tính hữu ích nhất cho sự phân loại trên những tập hợp cho trước.
ID3 được xem như là một cải tiến của CLD với khả năng lựa chọn thuộc tính tốt nhất để tiếp tục phát triển cây tại mỗi bước. Dựa theo những nghiên cứu của Ross
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 15 / 61
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).
Entropy của một tập S được tính theo công thức (1) Entropy ( )- - 2( )
2
P log P P log P (1) Trong trường hợp các mẫu dữ liệu có hai thuộc tính phân lớp “yes” (+), “no” (-). Ký hiệu p+ là để chỉ tỷ lệ các mẫu có giá trị của thuộc tính quyết định là “yes”, và p- là tỷ lệ các mẫu có giá trị của thuộc tính quyết định là “no” trong tập S.
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: n i Pi log Pi S 1(- 2( )) ) Entropy( (2) Trong đó Pi là tỷ lệ các mẫu thuộc lớp i trên tập hợp S các mẫu kiểm tra.
Các trường hợp đặc biệt:
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 thì Entropy(S) = 0.
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) [4]: 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. Đại lượng này được tính thông qua hai giá trị Information và Entropy.
Cho tập dữ liệu S gồm có n thuộc tính Ai (i =1, 2…, n) giá trị Information của thuộc tính Ai, ký hiệu là Information(Ai) được xác định bởi công thức:
n i 2
i=1
Information(A ) = -log ( ) Entropy(S)pi
(3) 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: v v v value(A) S
( , ) Information(A) - Entropy(A)= Entropy(S)- Entropy(S )
S Gain S A (4) Trong đó :
S là tập hợp ban đầu với thuộc tính 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á trì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 có giá trị Gain lớn nhất.
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 16 / 61
Bƣớc 1: tạo một nút T, gồm tất cả các mẫu của tập huấn luyện.
Bƣớc 2: nếu tất cả các mẫu trong T có thuộc tính đều là Yes, hoặc đều là No (thuộc cùng một lớp) thì T là nút lá.
Bƣớc 3: trường hợp ngược lại của trường hợp trên, tức là các thuộc tính
trong tập gốc thuộc cả 2 lớp Yes và No thì:
-Tính giá trị G của các thuộc tính, thuộc tính nào có giá trị Gain lớn nhất thì được chọn làm nút X tiếp theo (giá trị của X là V1, V2, …., Vn).
-Chia T thành T1, T2,…, Tn theo các giá trị của X. -Ta có các nút con Ti (i: 1 → n).
-Các nhánh từ T → Ti là các giá trị V1, V2, …, Vn.
Bƣớc 4:thực hiện lặp lại cho nút con và quay lại bước 2.
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 số đó là C4.5 (Quinlan 1996).
2.3.3 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ải 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 (numeric attributes) và làm việc được với tập dữ liệu bị thiếu và bị nhiễu.
2.3.3.1 C4.5 Xử lý đối thuộc tính số (Numeric attributes)
Khi gặp thuộc tính liên tục trước khi tính Gain của nó ta thực hiện phân ngưỡng các giá trị liên tục của thuộc tính đó. Hiện có nhiều thuật toán để phân ngưỡng. Sau đây, là một cách tính ngưỡng của thuộc tính liên tục:
Bƣớc 1: sắp xếp các giá trị của thuộc tính đó theo thứ tự tăng dần, hoặc
giảm dần được tập giá trị V= V1, …, Vm.
Bƣớc 2: tính σi = (Vi +Vi+1) /2*(i : 1→m). Tính G(σi). So sánh σi nào có Gain lớn nhất thì ngưỡng chính là σi đó.
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 17 / 61
2.3.3.2 C4.5 làm việc với tập dữ liệu bị thiếu hoặc bị nhiễu
Thuật toán vừa xây dựng dựa vào giả thuyết tất cả các mẫu dữ liệu có đủ các thuộc tính. Nhưng trong thực tế, xảy ra hiện tượng dữ liệu bị thiếu, nghĩa là ở một số mẫu dữ liệu có những thuộc tính không được xác định hoặc mâu thuẫn hoặc không bình thường. Ta xem xét kỹ hơn với trường hợp dữ liệu bị thiếu. Đơn giản nhất là không đưa các mẫu với các giá trị bị thiếu vào. Nếu làm như vậy thì có thể dẫn đến tình trạng thiếu các mẫu học. Giả sử T là một tập hợp gồm các mẫu cần được phân loại, X là phép kiểm tra theo thuộc tính L và U là số lượng các giá trị bị thiếu của thuộc tính L. Khi đó, ta có: k j 2 j=1 freq(C ,T) ( , ) Info(T) = - *log |T|-U | | j freq C T T U (5) x n 2 j=1 |T| Info (T) = - *log ( ) |T|-U Ti (6)
Trong trường hợp này, khi tính tần số freq (Ci, T) ta chỉ tính riêng các mẫu với giá trị trên thuộc tính L đã xác định. Khi đó ta có công thức như sau:
( ) | | (Info(T)-Info ( ))x | | T U Gain X T T (7)
Tương tự thay đổi công thức (7), nếu phép kiểm tra có N giá trị đầu vào thì công thức (7) được tính như trong trường hợp chia N tập hợp ban đầu thành (N+1) tập hợp con. Giả sử phép thử X có các giá trị O1,O2, …, On được lựa chọn theo tiểu chuẩn (7), ta cần xử lý như thế nào với các dữ liệu bị thiếu. Giả sử, mẫu từ tập hợp T với đầu ra là
Oi có liên quan đến tập hợp Ti thì khả năng mẫu đó thuộc tập hợp Ti là 1.
Giả sử, mỗi mẫu trong Ti có một chỉ số xác định xác suất thuộc tập hợp Ti. Nếu mẫu có giá trị thuộc tính L thì trọng số bằng 1. Nếu trong trường hợp ngược lại, thì mẫu này liên quan đến tập con T1, T2, …, Tn với xác xuất tương ứng là:
1 , 2 ,...,
| | | | | |
n
T T T
T U T U T U (8)
Ta có thể dễ dàng thấy được rằng tổng các xác xuất này bằng 1. 1 1 n i i T T U (9) Do đó giải pháp này được phát biểu như sau: xác suất xuất hiện của các giá trị bị thiếu tỷ lệ thuận với xác suất xuất hiện của các giá trị không thiếu.
Các bước của thuật toán C4.5 :
Bƣớc 1: tạo một nút T, gồm tất cả các mẫu của tập huấn luyện .
Bƣớc 2: Nếu tất cả các mẫu trong T có thuộc tính đều là Yes hoặc đều là No (thuộc cùng một lớp) thì T là nút lá.
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 18 / 61
trong tập gốc thuộc cả 2 lớp Yes và No thì :
-Tính giá trị G của các thuộc tính, thuộc tính nào có giá trị Gain lớn nhất thì được chọn làm nút X tiếp theo (giá trị của X là V1, V2 ,…., Vn). Trong khi, tính giá trị Gain của các thuộc tính và nếu gặp thuộc tính có giá trị liên tục hay gặp thuộc tính nhiễu hoặc thiếu thì xử lý như trên.
-Chia T thành T1, T2,…, Tn theo các giá trị của X. -Ta có các nút con Ti (i: 1→ n).
-Các nhánh từ T → Tilà các giá trị V1, V2, …, Vn.
Bƣớc 4: thực hiện lặp lại cho nút con và quay lại bước 2.
Thuật toán 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òn nhiều vấn đề khó khăn phức tạp và nhiều thách thức trong KPDL bằng cây quyết định. Như vấn đề dữ liệu bị thiếu giá trị đối với các thuộc tính trong CSDL, vấn đề các CSDL rất lớn, về số lượng các thuộc tính, về số lượng các bản ghi, và vấn đề về bộ nhớ, … Những vấn đề này luôn làm đau đầu những nhà khoa học. 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.4 Cắt tỉa cây
Mục đích của cắt tỉa cây [13] là để giải quyết tình trạng over fitting của dữ liệu. Over fitting dữ liệu là hiện tượng cây quyết định chứa một số đặc trưng riêng của tập huấn luyện và nếu lấy chính tập huấn luyện để kiểm tra lại mô hình phân lớp thì độ chính xác rất cao nhưng đối với dữ liệu khác sử dụng cây đó lại không đạt được độ chính xác như vậy. Over fitting là một khó khăn đáng kể đối với học bằng cây quyết định, đặc biệt khi số lượng ví dụ trong tập huấn luyện quá ít hay có nhiễu trong dữ liệu.
Có một số phương pháp tránh over fitting dữ liệu trong cây quyết định:
2.4.1 Tiền cắt tỉa
Dừng phát triển cây sớm hơn bình thường, trước khi đạt tới điểm phân lớp hoàn hảo tập huấn luyện. Với phương pháp này, một thách thức đặt ra là phải ước lượng chính xác thời điểm dừng phát triển cây. Nếu nút nào có kết quả gần như chắc chắn là gán nhãn cho nó là nhãn của lớp phổ biến nhất.
2.4.2 Hậu cắt tỉa
Cho phép cây có thể over fitting dữ liệu nhưng sau đó sẽ cắt tỉa cây. Phương pháp này thành công hơn trong thực tế, vì nó cho phép các tương tác tiềm năng giữa
Sinh viên thực hiện: Nguyễn Thu Hương - Lớp HTTTA – K11 Trang 19 / 61
các thuộc tính được khám phá trước khi quyết định xem kết quả nào được giữ lại. Việc cắt tỉa cây theo phương pháp này đươc tiến hành thông qua việc tính lỗi.
Sau đây là quy trình tính lỗi của nút:
Bƣớc 1: Rà soát lại nút theo thứ tự nhất định.
Bƣớc 2: Tại nút S ta thực hiện tính toán: -E(S): Lỗi cố định của nút S.
-BackupError(S) (Lỗi từ các nút con của S) = Error (Pi) -Error (S) = Min [ E(S), BackupError (S)].
-E(S) = (N-n+1)/ (N+2) → Tỷ lệ nút không phổ biến trong tập S.
N là tổng số mẫu của nút S.
n: số mẫu của lớp phổ biến trong S.
Si là nút con của S.
Pi tỷ lệ mẫu trong Si trên S.
Bƣớc 3: So sánh BackupError (S) với E(S). Nếu BackupError(S) ≥ E(S) thì cắt tỉa tại nút S, tức là bỏ hết các nút con của S và S lúc này là nút lá.
2.4.3 Đánh giá cây quyết định
a) Phương pháp Hold out
Phương pháp Hold out [3], [5] được thực hiện như sau: toàn bộ tập dữ liệu D
được chia thành 2 tập con không giao nhau là :
- Tập huấn luyện D_train để xây dựng cây quyết định.
- Tập kiểm thử D_test để đánh giá hiệu quả của cây quyết định đã được xây dựng D = D_train ˅ D_test , và thường là D_train >> D_test.
Các yêu cầu :
- Bất kỳ mẫu nào thuộc tập kiểm thử D_test đều không được sử dụng trong