Biểu diễn cây quyết định

Một phần của tài liệu Khai phá dữ liệu có canh tác dữ liệu và ứng dụng trong khai phá dữ liệu y khoa luận văn thạc sĩ (Trang 48)

Cây quyết định phân lớp các trường hợp cụ thể [10] bằng cách sắp đặt chúng từ trên xuống và bắt đầu từ nút gốc và đi xuống các nút lá:

Yes false Normal Humidity No Yes High No True Outlook

Sunny overcast rain

Windy

Mỗi nút trong biểu diễn một thuộc tính cần kiểm tra giá trị (an attribute to be tested) đối với các ví dụ kiểm tra giá trị (an attribute to be tested) đối với các ví dụ.

Mỗi nhánh từ một nút sẽ tương ứng với một giá trị có thể của thuộc tính gắn với nút đó trị có thể của thuộc tính gắn với nút đó.

Mỗi nút lá biểu diễn một phân lớp (a classification).

Một cây quyết định học được sẽ phân lớp đối với một ví dụ, bằng cách duyệt cây từ nút gốc đến một nút lá. → Nhãn lớp gắn với nút lá đó sẽ được gán cho ví dụ cần phân lớp.

Một cây quyết định biểu diễn một phép tuyển (disjunction) của các kết hợp (conjunctions) của các ràng buộc đối với của các kết hợp (conjunctions) của các ràng buộc đối với các giá trị thuộc tính của các ví dụ.

Mỗi đường đi (path) từ nút gốc đến một nút lá sẽ tương ứng với một kết hợp (conjunction) của các kiểm tra giá trị thuộc tính (attribute tests).

Cây quyết định (bản thân nó) chính là một phép tuyển (disjunction) của các kết hợp (conjunctions) này.

Ví dụ 3.2:

Trở lại ví dụ 3.1 ở trên, ta hoàn toàn có thể biểu diễn cây quyết định bằng đại số quan hệ như sau để thể hiện quyết định chơi tennis:

[(Outlook=Sunny) ∧∧∧∧ (Humidity=Normal)]

(Outlook=Overcast) ∨∨∨∨ (Outlook Overcast)

∨ [(Outlook=Rain) ∧∧∧∧ (Wind=Weak)] 3.1.3 Các bước chính xây dựng cây quyết định

Có nhiều thuật toán khác nhau để xây dựng cây quyết định như: CLS, ID3, C4.5, SLIQ, SPRINT, C5.0…Nhưng nói chung quá trình xây dựng cây quyết định đều được chia ra làm 3 giai đoạn cơ bản:

a.Xây dựng cây: 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ắt tỉa cây: Là việc làm dùng để tối ưu hoá cây. Cắt tỉa cây chính là việc trộn một cây con vào trong một nút lá.

c.Đá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.

Mã giả cho quá trình Xây dựng cây

Make Tree (Training Data T)

{

Partition(T) }

Partition(Data S)

{ if (all points in S are in the same class) then return for each attribute A do

evaluate splits on attribute A;

use best split found to partition S into S1, S2,..., Sk Partition(S1) Partition(S2)

... Partition(Sk) }

3.1.4 Cây quyết định so với kỹ thuật khai phá khác

So với các phương pháp KPDL khác, cây quyết định là một trong những hình thức mô tả dữ liệu tương đối đơn giản, trực quan, dễ hiểu đối với người dùng nhưng lại hiệu quả nên được sử dụng nhiều. Trong những năm qua, nhiều mô hình phân lớp dữ liệu đã được các nhà khoa học trong nhiều lĩnh vực khác nhau đề xuất như mạng notron, mô hình thống kê tuyến tính /bậc 2, cây quyết định, mô hình di truyền... Trong số những mô hình đó, cây quyết định được đánh giá là một công cụ mạnh, phổ biến đặt biệt là thích hợp cho DM nói chung cho phân lớp dữ liệu nói riêng. (adsbygoogle = window.adsbygoogle || []).push({});

3.1.4.1 Một số ưu điểm của cây quyết định

Cây quyết định có những ưu điểm sau: [7][10]

Khả năng sinh ra các quy tắc hiểu được

Cây quyết định có khả năng sinh ra các quy tắc dễ dịch (if … then …) hoặc có thể chuyển đổi được sang tiếng Anh hoặc SQL. Đây là ưu điểm nổi bật của kỹ thuật này. Thậm chí với những tập dữ liệu lớn khiến cho hình dáng

cây quyết định lớn và phức tạp, việc đi theo bất cứ đường nào trên cây là dễ dàng theo nghĩa phổ biến và rõ ràng. Do vậy sự giải thích cho bất cứ một sự phân lớp hay dự đoán nào đều tương đối minh bạch. Do đó mọi người có thể hiểu mô hình cây quyết định thông qua giải thích ban đầu.

