Thuật toán SLIQ có thể phân lớp rất hiệu quả đối với các tập dữ liệu lớn vàkhông phụ thuộc vào số lượng lớp, số lượng thuộc tính và số lượng mẫu trongtập dữ liệu... Tuy nhiên thuật toán
Trang 1Đại Học Công Nghệ Thông Tin Đại Học Quốc Gia Thành Phố Hồ Chí Minh
TP HCM 5/2012
Đề tàiXây dựng cây quyết định dùng thuật toán sinh cây ID3
Trang 2Lời cảm ơn
Lời đầu tiên em xin chân thành cảm ơn thầy Hoàng Kiếm đã truyền đạt cho em những bài học thật bổ ích với những câu truyện đầy tính sáng tạo và lý thú.
Cảm ơn nhà trường đã tạo điều kiện cho em cùng các bạn trong lớp có thể học tập
và tiếp thu những kiến thức mới.
Em cũng chân thành cảm ơn các bạn trong lớp đã chia sẻ cho nhau những tài liệu
và hiểu biết về môn học để cùng hoàn thành tốt môn học này.
Trong thời gian vừa qua mặc dù em đã cố gắng rất nhiều để hoàn thành tốt đề tài của mình, song chắc chắn kết quả không tránh khỏi những thiếu sót Em kính mong được
sự cảm thông và tận tình chỉ bảo của thầy.
TP.Hồ Chí Minh Tháng 5/2012
Học viên thực hiện Trương Lê Hưng Lớp Cao Học khóa 6
Trang 3Nhận xét
-Lời mở đầu
Trang 4Trong nhiều năm qua, cùng với sự phát triển không ngừng của công nghệthông tin và ứng dụng trong nhiều lĩnh vực của đời sống và xã hội, thì lượng dữliệu được các cơ quan thu thập và lưu trữ ngày càng nhiều lên Tuy nhiên phần lớn
dữ liệu thông tin đó không được sử dụng hoặc không biết cách khai thác sử dụng Ngày nay công nghệ đã phát triển một khuynh hướng kỹ thuật mới đó là Kỹthuật phát hiện tri thức và khai phá dữ liệu (KDD - Knowledge Discovery andData Mining) Các tri thức mà khai thác dữ liệu mang lại có thể hỗ trợ trong nhiềuhoạt động xã hội trong việc ra quyết định và trả lời những câu hỏi trước đây tốnnhiều thời gian để xử lý
Cây quyết định là một công cụ phổ biến và mạnh mẽ được sử dụng trong bàitoán phân loại Ưu điểm lớn của cây quyết định là thể hiện được các luật Các luậtnày dễ dàng được diễn đạt để con người có thể hiểu được chúng, hiểu được kếtquả của quá trình khai thác dữ liệu
Trong bài thu hoạch này em xin được áp dụng thuật toán ID3 để xây dưng câyquyết định
Nội dung bài thu hoạch bao gồm :
Phần 1 : Cây quyết định
Phần 2 : Xây dựng cây quyết định bằng thuật toán ID3
Phần 3 : Xây dựng chương trình Demo
Phần 4 : Tổng kết
Trang 5Mục lục
Phần I Cây quyết định 6
1 Giới thiệu 6
2 Các kiểu cây quyết định 7
3 Các thuật toán cây quyết định 7
4 Ưu điểm của cây quyết định 10
5 Xây dựng một cây quyết định 11
6 Rút ra các luật từ cây quyết định 11
Phần II Xây dựng cây quyết định bằng thuật toán ID3 13
1 Giới thiệu 13
2 Entropy 16
3 Information Gain 18
4 Giải thuật ID3 20
5 Ví dụ sử dụng giải thuật ID3 21
6 Đánh giá hiệu suất cây quyết định 26
7 Các vấn đề trong ID3 27
8 Khi nào sử dụng ID3 27
Phần III Xây dựng chương trình Demo 29
1 Yêu cầu của chương trình 29
2 Quá trình thực hiện 30
3 Kết quả 31
Phần IV Tổng kết 32
1 Đánh giá 32
2 Hướng phát triển 32
Tài liệu tham khảo 33
Trang 6Phần I Cây quyết định
1 Giới thiệu
Cây quyết định (decision tree) là một phương pháp rất mạnh và phổ biến
cho cả hai nhiệm vụ của khai phá dữ liệu là phân loại và dự báo Mặt khác, câyquyết định còn có thể chuyển sang dạng biểu diễn tương đương dưới dạng trithức là các luật If-Then
Trong lĩnh vực học máy (machine learning), cây quyết định là một kiểu mô hình dự báo (predictive model), nghĩa là một ánh xạ từ các quan sát về một sự
vật, hiện tượng tới các kết luận về giá trị mục tiêu của sự vật, hiện tượng
Cây quyết định có cấu trúc biễu diễn dưới dạng cây Trong đó, mỗi nút
trong (internal node) biễu diễn một thuộc tính, nhánh (branch) biễu diễn giá trị
có thể có của thuộc tính, mỗi nút lá (leaf node) biểu diễn các lớp quyết định và đỉnh trên cùng của cây gọi là gốc (root) Cây quyết định có thể được dùng để
phân lớp bằng cách xuất phát từ gốc của cây và di chuyển theo các nhánh chođến khi gặp nút lá Trên cơ sở phân lớp này chúng ta có thể chuyển đổi về cácluật quyết định
Ví dụ: cây quyết định về việc chơi tennis
Trang 7Hình 1.1: Cây quyết định về việc chơi tennis
2 Các kiểu cây quyết định
Cây quyết định còn có hai tên khác:
Cây hồi quy (Regression tree) ước lượng các hàm giá có giá trị là số thực
thay vì được sử dụng cho các nhiệm vụ phân loại (ví dụ: ước tính giá một ngôinhà hoặc khoảng thời gian một bệnh nhân nằm viện)
Cây phân loại (Classification tree), nếu kết quả việc dự đoán là một biến
phân loại như: giới tính (nam hay nữ), kết quả của một trận đấu (thắng haythua)
3 Các thuật toán cây quyết định
Một vài thuật toán xây dựng cây quyết định như:
a Thuật toán 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
Trang 8b Thuật toán ID3
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 CLS với
khả năng lựa chọn thuộc tính tốt nhất để 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)
c Thuật toán 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 chophép xử lý trên tập dữ liệu có các thuộc tính số (numeric atributes) và và làmviệc được với tập dữ liệu bị thiếu và bị nhiễu Nó thực hiện phân lớp tập mẫu
dữ liệu theo chiến lược ưu tiên theo chiều sâu (Depth - First) Thuật toán xét tất
cả các phép thử có thể để phân chia tập dữ liệu đã cho và chọn ra một phép thử
có giá trị GainRatio tốt nhất GainRatio là một đại lượng để đánh giá độ hiệuquả của thuộc tính dùng để thực hiện phép tách trong thuật toán để phát triểncây quyết định
d Thuật toán SLIQ
Thuật toán SLIQ (Supervised Learning In Quest) được gọi là thuật toán
phân lớp leo thang nhanh Thuật toán này có thể áp dụng cho cả hai kiểu thuộcliên tục và thuộc tính rời rạc
Thuật toán này có sử dụng kỹ thuật tiền xử lý phân loại (Pre sorting) trước
khi xây dựng cây, do đó giải quyết được vấn đề bộ nhớ cho thuật toán ID3.Thuật toán SLIQ có sử dụng giải thuật cắt tỉa cây hữu hiệu
Thuật toán SLIQ có thể phân lớp rất hiệu quả đối với các tập dữ liệu lớn vàkhông phụ thuộc vào số lượng lớp, số lượng thuộc tính và số lượng mẫu trongtập dữ liệu
Trang 9e Đánh giá chung 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 đều có những điểm mạnh và điểmyếu riêng của nó
- Thuật toán CLS đây là một trong những thuật toán ra đời sớm nhất Nóchỉ áp dụng cho các CSDL có các thuộc tính nhỏ, giá trị các thuộc tính dạngphân loại hay 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ả.Thuật toán có thể chocác kết quả khác nhau với cùng một tập dữ liệu đầu vào Bởi vì, thuật toán nàychưa có tiêu chí để lựa chọn thuộc tính trong quá trình xây dựng cây 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 được xem là phiên bản cải tiến của CLS) Thuật toán
này làm việc rất có hiệu quả, nó cho kết quả tối ưu hơn thuật toán CLS Khi ápdụ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ì chocùng một kết quả Bởi vì, thuộc tính ứng viên được lựa chọn ở mỗi bước trongquá 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ũngchư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ínhcòn bị hạn chế và giải quyết hạn chế với vấn đề dữ liệu bị thiếu hoặc bị nhiễu
- Thuật toán C4.5: Để tiếp tục khắc phục những nhược điểm của thuật toánID3, Quinlan đã đưa ra thuật toán C4.5(C4.5 là sự cải tiến cho thuật toán ID3
và cọi là phiên bản sau của ID3) Trong thuật toán này đã giải quyết được vấn
đề làm việc với thuộc tính số(liên tục), thuộc tính có nhiều giá trị, và vấn đề dữliệu bị thiếu hoặc bị nhiễu Trong C4.5 thực hiện việc phân ngưỡng với thuộctính số bằng phép tách nhị phân đưa vào đại lượng GainRatio thay thế cho đạilượng Gain của ID3 Để giải quyết được vấn đề thuộc tính có nhiều giá trị.Ngoài ra C4.5 còn có bước cắt tỉa nhánh không phù hợp Tuy nhiên yếu điểm
Trang 10của thuật toán này là làm việc không hiệu quả với những CSDL lơn vì chưagiải quyết được vấn đề bộ nhớ.
- Thuật toán SLIQ phân lớp rất có hiệu quả đối với các tập dữ liệu lớn, nó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ảnghi trong tập dữ liệu SLIQ đã cải thiện được vấn đề về bộ nhớ vì có 3 pha tiền
xử lý phân loại, tại một thời điểm chỉ có 1 danh sách lớp thường trú trong bộnhớ 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 Nó
là thuật toán phân lớp nhanh, chính xác, chi phí thấp Tuy nhiên việc cài đặtphức tạp, áp dụng cho các cơ sở dữ liệu lớn
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áchthức trong khai phá dữ liệu bằng cây quyết định Như vấn đề dữ liệu bị thiếugiá 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à về số lượng các bản ghi, vấn đề về bộ nhớ…Nhữngvấ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ánxâ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
4 Ưu điểm của cây quyết định
So với các phương pháp khai phá dữ liệu khác, cây quyết định có một số ưuđiểm sau:
- Cây quyết định tương đối dể hiểu
- Đòi hỏi mức tiền xử lý dữ liệu đơn giản Các kỹ thuật khác thường đòi hỏichuẩn hóa dữ liệu, cần tạo các biến phụ (dummy variable) và loại bỏ các giá trịrỗng
- Có thể xử lý với cả các dữ liệu rời rạc và liên tục
- Cây quyết định là một mô hình hộp trắng Nếu có thể quan sát một tìnhhuống cho trước trong một mô hình, thì có thể dễ dàng giải thích điều kiện đóbằng logic Boolean Mạng nơ-ron là một ví dụ về mô hình hộp đen, do lời giảithích cho kết quả quá phức tạp để có thể hiểu được
Trang 11- 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ểmtra thống kê.
- Cây quyết định có thể xử lý tốt một lượng dữ liệu lớn trong thời gianngắn Có thể dùng máy tính cá nhân để phân tích các lượng dữ liệu lớn trongmột thời gian đủ ngắn để cho phép các nhà chiến lược đưa ra quyết định dựatrên phân tích của cây quyết định
5 Xây dựng một 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, …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:
gốc cho đến mỗi nút lá, thực hiện chia một cách đệ quy tập mẫu dữ liệu huấnluyện cho đến khi các mẫu ở mối nút lá thuộc cùng một lớp
hóa và khái quát hóa từ đó làm tăng độ chính xác của cây quyết định bằng cáchloại bỏ sự phụ thuộc vào mức độ lỗi (noise) của dữ liệu đào tạo mang tính chấtthống kê, hay những sự biến đổi mà có thể là đặc tính riêng biệt của dữ liệuđào tạo Giai đoạn này chỉ truy cập dữ liệu trên cây quyết định đã được pháttriển trong giai đoạn trước và quá trình thực nghiệm cho thấy giai đoạn nàykhông tốn nhiều tài nguyên tính toán
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êntổng số mẫu đưa vào
6 Rút ra các luật từ cây quyết định
Có thể chuyển đổi qua lại giữa mô hình cây quyết định và mô hình dạngluật (IF …THEN…) Hai mô hình này là tương đương nhau
Ví dụ từ cây 1.1 ta có thể rút ra được các luật sau
IF (Outlook = SUNNY) AND (HUMINITY <= 70) THEN PLAY = YES
Trang 12IF (Outlook = SUNNY) AND (HUMINITY > 70) THEN PLAY = NO
IF (Outlook = OVERCAST) THEN PLAY = YES
IF (Outlook = RAIN) AND (WINDY = TRUE) THEN PLAY = NO
IF (Outlook = RAIN) AND (WINDY = FALSE) THEN PLAY = YES
Trang 13Phần II Xây dựng cây quyết định bằng thuật toán ID3.
1 Giới thiệu.
Giải thuật quy nạp cây ID3 (gọi tắt là ID3) là một giải thuật học đơn giảnnhưng tỏ ra thành công trong nhiều lĩnh vực ID3 là một giải thuật hay vì cáchbiể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ứctạ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ềmnă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 (concept) ở dạng các cây quyết định (decision
tree) 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 đó
Như vậy, nhiệm vụ của giải thuật ID3 là học cây quyết định từ một tập các
ví dụ rèn luyện (training example) hay còn gọi là dữ liệu rèn luyện (training
data)
tình huống, hay một đối tượng nào đó, và một giá trị phân loại của nó
liệu rèn luyện, và hy vọng là phân loại đúng cho cả các ví dụ chưa gặp trong tương lai
Ví dụ, chúng ta hãy xét bài toán phân loại xem ta có đi chơi tennis ứng vớithời tiết nào đó không Giải thuật ID3 sẽ học cây quyết định từ tập hợp các ví
dụ sau:
Trang 14Tập dữ liệu này bao gồm 14 ví dụ tương ứng với 14 ngày Mỗi ví dụ biểudiễn cho tình trạng thời tiết của ngày hôm đó gồm các thuộc tính quang
cảnh(Outlook), nhiệt độ(Temperature), độ ẩm(Humidity) và gió(Wind) và đều
có một thuộc tính phân loại chơi Tennis(Playtennis) có hoặc không ‘No’ nghĩa
là không đi chơi tennis ứng với thời tiết ngày hôm đó, ‘Yes’ nghĩa là ngược lại
Giá trị phân loại ở đây chỉ có hai loại (Yes, No), hay còn nói phân loại của tập
ví dụ của khái niệm này thành hai lớp (classes) Thuộc tính ‘Playtennis’ còn được gọi là thuộc tính đích (target attribute)
Mỗi thuộc tính đều có một tập các giá trị hữu hạn Thuộc tính Outlook có
ba giá trị (Rain, Overcast, Sunny), nhiệt độ có ba giá trị (nóng, mát, ấm áp), độ
ẩm có hai giá trị (cao, TB) và gió có hai giá trị (mạnh, nhẹ) Các giá trị nàychính là ký hiệu (symbol) dùng để biểu diễn bài toán
Từ tập dữ liệu rèn luyện này, giải thuật ID3 sẽ học một cây quyết định cókhả năng phân loại đúng đắn các ví dụ trong tập này, đồng thời hy vọng trongtương lai, nó cũng sẽ phân loại đúng các ví dụ không nằm trong tập này Mộtcây quyết định ví dụ mà giải thuật ID3 có thể quy nạp được là:
Trang 15Các nút trong cây quyết định biểu diễn cho một sự kiểm tra trên một thuộctính nào đó, mỗi giá trị có thể có của thuộc tính đó tương ứng với một nhánhcủa cây Các nút lá thể hiện sự phân loại của các ví dụ thuộc nhánh đó, haychính là giá trị của thuộc tính phân loại
Sau khi giải thuật đã quy nạp được cây quyết định, thì cây này sẽ được sử
dụng để phân loại tất cả các ví dụ hay thể hiện (instance) trong tương lai Và
cây quyết định sẽ không thay đổi cho đến khi ta cho thực hiện lại giải thuật ID3trên một tập dữ liệu rèn luyện khác
Ứng với một tập dữ liệu rèn luyện sẽ có nhiều cây quyết định có thể phânloại đúng tất cả các ví dụ trong tập dữ liệu rèn luyện Kích cỡ của các câyquyết định khác nhau tùy thuộc vào thứ tự của các kiểm tra trên thuộc tính Vậy làm sao để học được cây quyết định có thể phân loại đúng tất cả các ví
dụ trong tập rèn luyện? Một cách tiếp cận đơn giản là học thuộc lòng tất cả các
ví dụ bằng cách xây dựng một cây mà có một lá cho mỗi ví dụ Với cách tiếpcận này thì có thể cây quyết định sẽ không phân loại đúng cho các ví dụ chưa
gặp trong tương lai Vì phương pháp này cũng giống như hình thức ‘học vẹt’,
Trang 16mà cây không hề học được một khái quát nào của khái niệm cần học Vậy, tanên học một cây quyết định như thế nào là tốt?
Occam’s razor và một số lập luận khác đều cho rằng ‘giả thuyết có khả
năng nhất là giả thuyết đơn giản nhất thống nhất với tất cả các quan sát’, ta
nên luôn luôn chấp nhận những câu trả lời đơn giản nhất đáp ứng một cáchđúng đắn dữ liệu của chúng ta Trong trường hợp này là các giải thuật học cốgắng tạo ra cây quyết định nhỏ nhất phân loại một cách đúng đắn tất cả các ví
dụ đã cho
2 Entropy.
Khái niệm entropy của một tập S được định nghĩa trong Lý thuyết thông tin
là số lượng mong đợi các bít cần thiết để mã hóa thông tin về lớp của mộtthành viên rút ra một cách ngẫu nhiên từ tập S Trong trường hợp tối ưu, mã có
độ dài ngắn nhất Theo lý thuyết thông tin, mã có độ dài tối ưu là mã gán –log2p bits cho thông điệp có xác suất là p
Trong trường hợp S là tập ví dụ, thì thành viên của S là một ví dụ, mỗi ví
dụ thuộc một lớp hay có một giá trị phân loại
Entropy có giá trị nằm trong khoảng [0 1],