Chính vì vậy mà hiện nay các phương pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng không đáp ứng được nhu cầu thực tế, từ những hiện trạng cũng như thách thức này đã làm
Trang 1ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CNTT VÀ TRUYỀN THÔNG
Trang 21
MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iii
DANH MỤC BẢNG BIỂU iv
DANH MỤC HÌNH ẢNH v
LỜI NÓI ĐẦU 3
Chương 1 KHAI PHÁ DỮ LIỆU 5
1.1 Khám phá tri thức và khai phá dữ liệu 5
1.2 Tại sao phải khai phá dữ liệu 5
1.3 Quá trình khám phá tri thức 6
1.4 Trình tự thực hiện trong quá trình khai phá dữ liệu 8
1.5 Chức năng của Khai phá dữ liệu 10
1.6 Các kỹ thuật khai phá dữ liệu 11
1.7 Các dạng dữ liệu có thể khai phá được 13
1.8 Ứng dụng của Khai phá dữ liệu 13
1.9 Tổng kết 14
Chương 2 KHAI PHÁ DỮ LIỆU BẰNG CÂY QUYẾT ĐỊNH 15
2.1 Cây quyết định 15
2.1.1 Cây quy ết định là gì? 15
2.1.2 M ột số vấn đề trong khai phá dữ liệu bằng cây quyết định 16
2.1.3 Ưu nhược điểm của cây quyết định trong khai phá dữ liệu 18
2.1.4 Xây d ựng cây quyết định 20
2.2 Một số thuật toán khai phá dữ liệu bằng cây quyết định 22
2.2.1 Thu ật toán CLS 22
2.2.2 Thu ật toán ID3 26
i
Trang 32
2.2.3 Thu ật toán C4.5 37
2.2.4 Thu ật toán SLIQ 41
2.3 Kỹ thuật cắt tỉa cây quyết định 50
2.4 Tổng kết 61
Chương 3 CÂY QUYẾT ĐỊNH VÀ ỨNG DỤNG TRONG HỆ HỖ TRỢ QUYẾT ĐỊNH 64
3.1 Tổng quan về công tác thi đua khen thưởng trong ngành giáo dục 65
3.1.1 Các tiêu chu ẩn và danh hiệu thi đua trong ngành giáo dục 66
3.1.2 Quy trình đề nghị xét duyệt và ra quyết định khen thưởng 67
3.2 Phần mềm hỗ trợ ra quyết định khen thưởng 70
3.2.1 C ấu trúc kho dữ liệu 70
3.2.2 K ết quả cài đặt phần mềm 72
3.2 3 Đánh giá kết quả đạt được của chương trình 75
3.3 Kết luận và hướng phát triển 77
TÀI LIỆU THAM KHẢO 79
ii
Trang 43
LỜI NÓI ĐẦU
Song song với sự phát triển không ngừng của ngành Công nghệ thông tin nói chung và các lĩnh vực ngành công nghệ phần mềm nói riêng, hệ thống các kho dữ liệu phục vụ trong công tác hỗ trợ ra quyết định và việc phân loại các thông tin cũng như nhu cầu lưu trữ thông tin ngày càng cần thiết Bên cạnh đó việc tin học hóa trong các công tác quản lý cũng như nhiều lĩnh vực, hoạt động khác đã tạo ra cho nhân loại một thư viện dữ liệu khổng lồ, sẵn sàng phục vụ bất cứ ai quan tâm Đối với chúng ta nó là một trong những nguồn tài nguyên thông tin vô cùng giá trị, việc tận dụng kho dữ liệu này để làm cơ sở cho việc hỗ trợ ra quyết định trong công tác quản lý mang lại hiệu quả đáng kể Nhưng vấn đề là chúng ta cần phải phân loại nguồn tài nguyên đó như thế nào để sử dụng có hiệu quả nhất trong từng lĩnh vực cụ thể Để tìm được đúng thông tin cần tìm trong nguồn tài nguyên khổng
lồ này làm cơ sở hỗ trợ ra quyết định trong mọi hoạt động là một thách thức lớn
Chính vì vậy mà hiện nay các phương pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng không đáp ứng được nhu cầu thực tế, từ những hiện trạng cũng như thách thức này đã làm phát triển một khuynh hướng kỹ thuật mới nhằm giải quyết bài toán này, đó là Kỹ thuật phát hiện tri thức và khai phá dữ liệu (Knowledge Discovery and Data Mining)
Kỹ thuật phát hiện tri thức và khai phá dữ liệu đã và đang được nghiên cứu, ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau ở các nước trên thế giới, tại Việt Nam kỹ thuật này cũng đã và đang được nghiên cứu và dần đưa vào ứng dụng Bước quan trọng nhất của quá trình này là khai phá dữ liệu (Data Mining), giúp người sử dụng thu được những tri thức hữu ích từ những cơ sở dữ liệu (CSDL) hoặc các nguồn dữ liệu khổng lồ khác để từ đó làm cơ sở ra quyết định xử lý đối với dữ liệu thu được Rất nhiều tổ chức trên thế giới đã ứng dụng kĩ thuật khai phá
dữ liệu vào công tác quản lý đã thu được những lợi ích to lớn Để làm được điều
đó, sự phát triển của các mô hình toán học và các giải thuật hiệu quả chính là chìa
Trang 54 khoá quan trọng Vì vậy, trong luận văn này tác giả sẽ đề cập tới một số kỹ thuật Khai phá dữ liệu bằng cây quyết định và ứng dụng nó trong hệ hỗ trợ quyết định
Luận văn gồm 3 chương với nội dung sau:
Chương 1: Trình bày tổng quan về khai phá dữ liệu, các khái niệm cơ bản,
các bước thực hiện, các chức năng, kỹ thuật khai phá dữ liệu, và ứng dụng của khai
phá dữ liệu trong các lĩnh vực
Chương 2: Trình bày các khái niệm về cây quyết định, các kiểu cây quyết định và các kỹ thuật khai phá dữ liệu bằng cây quyết định, kỹ thuật cắt tỉa cây quyết định
Chương 3: Trình bày bài toán ra quyết định khen thưởng trong ngành giáo dục, các quy trình xét duyệt và ra quyết định khen thưởng, xác định yêu cầu bài toán, lựa chọn thuật toán để cài đặt xây dựng công cụ hỗ trợ ra quyết định khen thưởng trong công tác quản lý thi đua khen thưởng của Bộ Giáo dục và Đào tạo
Trang 65
Chương 1 KHAI PHÁ DỮ LIỆU
1.1 Khám phá tri thức và khai phá dữ liệu
Khám phá tri thức (Knowledge Discovery) trong các cơ sở dữ liệu, kho dữ
liệu là một quy trình gồm nhiều công đoạn để nhận biết các mẫu hoặc các mô hình trong dữ liệu với các tính năng: hợp thức, mới, khả ích, và có thể hiểu được [18] Khai phá dữ liệu là việc sử dụng dữ liệu lịch sử để khám phá những qui tắc và cải thiện những quyết định trong tương lai
Khai phá dữ liệu như là một quá trình phân tích được thiết kế thăm dò một lượng cực lớn các dữ liệu nhằm phát hiện ra các mẫu thích hợp và (hoặc) các mối quan hệ mang tính hệ thống giữa các biến và sau đó sẽ hợp thức hoá các kết quả tìm được bằng cách áp dụng các mẫu đã phát hiện được cho tập con mới của dữ liệu Mục đích của khai phá dữ liệu là:
o Rút trích thông tin hữu ích, chưa biết, các mẫu hoặc các mô hình tiềm
ẩn trong khối dữ liệu lớn dưới dạng các quy luật, ràng buột, quy tắc trong cơ sở dữ liệu
o Phân tích dữ liệu bán tự động
o Giải thích dữ liệu trên các tập dữ liệu lớn
Khai phá dữ liệu là một bước trong quy trình khám phá tri thức để hỗ trợ ra quyết định, dự báo và khái quát dữ liệu
1.2 Tại sao phải khai phá dữ liệu
Ước tính cứ mỗi năm lượng thông tin trên thế giới lại tăng lên khoảng 2 lần Chính vì vậy, hiện nay dữ liệu mà con người thu thập và lưu trữ trong các kho dữ liệu là vô cùng lớn, thậm chí lớn đến mức vượt quá khả năng kiểm soát,… Cũng bởi lý do này các nhà khoa học đã đề cập đến việc tổ chức lại dữ liệu sao cho hiệu
Trang 76 quả, đáp ứng được yêu cầu chất lượng ngày càng cao nhằm hỗ trợ những nhà quản
lý ra quyết định trong các tổ chức quản lý tài chính, thương mại, khoa học,
Với lượng dữ liệu tăng nhanh hàng năm, rõ ràng các phương pháp thủ công truyền thống áp dụng để phân tích dữ liệu sẽ không hiệu quả, tốn kém và dễ dẫn đến những sai lệch Do đó, để có thể sử dụng hiệu quả hơn nữa các cơ sở dữ liệu lớn thì nhất thiết cần phải có những kỹ thuật mới, và kỹ thuật khai phá dữ liệu đã được các nhà khoa học đề cập tới
Khai phá dữ liệu là một lĩnh vực khoa học nhằm tự động hóa khai thác những thông tin, tri thức hữu ích, tiềm ẩn trong các CSDL cho các tổ chức, doanh nghiệp, Các kết quả nghiên cứu cùng với những ứng dụng thành công trong khai phá dữ liệu, khám phá tri thức cho thấy khai phá dữ liệu là một lĩnh vực khoa học tiềm năng, mang lại nhiều lợi ích, đồng thời có ưu thế hơn hẳn so với các công cụ phân tích dữ liệu truyền thống Hiện nay, khai phá dữ liệu được ứng dụng rộng rãi trong các lĩnh vực như: Phân tích dữ liệu hỗ trợ ra quyết định, điều trị y học, tin-sinh học, thương mại, tài chính, bảo hiểm, text mining, web mining,
1.3 Quá trình khám phá tri thức
Quá trình khám phá tri thức được tiến hành qua 5 bước sau:
Trang 87
- B ước 1: Hình thành và định nghĩa bài toán
Đây là bước tìm hiểu lĩnh vực ứng dụng và hình thành bài toán, bước này sẽ quyết định cho việc rút ra những tri thức hữu ích, đồng thời lựa chọn các phương pháp khai phá dữ liệu thích hợp với mục đích của ứng dụng và bản chất của dữ liệu
- B ước 2: Thu thập và tiền xử lý dữ liệu
Trong bước này dữ liệu được thu thập ở dạng thô (nguồn dữ liệu thu thập có thể là từ các kho dữ liệu hay nguồn thông tin khác từ internet) Trong giai đoạn này
dữ liệu cũng được tiền xử lý để biến đổi và cải thiện chất lượng dữ liệu cho phù hợp với phương pháp khai phá dữ liệu được chọn lựa trong bước trên
Bước này thường chiếm nhiều thời gian nhất trong quá trình khám phá tri thức
Các giải thuật tiền xử lý dữ liệu bao gồm:
1 Xử lý dữ liệu bị mất/thiếu: các dạng dữ liệu bị thiếu sẽ được thay thế bởi các giá trị thích hợp
2 Khử sự trùng lặp: các đối tượng dữ liệu trùng lặp sẽ bị loại bỏ đi
3 Giảm nhiễu: nhiễu và các đối tượng tách rời khỏi phân bố chung sẽ bị loại
đi khỏi dữ liệu
4 Chuẩn hoá: miền giá trị của dữ liệu sẽ được chuẩn hoá
5 Rời rạc hoá: các dạng dữ liệu số sẽ được biến đổi ra các giá trị rời rạc
6 Rút trích và xây dựng đặc trưng mới từ các thuộc tính đã có
7 Giảm chiều: các thuộc tính chứa ít thông tin sẽ được loại bỏ bớt
- B ước 3: Khai phá dữ liệu và rút ra các tri thức
Đây là bước quan trọng nhất trong tiến trình khám phá tri thức Kết quả của bước này là trích ra được các mẫu và (hoặc) các mô hình ẩn dưới các dữ liệu Một
mô hình có thể là một biểu diễn cấu trúc tổng thể một thành phần của hệ thống hay
Trang 98
cả hệ thống trong cơ sở dữ liệu, hay miêu tả cách dữ liệu được nảy sinh Còn một mẫu là một cấu trúc cục bộ có liên quan đến vài biến và vài trường hợp trong cơ sở
dữ liệu
- B ước 4: Phân tích và kiểm định kết quả
Bước thứ tư là hiểu các tri thức đã tìm được, đặc biệt là làm sáng tỏ các mô tả
và dự đoán Trong bước này, kết quả tìm được sẽ được biến đổi sang dạng phù hợp với lĩnh vực ứng dụng và dễ hiểu hơn cho người dùng
- B ước 5: Sử dụng các tri thức phát hiện được
Trong bước này, các tri thức khám phá được sẽ được củng cố, kết hợp lại thành một hệ thống, đồng thời giải quyết các xung đột tiềm năng trong các tri thức
đó Các mô hình rút ra được đưa vào những hệ thống thông tin thực tế dưới dạng các module hỗ trợ việc đưa ra quyết định
Các giai đoạn của quá trình khám phá tri thức có mối quan hệ chặt chẽ với nhau trong bối cảnh chung của hệ thống Các kỹ thuật được sử dụng trong giai đoạn trước có thể ảnh hưởng đến hiệu quả của các giải thuật được sử dụng trong các giai đoạn tiếp theo Các bước của quá trình khám phá tri thức có thể được lặp
đi lặp lại một số lần, kết quả thu được có thể được lấy trung bình trên tất cả các lần thực hiện
1.4 Trình tự thực hiện trong quá trình khai phá dữ liệu
Khai phá dữ liệu là hoạt động trọng tâm của quá trình khám phá tri thức Thuật ngữ khai phá dữ liệu còn được một số nhà khoa học gọi là phát hiện tri thức trong cơ sở dữ liệu (Knowledge discovery in database) (theo Fayyad Smyth và Piatestky-Shapiro 1989) Quá trình này gồm có 6 bước [1]:
Trang 109
Hình 1.2 Quá trình khai phá dữ liệu Quá trình khai phá dữ liệu bắt đầu với kho dữ liệu thô và kết thúc với tri thức được chiết xuất ra Nội dung của quá trình như sau:
- Gom dữ liệu (gatherin)
Tập hợp dữ liệu là bước đầu tiên trong khai phá dữ liệu Bước này lấy dữ liệu
từ trong một cơ sở dữ liệu, một kho dữ liệu, thậm chí dữ liệu từ những nguồn cung ứng web
- Trích lọc dữ liệu (selection)
Ở giai đoạn này dữ liệu được lựa chọn và phân chia theo một số tiêu chuẩn nào đó
- Làm sạch và tiền xử lý dữ liệu (cleansing preprocessing)
Giai đoạn thứ ba này là giai đoạn thường bị bỏ quên, nhưng thực tế nó là một bước rất quan trọng trong quá trình khai phá dữ liệu Một số lỗi thường mắc phải trong khi gom dữ liệu là dữ liệu không đầy đủ hoặc không thống nhất, thiếu chặt chẽ, vô nghĩa (ví dụ như: con người có chiều cao = 4 mét điều này là vô lý), do vậy ở giai đoạn thứ ba này nhằm xử lý các dữ liệu như trên (dữ liệu vô nghĩa, dữ
Trang 1110 liệu không có khả năng kết nối) Những dữ liệu dạng này thường được xem là thông tin dư thừa, không có giá trị Bởi vậy đây là một quá trình rất quan trọng Nếu dữ liệu không được làm sạch - tiền xử lý - chuẩn bị trước thì sẽ tạo ra những kết quả sai lệch nghiêm trọng về sau
- Chuyển đổi dữ liệu (transformation)
Trong giai đoạn này, dữ liệu có thể được tổ chức và sử dụng lại Mục đích của việc chuyển đổi dữ liệu là làm cho dữ liệu phù hợp hơn với mục đích khai phá dữ liệu
- Phát hiện và trích chọn mẫu dữ liệu (pattern extraction and discovery)
Đây là bước tư duy trong khai phá dữ liệu Ở trong giai đoạn này nhiều thuật toán khác nhau đã được sử dụng để trích ra các mẫu từ dữ liệu Thuật toán thường dùng để trích mẫu dữ liệu là thuật toán phân loại dữ liệu, kết hợp dữ liệu, thuật toán mô hình hoá dữ liệu tuần tự
- Đánh giá kết quả mẫu (evaluation of result)
Đây là giai đoạn cuối cùng trong quá trình khai phá dữ liệu, ở giai đoạn này các mẫu dữ liệu được chiết xuất ra bởi phần mềm khai phá dữ liệu Không phải mẫu dữ liệu nào cũng hữu ích, đôi khi nó còn bị sai lệch Vì vậy cần phải đưa ra những tiêu chuẩn đánh giá độ ưu tiên cho các mẫu dữ liệu để rút ra được những tri thức cần thiêt
1.5 Chức năng của Khai phá dữ liệu
Khai phá dữ liệu có hai chức năng chính là mô tả (description) và dự đoán (prediction) trong đó:
- Chức năng khai phá dữ liệu mô tả sẽ mô tả các tính chất hoặc đặc tính chung của dữ liệu trong cơ sở dữ liệu, nghĩa là phân tích và mô tả một tập mẫu nhằm giúp hiểu rõ hơn, sâu hơn về dữ liệu
Trang 1211
- Chức năng khai phá dữ liệu dự đoán sẽ thực hiện việc suy luận dựa trên dữ liệu hiện hành để cho ra các dự báo, nghĩa là phân tích tập dữ liệu huấn luyện và tạo ra một hoặc vài mô hình cho phép dự đoán các mẫu mới chưa biết
1.6 Các kỹ thuật khai phá dữ liệu
Trong thực tế, có nhiều kỹ thuật khác nhau được sử dụng để khai phá dữ liệu nhằm thực hiện hai đích chính là mô tả và dự đoán, trong đó:
- K ỹ thuật khai phá dữ liệu nhằm thực hiện chức năng mô tả: có nhiệm vụ mô
tả các tính chất hoặc các đặc tính chung của dữ liệu trong CSDL hiện có Một số
kỹ thuật khai phá trong nhóm này là: phân cụm dữ liệu (Clustering), tổng hợp (Summarisation), trực quan hoá (Visualization),
- K ỹ thuật khai phá dữ liệu nhằm thực hiện chức năng dự đoán: có nhiệm vụ
đưa ra các dự đoán dựa vào các suy diễn trên cơ sở dữ liệu hiện thời Một số kỹ thuật khai phá trong nhóm này là: phân lớp (Classification), hồi quy (Regression), cây quyết định (Decision tree), thống kê (statictics), mạng nơron (Neural network), luật kết hợp,
Một số kỹ thuật khai phá dữ liệu thường được sử dụng hiện nay [3]:
1) Phân lớp dữ liệu
Mục tiêu của phân lớp dữ liệu đó là dự đoán nhãn lớp cho các mẫu dữ liệu Quá trình gồm hai bước: xây dựng mô hình, sử dụng mô hình để phân lớp dữ liệu (mỗi mẫu 1 lớp) Mô hình được sử dụng để dự đoán nhãn lớp khi mà độ chính xác của mô hình chấp nhận được
2) Phân cụm dữ liệu
Mục tiêu của phân cụm dữ liệu là nhóm các đối tượng tương tự nhau trong tập dữ liệu vào các cụm, sao cho các đối tượng thuộc cùng một cụm là tương đồng với nhau
Trang 1312
3) Khai phá luật kết hợp
Mục tiêu của phương pháp này là phát hiện và đưa ra các mối liên hệ giữa các giá trị dữ liệu trong cơ sở dữ liệu Phương pháp khai phá luật kết hợp gồm có hai bước:
Bước 1: Tìm ra tất cả các tập mục phổ biến, một tập mục phổ biến được xác định thông qua độ hỗ trợ và thoả mãn độ hỗ trợ cực tiểu
Bước 2: Sinh ra các luật kết hợp mạnh từ tập mục phổ biến, các luật phải thoả mãn độ hỗ trợ và độ tin cậy cực tiểu
4) Hồi quy
Phương pháp hồi quy tương tự như là phân lớp dữ liệu Nhưng khác ở chỗ nó dùng để dự đoán các giá trị liên tục còn phân lớp dữ liệu dùng để dự đoán các giá trị rời rạc
5) Giải thuật di truyền
Là quá trình mô phỏng theo tiến hoá của tự nhiên Ý tưởng chính của giải thuật là dựa vào quy luật di truyền trong biến đổi, chọn lọc tự nhiên và tiến hoá trong sinh học
6) Mạng nơron
Đây là một trong những kỹ thuật khai phá dữ liệu được ứng dụng phổ biến hiện nay Kỹ thuật này phát triển dựa trên một nền tảng toán học vững vàng, khả năng huấn luyện trong kỹ thuật này dựa trên mô hình thần kinh trung ương của con người
Kết quả mà mạng nơron học được có khả năng tạo ra các mô hình dự báo, dự đoán với độ chính xác và độ tin cậy cao Nó có khả năng phát hiện ra được các xu hướng phức tạp mà kỹ thuật thông thường khác khó có thể phát hiện ra được Tuy nhiên, phương pháp mạng nơ ron rất phức tạp và quá trình tiến hành nó gặp rất nhiều khó khăn: đòi hỏi mất nhiều thời gian, nhiều dữ liệu, nhiều lần kiểm tra thử nghiệm
Trang 1413
7) Cây quyết định
Kỹ thuật cây quyết định là một công cụ mạnh và hiệu quả trong việc phân lớp
và dự báo Các đối tượng dữ liệu được phân thành các lớp Các giá trị của đối tượng dữ liệu chưa biết sẽ được dự đoán, dự báo Tri thức được rút ra trong kỹ thuật này thường được mô tả dưới dạng tường minh, đơn giản, trực quan, dễ hiểu đối với người sử dụng
1.7 Các dạng dữ liệu có thể khai phá được
Phát hiện tri thức và khai phá dữ liệu liên quan đến nhiều ngành, nhiều lĩnh vực như: thống kê, trí tuệ nhân tạo, cơ sở dữ liệu, thuật toán học, tính toán song song và tốc độ cao, thu thập tri thức cho các hệ chuyên gia, quan sát dữ liệu Đặc biệt phát hiện tri thức và khai phá dữ liệu rất gần gũi với lĩnh vực thống kê, sử dụng các phương pháp thống kê để mô hình dữ liệu và phát hiện các mẫu, luật,
Do vậy, khai phá dữ liệu có thể ứng dụng cho bất kỳ kho thông tin nào bao gồm: + Các cơ sở dữ liệu quan hệ;
+ Kho dữ liệu;
+ Các cơ sở dữ liệu giao tác;
+ Các hệ thống cơ sở dữ liệu tiên tiến;
+ Các tệp;
1.8 Ứng dụng của Khai phá dữ liệu
Khai phá dữ liệu tuy không phải là một cách tiếp cận mới, song nó lại thu hút rất nhiều sự quan tâm của các nhà nghiên cứu và phát triển nhờ vào những ứng dụng thực tiến của nó Dưới đây là một số ứng dụng điển hình được sử dụng phổ biến trong từng lĩnh vực cụ thể:
- Nhận dạng (Pattern recognition)
- Tin - sinh (Bio-informatics)
- Khai phá dữ liệu văn bản, dữ liệu web (Textmining & Webmining)
- Trong tài chính và thị trường chứng khoán (Finace & Stock market)
Trang 1514
- Trong điều trị y học (Medical treatment)
- Trong bảo hiểm (Insurance)
- Phát hiện gian lận (Fraud detection)
- Các ứng dụng phát hiện và cô lập lỗi trên hệ thống mạng viễn thông (Network fault isolation)
.v.v
1.9 Tổng kết
Khai phá dữ liệu là một môn khoa học liên ngành: Cơ sở dữ liệu, học máy và thống kê toán học, nghiên cứu các kỹ thuật nhằm phát hiện những thông tin có giá trị, tiềm ẩn trong các cơ sở dữ liệu lớn
Khai phá dữ liệu bằng cây quyết định là một kỹ thuật trong số các kỹ thuật thường được sử dụng để khai phá dữ liệu nhằm tìm kiếm các tri thức có ích và hỗ trợ ra quyết định trong các công tác quản lý của các nhà lãnh đạo các cơ quan, tổ chức doanh nghiệp,
Trang 1615
Chương 2 KHAI PHÁ DỮ LIỆU BẰNG CÂY QUYẾT ĐỊNH
2.1 Cây quyết định
Cây quyết định là một trong những giải pháp trực quan và hữu hiệu để mô tả quá trình phân lớp dữ liệu Trên cây quyết định, chúng ta tìm được các luật, những luật này cung cấp những thông tin hữu ích để hỗ trợ việc ra quyết định giải quyết một vấn đề nào đó
2.1.1 Cây quy ết định là gì?
Trong lĩnh vực học máy, 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 Mỗi nút trong tương ứng với một biến; đường nối giữa nó với nút con của nó thể hiện giá trị cụ thể cho biến
đó Mỗi nút lá đại diện cho giá trị dự đoán của biến mục tiêu, cho trước các giá trị
dự đoán của các biến được biểu diễn bởi đường đi từ nút gốc tới nút lá đó Kỹ thuật học máy dùng trong cây quyết định được gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây quyết định [16]
Cây quyết định là biểu đồ phát triển có cấu trúc dạng cây, như mô tả trong hình vẽ sau:
Trang 1716
Hình 2.1 Ví dụ về cây quyết định
Trong cây quy ết định:
- Gốc: là node trên cùng của cây
- Node trong: biểu diễn một kiểm tra trên một thuộc tính đơn (hình chữ nhật)
- Nhánh: biểu diễn các kết quả của kiểm tra trên node trong (mũi tên)
- Node lá: biểu diễn lớp hay sự phân phối lớp (hình tròn)
Các ki ểu cây quyết định [16]:
- 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 khoảng thời gian một bệnh nhân nằm viện hoặc giá của một ngôi nhà)
- Cây phân loại (Classification tree) nếu y là một biết phân loại như giới tính (nam hay nữ), kết quả của một kỳ thi đại học (đỗ hay trượt)
2.1.2 M ột số vấn đề trong khai phá dữ liệu bằng cây quyết định
Các vấn đề đặc thù trong khi học hay phân lớp dữ liệu bằng cây quyết định gồm: xác định độ sâu để phát triển cây quyết định, xử lý với những thuộc tính liên tục, chọn phép đo lựa chọn thuộc tính thích hợp, sử dụng tập dữ liệu đào tạo với những giá trị thuộc tính bị thiếu, sử dụng các thuộc tính với những chi phí khác nhau, và cải thiện hiệu năng tính toán Sau đây luận văn sẽ đề cập đến những vấn
đề chính đã được giải quyết trong các thuật toán phân lớp dựa trên cây quyết định
Trang 1817
+ Tránh “quá v ừa” dữ liệu
Có thể hiểu “quá vừa” là hiện tượng cây quyết định chứa một số đặc trưng riêng của tập dữ liệu đào tạo, nếu lấy chính tập dữ liệu đào tạo để kiểm tra lại mô hình phân lớp thì độ chính xác sẽ rất cao, trong khi đối với những dữ liệu tương lai khác nếu sử dụng cây đó lại không đạt được độ chính xác như vậy
“Quá vừa” dữ liệu là một khó khăn đáng kể đối với học bằng cây quyết định
và những phương pháp học khác Đặc biệt khi số lượng ví dụ trong tập dữ liệu đào tạo quá ít, hay có “nhiễu” trong dữ liệu
Có hai phương pháp tránh “quá vừa” dữ liệu trong cây quyết định:
1) Dừng phát triển cây sớm, trước khi đạt tới điểm phân lớp hoàn hảo tập dữ liệu đào tạo 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
2) Cho phép cây có thể “quá vừa” dữ liệu, sau đó sẽ cắt, tỉa cây
Mặc dù phương pháp thứ nhất có vẻ trực tiếp hơn, nhưng với phương pháp thứ hai thì cây quyết định được sinh cho phép quá vừa và sau đó sẽ thực hiện thao tác cắt tỉa, điều này sẽ đơn giản hơn nhiều xo với việc ước lượng thời điểm dừng phát triển cây Hơn nữa việc cắt tỉa cây quyết định còn giúp tổng quát hóa, và cải thiện độ chính xác của mô hình phân lớp Dù thực hiện phương pháp nào thì vấn
đề mấu chốt ở đây là tiêu chuẩn nào được sử dụng để xác định kích thước hợp lý của cây cuốicùng
+ Thao tác v ới thuộc tính liên tục
Việc thao tác với thuộc tính liên tục trên cây quyết định hoàn toàn không đơn giản như với thuộc tính rời rạc
Thuộc tính rời rạc có tập giá trị (domain) xác định từ trước và là tập hợp các giá trị rời rạc; ví dụ loại ô tô là một thuộc tính rời rạc với tập giá trị là: {xe tải, xe khách, xe con, taxi} Việc phân chia dữ liệu dựa vào phép kiểm tra giá trị của thuộc tính rời rạc được chọn tại một ví dụ cụ thể có thuộc tập giá trị của thuộc tính
Trang 1918
đó hay không: value(A) ∈ X với X ⊂ domain(A) Đây là phép kiểm tra logic đơn giản, không tốn nhiều tài nguyên tính toán Trong khi đó, với thuộc tính liên tục (thuộc tính dạng số) thì tập giá trị là không xác định trước Chính vì vậy, trong quá trình phát triển cây, cần sử dụng kiểm tra dạng nhị phân: value(A) ≤ θ Với θ là ngưỡng (threshold) được lần lượt xác định dựa trên từng giá trị riêng biệt hay từng cặp giá trị liền nhau (theo thứ tự đã sắp xếp) của thuộc tính liên tục đang xem xét trong tập dữ liệu đào tạo Điều đó có nghĩa là nếu thuộc tính liên tục A trong tập dữ liệu đào tạo có n giá trị phân biệt thì cần thực hiện n-1 lần kiểm tra value(A) ≤ θivới i = 1 n-1 để tìm ra ngưỡng θbest tốt nhất tương ứng với thuộc tính đó Việc xác định giá trị của θ và tiêu chuẩn tìm θbest tốt nhất tùy vào chiến lược của từng thuật toán [8]
2.1.3 Ưu nhược điểm của cây quyết định trong khai phá dữ liệu
So với các phương pháp khai phá dữ liệu khác, kỹ thuật khai phá dữ liệu bằng cây quyết định có một số ưu nhược điểm sau:
+ Ưu điểm:
1) 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 có thể chuyển đổi sang mô hình dạng quy tắc (hay còn gọi
là mô hình d ạng luật IF THEN ) đây là ưu điểm nổi bật của kỹ thuật
này, cho dù hình dáng cây quyết định có thể lớn và phức tạp do những tập
dữ liệu lớn nhưng việc đi theo bất cứ đường nào trên cây đều dễ dàng theo nghĩa phổ biến và rõ ràng Do vậy việc 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 rõ ràng và trực quan
2) Khả năng thực thi những lĩnh vực hướng quy tắc: 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 Ta thấy, trong các lĩnh vực từ di truyền đến 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 do khá phức tạp và tối nghĩa bởi những dữ liệu nhiễu Cây quyết định sẽ là một sự
Trang 2019 lựa chọn tự nhiên khi chúng ta nghi nghờ sự tồn tại của các quy tắc ẩn, không minh bạch
3) Dễ tính toán trong khi phân lớp: 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 chính 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
4) Khả năng xử lý với cả hai thuộc tính liên tục và 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 nhiên, thuộc tính liên tục cần nhiều tài nguyên tính toán hơn Những thuộc tính rời rạc đã từng gây ra những vấn đề với mạng neural và các kỹ thuật thống
kê lại thực sự dễ dàng thao tác với các điều kiện phân chia (splitting criteria) trên cây quyết định, mỗi nhánh tương ứng với từng phân tách tập
dữ liệu theo giá trị của thuộc tính được chọn để phát triển tại node đó Các thuộc tính liên tục cũng dễ dàng phân chia bằng việc chọn ra một số gọi là ngưỡng trong tập các giá trị đã sắp xếp của thuộc tính đó Sau khi chọn được ngưỡng tốt nhất, tập dữ liệu phân chia theo test nhị phân của ngưỡng
đó
5) 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 huấn luyện 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
Trang 212) Dễ gây ra lỗi khi có quá nhiều lớp, một số cây quyết định chỉ thao tác với những lớp giá trị nhị phân dạng “yes/no” Số khác lại có thể chỉ định các bản ghi vào một số lớp bất kỳ, nhưng dễ xảy ra lỗi khi số mẫu huấn luyện ứng với một lớp là nhỏ Điều này thể hiện càng nhanh, rõ hơn với cây mà
có nhiều tầng hay có nhiều nhánh trên một node
3) Chi phí tính toán “đắt” để đào tạo, nghe có vẻ mâu thuẫn với ưu điểm thứ
3 được nên trên Tuy nhiên, quá trình phát triển cây quyết định “đắt” về mặt tính toán là vì cây quyết định có rất nhiều node trong trước khi đi đến
lá cuối cùng Tại từng node, cần tính một độ đo (hoặc 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 xắp xếp lại tập dữ liệu theo thứ tự giá trị ủa thuộc tính đó, sau đó mới có thể chọn một thuộc tính phát triển và tương ứng là một phân chia tốt nhất Một vài thuật toán sử dụng tổ hợp các thuộc tính kết hợp với nhau có trọng số
để phát triển cây quyết định Quá tình cắt tỉa cây cũng “đắt” bởi nhiều cây con ứng cử phải được tạo ra và so sánh
2.1.4 Xây d ựng cây quyết định
Xây dựng cây quyết định là công đoạn quan trọng nhất trong việc sử dụng cây quyết định để khai phá dữ liệu Quá trình xây dựng cây quyết định gồm ba bước cơ bản sau:
Trang 2221
Bước 1: Tạo cây quyết định
Tại bước này việc tạo cây quyết định bắt đầu từ gốc, đến từng nhánh và phát triển quy nạp theo cách thức chia để trị cho tới khi đạt được cây quyết định với tất
cả các lá được gán nhãn lớp
Các công việc của bước này gồm:
1) Chọn thuộc tính “tốt” nhất bằng một độ đo định trước;
2) Phát triển cây bằng việc sinh các nhánh tương ứng với từng giá trị của thuộc tính đã chọn;
3) Sắp xếp, phân chia tập dữ liệu đào tạo với node con;
4) Nếu các ví dụ được phân lớp rõ ràng thì dừng;
Ngược lại thì lặp lại bước 1 đến bước 4 cho từng node con
Bước 2: Cắt tỉa cây quyết định
Bước này nhằm mục đích đơn giản 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ách loại bỏ sự phụ thuộc vào mức độ nhiễu (noise) của dữ liệu huấn luyện mang tính chất thố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 huấn luyện Bước này chỉ truy cập dữ liệu trên cây quyết định đã được phát triển trong bước 1 và quá trình thực nghiệm cho thấy bước này không tốn nhiều tài nguyên tính toán, như với phần lớn các thuật toán, Bước 2 chỉ chiếm khoảng dưới 1% tổng thời gian xây dựng mô hình phân lớp [8], [11]
Bước 3: Đánh giá cây
Tại bước này cần đánh giá độ chính xác của cây kết quả thu được Việc đánh giá cây kết quả khá đơn giản bằng cách cho một tập dữ kiện vào và so sánh nhãn của lớp đã dự đoán với nhãn của lớp trên thực tế đạt được Tiêu chí để đánh giá độ chính xác của cây quyết định là tỷ số các mẫu được phân lớp chính xác trên tổng
số các mẫu đưa vào
Trang 23- Đầu vào: Tập dữ liệu mẫu, thuộc tính phân lớp;
- Đầu ra: Cây Quyết định (tập dữ liệu đã được phân lớp);
Quá trình thực hiện như sau:
1 Tạo một nút T, nút này gồm tất cả các mẫu của tập huấn luyện;
2 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á;
3 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 nhãn cho nút T là "NO" và dừng lại T lúc này là nút lá;
4 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"
iii Tạo n nút con Ti (i=1,2…n) với nút cha là nút T;
iv 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;
5 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à tuỳ ý Điều đó nói lên rằng khi áp dụng thuật toán CLS để xây dựng cây trên
Trang 2423 cùng một tập mẫu huấn luyện, cây quyết định thu được sẽ phụ thuộc vào việc chọn thuộc tính mở rộng cây ở bước 4 Để kiểm chứng khẳng định này ta xét ví dụ sau:
Ví dụ: Cho tập dữ liệu huấn luyện thể hiện trong bảng 2.1, xâydựng cây quyết
định chơi thể thao
Ngày Bầu trời Nhiệt độ Độ ẩm Gió thể thao Chơi
Bảng 2.1 Tập dữ liệu huấn luyện quyết định chơi thể thao
Bảng dữ liệu trên là một tập các mẫu mô tả quyết định đi chơi tennis Trong bảng, thuộc tính Day được dùng để định danh (chỉ số) Các thuộc tính outlook (quang cảnh bầu trời), temperature (nhiệt độ), humidity (độ ẩm), wind (gió) là các thuộc tính ứng cử viên được dùng để xét Còn thuộc tính play tennis là thuộc tính khẳng định được dùng để phân lớp các mẫu dữ liệu Khi đó cây quyết định được xây dựng theo thuật toán CLS đối với tập dữ liệu trong bảng 11.1 được xây dựng như sau:
1) Chọn thuộc tính Bầu trời = {Nắng, U ám, Mưa} ta có cây như hình 2.2
dưới đây:
Trang 2524
Hình 2.2 Cây được tạo khi thuộc tính “Bầu trời” được chọn Với giá trị thuộc tính Bầu trời = "U ám" các giá trị thuộc tính “Chơi thể thao” của các ngày {3,7,12,13} đếu có giá trị là “Có”, chúng thuộc cùng một lớp "Có", đây là nút lá có nhãn là "Có"
2) Tiếp theo chọn thuộc tính Độ ẩm = {Cao, Trung bình} để mở rộng cho
nhánh bên trái của cây, chúng ta được cây như hình 2.3 bên dưới
Hình 2.3 Cây được mở rộng khi thuộc tính “Độ ẩm” được chọn
“?”
[4,5,6,10,14]
“?”
[1,2,8,9,11]
Trang 2625
3) Chọn thuộc tính Gió = {Yếu, Mạnh} để mở rộng cho nhánh bên phải, chúng
ta được cây như hình 2.4 dưới đây:
Hình 2.4 Cây kết quả áp dụng thuật toán CLS với bộ dữ liệu trong bảng 2.1,
thứ tự lựa chọn thuộc tính là Bầu trời, Độ ẩm, Gió
Hình 2.4 là cây kết quả thu được khi áp dụng thuật toán CLS cho tập dữ liệu huấn luyện trong bảng 2.1 với thứ tự các thuộc tính Bầu trời, Độ ẩm, Gió Nếu áp dụng thuật toán CLS với thứ tự khác của các thuộc tính ta sẽ thu được cây kết quả
có hình dạng khác
Trường hợp khi ta áp dụng thuật toán CLS để xây dựng cây với thứ tực các
thuộc tính chọn là Bầu trời, Nhiệt độ, Gió, Độ ẩm thì cây kết quả sẽ có dạng như
Trang 2726
Hình 2.5. Cây kết quả áp dụng thuật toán CLS với bộ dữ liệu trong bản 2.1,
thứ tự lựa chọn thuộc tính là Bầu trời, Nhiệt độ, Gió, Độ ẩm
Ví dụ trên đã khẳng định rằng khi sử dụng thuật toán CLS để xây dựng cây thì việc chọn thứ tự thuộc tính mở rộng cây sẽ ảnh hưởng tới hình dạng cây như độ rộng, độ sâu hay nói cách khác là ảnh hướng đến độ phức tạp của cây Vì vậy vấn
đề đặt ra ở đây là thứ tự thuộc tính nào được chọn để triển khai cây sẽ là tốt nhất? Thuật toán ID3 dưới đây sẽ đề cập và giải quyết vấn đề này
2.2.2 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 là một thuật toán đơn giản nhưng tỏ ra thành công trong nhiều lĩnh vực, ID3 biểu diễn các khái niệm ở dạng cây quyết định Biểu diễn này cho phép
Trang 2827 một số thuộc tính nào đó Nhiệm vụ của thuật toán ID3 là học cây quyết định từ một tập dữ liệu huấn luyện
Đầu vào của thuật toán: Một tập hợp các mẫu dữ liệu, mỗi mẫu bao gồm các thuộc tính mô tả một tình huống hoặc một đối tượng nào đó và một giá trị phân loại của nó
Đầu ra của thuật toán: Cây quyết định có khả năng phân loại đúng đắn các ví
dụ trong tập dữ liệu huấ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
Thuật toán 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) bắt đầu từ một tập các đối tượng và các thuộc tính của nó [10] Tại mỗi node của cây, tiến hành việc kiểm tra các thuộc tính nhằm tìm
ra thuộc tính tốt nhất dùng để phân chia tập các đối tượng mẫu, theo các giá trị thuộc tính được chọn để mở rộng Quá trình này được thực hiện một cách đệ quy cho đến khi mọi đối tượng của phân vùng đều thuộc cùng một lớp, lớp đó trở thành nút lá của cây ID3 đã sử dụng tới hai hàm Entropy và Gian để thực hiện điều này
Entropy [10]: là đặc trưng độ hỗn tạp (dùng để đo tính thuần nhất) của một
tập dữ liệu bất kỳ, trong trường hợp đơn giản, giả sử các mẫu dữ liệu có hai thuộc tính phân lớp có giá trị "YES" (+), và giá trị "NO" (-)
Ta ký hi ệu:
S là tập các mẫu thuộc lớp âm “NO” và lớp dương “YES”;
P+ là tỷ lệ các mẫu có giá trị của thuộc tính quyết định là "YES" trong S;
P- là tỷ lệ các mẫu có giá trị của thuộc tính quyết định là "NO" trong S, khi đó
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:
Trang 29P S
• Các trường hợp còn lại 0 < Entropy(S) < 1;
Information Gain [10] (gọi tắt là 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
( )A ( )P Entropy( )S n
Informatio
n i
v v
S Entropy S
S S
Entropy
A Entropy A
n Informatio A
S Gain
Trong đó:
S là tập ban đầu các mẫ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 là tập con của 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
Trang 3029 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 ta cần tính giá trị Gain của các thuộc tính Thuộc tính nào có giá trị Gain lớn nhất sẽ được chọn là thuộc tính để triển khai
Hàm xây dựng cây quyết định trong thuật toán ID3 như sau [2]:
TreeNode function Buildtree(S, A){
// - S là tập các mẫu với thuộc tính A
// - A là thuộc tính phân lớp có các giá trị kiểu số: 1,2,3… tương ứng với
các lớp 1,2,3
if (mọi mẫu trong S đều nằm trong cùng một lớp) return một nút lá được gán nhãn bởi lớp đó;
else if (A rỗng) return nút lá được gán nhãn bởi tuyển của tất cả các lớp
trong S; // l ớp phổ biến nhất trong tập S
else {
chọn A.best có giá trị Gian max trong A với tập mẫu S làm gốc cho cây mới sinh;
A=A-A.best; // xoa A.best khoi A
foreach (giá trị ai của A.best)
{
Tạo một nhánh của cây gán nhãn ai; Đặt vào Si các mẫu trong S có giá trị ai tại thuộc tính A.best; Buildtree(Si, A);
Gắn kết quả vào nhánh ai;
} } }
Để minh hoạ cho thuật toán ID3 ta xét ví dụ: Cho tập dữ liệu huấn luyện S thể hiện trong bảng 2.1, xây dựng cây quyết định chơi thể thao
Tập S gồm 14 mẫu dữ liệu, thuộc tính Ngày là thuộc tính định danh Các
thuộc tính ứng viên, thuộc tính Chơi thể thao là thuộc tính phân lớp Ta có: S gồm
14 mẫu [9+, 5-]
Trang 3130
Tính giá trị Gain cho từng thuộc tính ta có:
1) Với thuộc tính Bầu trời = {Nắng = “N”, U ám = “U”, Mưa = “M”} ta có:
+ Bầu trời = “N” có 2 mẫu nhận giá trị "Có", 3 mẫu nhận giá trị "Không" [2+,3-]
+ Bầu trời = “U” có 4 mẫu nhận giá trị "Có", 0 mẫu nhận giá trị "không" [4+,0-]
+ Bầu trời = “M” có 3 mẫu nhận giá trị "Có" và 2 mẫu nhận giá trị "Không" [3+,2-]
Khi đó: S = [9+, 5-]
940.0531.0410.0
14
5log14
514
9log14
95
,
=+
= Entropy S
14
3log14
314
2log14
23
,
=+
= Entropy S
Entropy N
+ SU = [4+,0-] nên:
516.0
14
4log14
414
4log14
40
= Entropy S
Entropy U
+ SM = [3+,2-] nên:
877.0401.0476.0
14
2log14
214
3log14
32
,
=+
= Entropy S
Entropy U
Từ các kết quả tên ta tính được
Gain(S,B ầu trời) ( ) ( )
v
v
S Entropy S
S S
Entropy
, ,
5 4
5
14
5 14
4 14
Trang 3231
2) Với thuộc tính Nhiệt độ = {Nóng, Bình thường, Lạnh} và cách tính tương
tự như trên, ta có các kết quả tính toán như sau:
Ta có: Entropy (S) = 0.940
Gain(S, Nhi ệt độ) = 0 748 0 104
14
4 917 0 14
6 802 0 14
4 940
7 940
6 940
=> từ 1,2,3,4 ta nhận thấy thuộc tính “Bầu trời” có giá trị Gain lớn nhất Vậy
ta chọn thuộc tính “Bầu trời” là thuộc tính đầu tiên được dùng để triển khai cây Thuộc tính “Bầu trời” được chọn làm nhãn cho nút gốc Do thuộc tính “Bầu
trời” có các giá trị Bầu trời = {Nắng, U ám, Mưa} nên các nhánh được tạo ra từ
nút gốc có nhãn là tương ứng, cây thu được sẽ có dạng như hình dưới đây.
Hình 2.6 Cây thu được sử dụng thuật toán ID3 với thuộc tính “Bầu trời” được chọn
- Xét nhánh bên trái cây với giá trị là “Nắng”:
Trang 333 5
2 log 5
2 3
Với thuộc tính Nhiệt độ = {Nóng, Bình thường, Mát}
+ Bầu trời = “Nắng” và Nhiệt độ = “Nóng” không có mẫu nào nhận giá trị
"Có", có 2 mẫu nhận giá trị "no" [0+,2-];
+ Bầu trời = “Nắng” và Nhiệt độ = “Bình thường” thì có 1 mẫu nhận giá trị
"yes", 1 mẫu nhận giá trị "no" [1+,1-];
+ Bầu trời = “Nắng” và Nhiệt độ = “Mát” thì có 1 mẫu nhận giá trị "yes" và 0 mẫu nhận gía trị "no" [1+,0-]
Khi đó ta có:
Entropy(S Nóng ) = ( [ ] ) 0 529 ;
5
2 log 5
2 5
0 log 5
0 2
1 5
1 log 5
1 1
0 5
1 log 5
1 0
2 529 0 5
2 971
=
- Xét thuộc tính Độ ẩm = {Cao,Trung bình}
+ Bầu trời = “Nắng” và Độ ẩm = “Cao” không có mẫu nào nhận giá trị "Có"
và có 3 mẫu nhận giá trị "Không" [0+,3-];
Trang 3433 + Bầu trời = “Nắng” và Độ ẩm = “Trung bình” thì có 2 mẫu nhận giá trị "Có"
và không có mẫu nào nhận giá trị "Không" [2+,0-]
Khi đó ta có:
Entropy(S Cao ) = ( [ ] ) 0 442 ;
5
3 log 5
3 5
0 log 5
0 3
0 5
2 log 5
2 0
v
v
S Entropy S
S
5
2 442 0 5
3 971
- Xét tiếp thuộc tính Gió = {Mạnh,Yếu}
+ Bầu trời = “nắng” và Gió = Mạnh có 1 mẫu nhận giá trị "có" và 1 mẫu nhận giá trị "không" [1+,1-];
+ Bầu trời = “nắng” và Gió = Yếu có 2 mẫu nhận giá trị "có" và 1 mẫu nhận giá trị "không" [2+,1-]
1 5
1 log 5
1 5
2 log 5
Từ hai kết quả trên ta có:
Gain(S N ắng , Gió ) = Entropy(S n ắng ) - ∑ ( )
∈Gio v
v v
S Entropy S
S
0 993 0 004
5
3 928 0 5
2 971
=
Trang 3534
Từ 03 kết quả tính toán trên suy ra thuộc tính “Độ ẩm” có giá trị Gain lớn nhất, do đó thuộc tính “Độ ẩm” sẽ được chọn làm thuộc tính tiếp theo để triển khai cây, cây kết quả sẽ như hình 2.7 sau
Hình 2.7 Cây được phát triển khi thuộc tính Độ ẩm được chọn
để làm thuộc tính triển khai tiếp theo Tại nút có nhãn Độ ẩm xét các nhánh:
+ Với nhánh Độ ẩm = “Cao” ta thấy tất cả các mẫu đều thuộc cùng một lớp
"không" => đây là nút lá và nhãn của nút được gán là "Không"
+ Với nhánh Độ ẩm = “Trung bình” ta thấy tất cả các mẫu đều thuộc cùng một lớp "có" => đây là nút lá với nhãn của nút được gán là "Có"
Như vậy ta thu được cây có dạng như hình vẽ sau:
Trang 3635
Hình 2.8 Cây sau khi xét thuộc tính Độ ẩm với các nhánh
có giá trị là “Cao” và “Trung bình”
Ta tiếp tục xét nhánh giữa của cây, khi Bầu trời = “U ám”, ta nhận thấy các mẫu [3,7,12,13] đều thuộc cùng một lớp "Có" => đây cũng là nút lá với nhãn của nút là
"Có" và cây thu được sẽ như sau:
Hình 2.9 Cây sau khi tiếp tục xét thuộc tính Bầu trời với nhánh giữa
Trang 3736 Tương tự, ta xét nhánh bên phải của cây, khi đó thuộc tính Bầu trời = “Mưa”,
ta nhận thấy các mẫu thuộc nhánh này không thuộc cùng một lớp, do đó cần phải tiếp tục mở rộng Tiếp tục tính giá trị Gain của các thuộc tính “Gió” và “Nhiệt độ” còn lại, thực hiện tương tự như mở rộng nhánh bên trái của cây, ta thu được cây kết quả như hình dưới đây
Hình 2.10 Cây kết quả áp dụng thuật toán ID3 với bộ dữ liệu trong bảng 2.1 Dưới đây là cây quyết định rút gọn:
Trang 3837 Với việc tính toán giá trị Gain để lựa chọn thuộc tính tối ưu cho việc triển khai cây, thuật toán ID3 được xem là một cải tiến của thuật toán CLS Tuy nhiên, thuật toán ID3 không có khả năng xử lý đối với những dữ liệu có chứa thuộc tính
số - thuộc tính liên tục và khó khăn trong việc xử lý các dữ liệu thiếu và dữ liệu nhiễu Vấn đề này sẽ được giải quyết trong thuật toán C4.5 sau đây
2.2.3 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 cho phép xử lý trên tập dữ liệu có các thuộc tính số và và làm việ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ệu quả của thuộc tính dùng để thực hiện phép tách trong thuật toán để phát triển cây quyết định GainRatio được tính dựa trên kết quả tính toán đại lượng Information Gain theo công thức sau:
(X T)
SplitInfo
T X Gain T
X GainRation
i i
T
T T
T T
X
Trong đó:
- Value(X) là tập các giá trị của thuộc tính X;
- Ti là tập con của tập T ứng với thuộc tính X = giá trị là vi
Đối với các thuộc tính liên tục, chúng ta tiến hành phép thử nhị phân cho mọi giá trị của thuộc tính đó Để thu thập được giá trị Entropy gain của tất cả các phép thử nhị phân một cách hữu hiệu ta tiến hành xắp xếp các dữ liệu theo giá trị của
Trang 3938 thuộc tính liên tục đó bằng bằng bất kỳ thuật toán sắp xếp nào (có thể sử dụng thuật toán Quicksort)
Thu ật toán xây dựng cây quyết định C4.5
Mô tả thuật toán dưới dạng giả mã như sau [10]:
TreeNote function Buildtree(T){
<Tính toán tần xuất các giá trị trong các lớp của T>;
if (nếu các mẫu thuộc cùng một lớp hoặc có rất ít mẫu khác lớp)
return 1 nút lá;
else Tạo một nút quyết định N;
foreach(với mỗi thuộc tính A) Tính giá trị Gain(A);
Tại nút N, thực hiện việc kiểm tra để chọn ra thuộc tính có
giá trị Gain tốt nhất (lớn nhất);
N.test = thuộc tính có Gain lớn nhất;
if (N.test là thuộc tính liên tục) Tìm ngưỡng cho phép tách của N.test;
for(Với mỗi tập con T’ được tách ra từ tập T){
// * T’ được tách ra theo quy tắc:
- N ếu N.test là thuộc tính liên tục tách theo ngưỡng ở bước 5
- N ếu N.test là thuộc tính phân loại rời rạc tách theo các giá tr ị của thuộc tính này
*//
if (T' rỗng) Gán nút con này của nút N là nút lá;
Else Gán nút con này là nút được trả về bằng cách gọi đệ qui lại
đối với hàm Buildtree(T'), với tập T';
Trang 40Một số cải tiến của thuật toán C4.5
1) Làm vi ệc với thuộc tính đa trị
Tiêu chuẩn (2.8) có khuyết điểm là không chấp nhận các thuộc tính đa trị Vì vậy thuật toán C4.5 đã đưa ra các đại lượng GainRatio và SplitInfo (Split-Information), chúng được xác định theo các công thức sau:
T
T C freq
i i
T
T T
T X
X Gain X
Giá trị SplitInfo là đại lượng đánh giá thông tin tiềm năng thu thập được khi phân chia tập T thành n tập hợp con
GainRatio là tiêu chuẩn để đánh giá việc lựa chọn thuộc tính phân loại
2) Làm vi ệc với dữ liệu bị thiếu
Thuật toán vừa xây dựng áp dụng với 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ế, có thể xảy ra hiện tượng dữ liệu bị thiếu, nghĩa là ở một số mẫu dữ liệu sẽ có một vài thuộc tính không được xác định, hoặc mâu thuẫn, hoặc không bình thường (ở đây 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