Khả năng thực thi trong những lĩnh vực hướng quy tắc

Điều này có nghe có vẻ hiển nhiên, nhưng quy tắc quy nạp nói chung và cây quyết định nói riêng là lựa chọn hoàn hảo cho những lĩnh vực thực sự là các quy tắc. Rất nhiều lĩnh vực từ di truyền tới các quá trình công nghiệp thực sự chứa các quy tắc ẩn, không rõ ràng (underlying rules) do khá phức tạp và tối nghĩa bởi những dữ liệu lỗi (noisy). Cây quyết định là một sự lựa chọn tự nhiên khi chúng ta nghi ngờ sự tồn tại của các quy tắc ẩn, không rõ ràng.

Dễ dàng tính toán trong khi phân lớp

Mặc dù như chúng ta đã biết, cây quyết định có thể chứa nhiều định dạng, nhưng trong thực tế, các thuật toán sử dụng để tạo ra cây quyết định thường tạo ra những cây với số phân nhánh thấp và các test đơn giản tại từng node. Những test điển hình là: so sánh số, xem xét phần tử của một tập hợp, và các phép nối đơn giản. Khi thực thi trên máy tính, những test này chuyển thành các toán hàm logic và số nguyên là những toán hạng thực thi nhanh và không đắt. Đây là một ưu điểm quan trọng bởi trong môi trường thương mại, các mô hình dự đoán thường được sử dụng để phân lớp hàng triệu thậm trí hàng tỉ bản ghi.

Khả năng xử lý với cả thuộc tính liên tục và thuộc tính rời rạc

Cây quyết định xử lý “tốt” như nhau với thuộc tính liên tục và thuộc tính rời rạc. Tuy rằng với thuộc tính liên tục cần nhiều tài nguyên tính toán hơn.

Thể hiện rõ ràng những thuộc tính tốt nhất

Các thuật toán xây dựng cây quyết định đưa ra thuộc tính mà phân chia tốt nhất tập dữ liệu đào tạo bắt đầu từ node gốc của cây. Từ đó có thể thấy những thuộc tính nào là quan trọng nhất cho việc dự đoán hay phân lớp.

Quá trình xây dựng cây tương đối đơn giản

Dữ liệu dùng cho cây quyết định chỉ là những dữ liệu căn bản hoặc có thể không cần thiết. Một số kỹ thuật khác có thể đòi hỏi dữ liệu chuẩn, tạo các biến giả và loại bỏ đi các giá trị trống. Quá trình xây dựng cây tương đối nhanh. Kết quả dự đoán bằng cây quyết định có thể thẩm định lại bằng cách kiểm tra thống kê.

Có khả năng thực hiện tốt đối với dữ liệu lớn trong thời gian ngắn

Một lượng lớn dữ liệu có thể được phân tích bằng máy tính cá nhân trong thời gian ngắn đủ để người sử dụng đưa ra quyết định dựa trên sự phân tích đó.

Chính những điểm mạnh này mà liên tục trong nhiều năm qua, cây quyết định được bình chọn là giải thuật được sử dụng nhiều nhất và thành công nhất. Được ứng dụng thành công trong hầu hết các lãnh vực về phân tích dữ liệu, phân loại text, spam, phân loại gien, etc

Có rất nhiều giải thuật sẵn dùng : CART (Breiman et al., 1984), C4.5 (Quinlan, 1993), etc

3.1.4.2 Một số điểm yếu của cây quyết định

Song song những sức mạnh nổi bật trên, cây quyết định cũng có điểm yếu. Đó là:

- Cây quyết định không thích hợp lắm với mục tiêu là dự đoán giá trị của thuộc tính liên tục như thu nhập, huyết áp hay lãi xuất ngân hàng.. Cây quyết định cũng khó giải quyết với thời gian liên tục.

- Dễ xảy ra lỗi khi có nhiều lớp. Một số cây quyết định chỉ thao tác với lớp giá trị nhị phân dạng yes/no hay acept/reject. Dễ xảy ra lỗi khi số ví dụ đào tạo là nhỏ và càng nhanh hơn với cây mà có nhiều tầng hay có nhiều nhánh trên một node.

- Chi phí tính toán đắt để học: do phải đi qua nhiều node để đến node lá cuối cùng. Tại từng node, cần tính toán mật độ (hay tiêu chuẩn phân chia) trên từng thuộc tính, với thuộc tính liên tục phải thêm thao tác

sắp xếp lại tập dữ liệu theo thứ tự giá trị của từng thuộc tính đó. Sau đó mới có thể chọn được một thuộc tính phát triển và tương ứng là một phân chia tốt nhất.

3.2 MỘT SỐ THUẬT TOÁN KPDL BẰNG CÂY QUYẾT ĐỊNH

Hầu hết các thuật toán đã được phát triển cho việc học cây quyết định [10] là các biến thể trên một thuật toán cốt lõi. Thuật toán đã sử dụng phương pháp tìm kiếm tham lam và từ trên xuống (top-down, greedy) thông qua không gian có thể của cây quyết định. Mục đích của luân văn làm thế nào chọn thuộc tính có đặt tính tốt nhất cho mô hình khai phá dữ liệu. Do đó tôi chỉ trình bài một cách tổng quan 3 thuật toán điển hình sau: ID3 (Quinlan 1986)[12], C4.5 (Quinlan 1993) và SPRINT(do 3 tác giả John Shafer, Rakesh Agrawal, Manish Mehta đề xuất năm 1996)[8].

3.2.1 Thuật toán ID3 3.2.1.1 Lịch sử phát triển 3.2.1.1 Lịch sử phát triển

Thuật toán ID3 là một trong những thuật toán trong khai phá dữ liệu. Là một thuật toán học đơn giản nhưng tỏ ra thành công trong nhiều lĩnh vực. ID3 là một thuật toán hay vì cách biểu diễn tri thức học được của nó, tiếp cận của nó trong việc quản lý tính phức tạp, heuristic của nó dùng cho việc chọn lựa các khái niệm ứng viên, và tiềm năng của nó đối với việc xử lý dữ liệu nhiễu. ID3 biểu diễn các khái niệm ở dạng các cây quyết định. Biểu diễn này cho phép chúng ta xác định phân loại của một đối tượng bằng cách kiểm tra các giá trị của nó trên một số thuộc tính nào đó.

Thuật toán ID3 được phát biểu bởi Quinlan (trường đại học Syney, Australia) và được công bố vào cuối thập niên 70 của thế kỷ 20. Sau đó, thuật toán ID3 được giới thiệu và trình bày trong mục Induction on decision trees, machine learning năm 1986. ID3 được xem như là một cải tiến của thuật toán CLS(CLS được Hovland và Hint giới thiệu trong Concept learning System vào những năm 50 của thế kỷ 20) với khả năng lựa chọn thuộc tính tốt nhất để (adsbygoogle = window.adsbygoogle || []).push({});

tiếp tục triển khai cây tại mỗi bước. ID3 xây dựng cây quyết định từ trên- xuống (top -down) [6].

3.2.1.2 Mã giã giải thuật ID3

Thuật toán được mô tả đơn giản như sau:

Function induce_tree (tập_ví dụ, tập thuộc tính) BEGIN

If mọi ví dụ trong tập_ví_vụ đều nằm cùng một lớp then

Return một nút lá được gán nhãn bởi lớp đó

Else if tập thuộc tính là rỗng then

Return nút lá được gán nhãn bởi tuyển của tất cả các lớp trong

tập_ví_dụ

Else BEGIN

Chọn một thuộc tính P, lấy nó làm gốc cho cây hiện tại; Xóa P ra khỏi tap_thuộc_tính;

Với mỗi giá trị V của P

Begin

Tạo một nhãn của cây gán nhãn V;

Đặt vào phan_vùngV các ví dụ trong tập_ví_dụ có giá trị V tại thuộc tính P;

Gọi induce_tree (phân_vùngV, tập thuộc tính), gắn kết quả vào nhánh V

End END END

3.2.1.4 Lựa chọn thuộc tính kiểm tra

Một vấn đề phát sinh là chúng ta xuất phát từ Root thì thuộc tính nào cần được xem xét để thêm các node tiếp theo? Để xem xét điều này người ta đưa ra hai thông số quan trọng sau [10]:

Entropy : Một đánh giá thường được sử dụng trong lĩnh vực lí thuyết thông

tin(Information Theory) nhằm đánh giá mức độ phức tạp ((im)purity/ inhomogeneity) của một tập S. Entropy của một tập S được tính theo công thức:

Entropy(S)= - P+ log2p+ - P- log2P - (3.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ó c phân lớp thì ta có công thức sau:

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 trong 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

Ý nghĩa của entropy trong lĩnh vực lí thuyết thông tin: Entropy của tập S chỉ ra số lượng bits cần thiết để mã hóa lớp của một phần tử được lấy ra ngẫu nhiên từ tập S.

b.Information Gain (viết tắt là Gain): (adsbygoogle = window.adsbygoogle || []).push({});

Information Gain của một thuộc tính đối với một tập các ví dụ là đại lượng dùng để đo mức độ giảm mong đợi của Entropy bằng việc phân chia (partitioning) các ví dụ theo các giá trị của thuộc tính đó.

Cho tập dữ liệu S gồm có n thuộc tính Ai (i=1, 2…n) 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:

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 công thức trên, thành phần thứ 2 thể hiện giá trị Entropy sau khi tập S được phân chia bởi các giá trị của thuộc tính A sau khi tập S được phân chia bởi các giá trị của thuộc tính A.

Ý nghĩa của Gain(S, A): Số lượng bits giảm được (reduced) đối với việc mã hóa lớp của một phần tử được lấy ra ngẫu nhiên từ tập S, khi biết giá trị của thuộc tính A.

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.

Ví dụ minh họa: [10]

Xét ví dụ quyết định chơi hay không chơi Tennis. Các thuộc tính được mô tả như bảng 3.1

Day Outlook Temperature Humidity Wind Play Tennis

D1 Sunny Hot High Weak No

D2 Sunny Hot High Strong No

D3 Overcast Hot High Weak Yes

D4 Rain Mid High Weak Yes

D5 Rain Cool Normal Weak Yes

D6 Rain Cool Normal Strong No

D7 Overcast Cool Normal Strong Yes

D8 Sunny Mid High Weak No

D9 Sunny Cool Normal Weak Yes

D10 Rain Mid Normal Weak Yes

D11 Sunny Mid Normal Strong Yes

D12 Overcast Mid High Strong Yes

D13 Overcast Hot Normal Weak Yes

D14 Rain Mid High Strong No

Chúng ta sẽ thử tính giá trị Information Gain của thuộc tính Wind đối với tập học S – Gain(S, Wind):

Thuộc tính Wind có 2 giá trị có thể: Weak và Strong; S = {9 ví dụ lớp Yes và 5 ví dụ lớp No}; Sweak = {6 ví dụ lớp Yes và 2 ví dụ lớp No có giá trị Wind=Weak}; Sstrong= {3 ví dụ lớp Yes và 3 ví dụ lớp No có giá trị Wind=Strong}

Tính : Entropy(S)=Entropy([9+,5-])= -9/14log29/14-5/14log25/14=0.94 (adsbygoogle = window.adsbygoogle || []).push({});

Gain(S,A)=Entropy(S) -

= Entropy(S)- (8/14).Entropy(Sweak) – (6/14).Entropy(Sstrong) = 0.94-(8/14).(0.81)-(6/14).(1)=0.048

Tại nút gốc, thuộc tính nào trong số {Outlook, Temperature, Humidity, Wind} nên được chọn là thuộc tính kiểm tra?

• Gain(S, Outlook) = ... = 0.246; Có giá trị Information Gain cao nhất • Gain(S, Temperature) = ... = 0.029

• Gain(S Humidity) = = 0.151 Gains(S, Humidity) = ... = 0.151 • Gain(S, Wind) = ... = 0.048

Vì vậy, Outlook được chọn là thuộc tính kiểm tra cho nút gốc như hình 3.3:

Kế đến, tại nút Node1, thuộc tính nào trong số {Temperature, Overcast, Sunny, Humidity, Wind} nên được chọn là thuộc tính kiểm tra?

Lưu ý! Thuộc tính Outlook bị loại ra bởi vì nó đã được sử dụng bởi cha của nút Node1 (là nút gốc)

• Gain(S Sunny, Temperature) =...= 0.57 • Gain(S Sunny, Humidity) = ... = 0.97 • Gain(S Sunny, Wind) = ... = 0.019

Vì vậy, Humidity được chọn là thuộc tính kiểm tra cho nút Node1 như hình 3.4:

.

Hình 3.3 Tạo Node gốc Outlook

3.2.1.5 Một vài ưu khuyết điểm của thuật toán ID3

Ưu điểm của thuật toán ID3:

- Sử dụng thuật tìm kiếm leo đồi (hill - climbing) dựa trên giá trị Gain để tìm kiếm các thuộc tính trong toàn bộ Cây quyết định.

- Đầu ra (Output) chỉ là một giả thuyết đơn (1 kết quả duy nhất). - Sử dụng dữ liệu huấn luyện ở từng bước, trái ngược với những thuật

giải phát triển mở rộng cây quyết định (có thể hạn chế được kích thước Cây không quá lớn).

- Sử dụng các thuộc tính tĩnh: hạn chế tối đa lỗi cho những bản ghi dữ liệu riêng lẻ, có thể ảnh hưởng tới toàn bộ dự án.

- Kiểm soát được dữ liệu rác, dữ liệu tạp bên ngoài bằng cách giảm bớt yêu cầu tiêu chuẩn cho việc chấp nhận những dữ liệu chưa hoàn chỉnh.

Những khuyết điểm của thuật toán ID3 :

- Không Xử lý các thuộc tính có kiểu giá trị liên tục (kiểu số thực).

Một phần của tài liệu Khai phá dữ liệu có canh tác dữ liệu và ứng dụng trong khai phá dữ liệu y khoa luận văn thạc sĩ (Trang 48)