Phân lớp bằng cây quyết định và cài đặt thuật toán C4.5
kiMỤC LỤC Lời nói đầu . 2 I. Tổng quan về phân lớp dữ liệu trên cây quyết định . 3 1. Phân lớp dữ liệu . 3 1.1. Các vấn đề liên quan đến phân lớp dữ liệu . 3 1.1.1. Chuẩn bị dữ liệu cho việc phân lớp . 3 1.1.2. So sánh các mô phân lớp . 4 1.1.3. Các phương pháp đánh giá độ chính xác cảu mô hình phân lớp . 4 2. Cây quyết định . 6 2.1. Khái niệm cây quyết định . 6 2.2. Ưu điểm của cây quyết định . 10 3. Cây quyết định ứng dụng trong phân lớp dữ liệu . 10 3.1. Định nghĩa . 10 3.2. Các vấn đề trong phân lớp dữ liệu sử dụng cây quyết định 1 . 11 3.2.1. Tránh “quá vừa” dữ liệu . 11 3.2.2. Thao tác với thuộc tính liên tục . 12 3.3. Đánh giá cây quyết trong phân lớp dữ liệu . 12 3.3.1. Sức mạnh của cây quyết định . 12 3.3.2. Điểm yếu của cây quyết định . 13 3.4. Xây dựng cây quyết định . 14 4. Thuật toán xây dựng cây quyết định . 14 4.1. Tư tưởng chung . 14 4.2. Thuật toán quy nạp cây quyết định . 16 4.3. Song song hóa thuật toán phân lớp dựa trên cây quyết định tuần tự . 16 4.4. Độ lợi thông tin . 19 II. Thuật toán C4.5 . 19 1. C4.5 dùng Gain-entropy làm độ đo lựa chọn thuộc tính “tốt nhất” 2 . 20 2. C4.5 có cơ chế riêng trong xử lý những giá trị thiếu . 23 3. Tránh quá vừa dữ liệu . 23 4. Chuyển đổi từ cây quyết định sang luật . 24 5. C4.5 là một thuật toán hiệu quả cho những tập dữ liệu vừa và nhỏ . 25 GIỚI THIỆU PHẦN MỀM ỨNG DỤNG THUẬT TOÁN C4.5………………….25 3 Lời nói đầu Trong quá trình hoạt động , con người tạo ra nhiều dữ liệu nghiệp vụ . Các tập dữ liệu được tích lũy có kích thước càng lớn , và có thể chưa nhiều thông tin ẩn dạng những quy luật chưa được khám phá . Chính vì vậy một nhu cầu đặt ra là cần tìm cách trích rút từ tập dữ liệu đó các luật về phân lớp dữ liệu hay dự đoán những xu hướng dữ liệu tương lai. Những quy tắc nghiệp vụ thông minh đưỡ tạo ra sẽ phục vụ đắc lực cho các hoạt động thực tiễn, cũng như phục vụ đắc lực cho quá trình nghiên cứu khoa học. Công nghệ phân lớp và dự đoán dữ liệu ra đời để đáp ứng mong muốn đó. Công nghệ phân lớp dữ liệu đã, đang và sẽ phát triển mạnh mẽ trước những khao khát tri thức của con người. Trong những năm qua , phân lớp dữ liệu đã thu hút sự quan tâm của các nhà nghiên cứu trong nhiều lĩnh vưc khác nhau. Công nghệ này cũng ứng dụng trong nhiều lĩnh vực thực tế như: thưng mại, nhà băng, maketing… Nhiều kỹ thuật phân lớp đã được đề xuất như: Phân lớp cây quyết định (Decision tree classification), phân lớp Bayesian (Bayesian classifier), phân lớp K-hàng xóm gần nhất (K-nearest neighbor classifier), mạng norowrron, phân tích thống kê…Trong các kỹ thuật đó, cây quyết định được coi là công cụ mạnh, phổ biến và đặc biệt. Do vậy cần xây dựng những thuật toán có độ chính xác cao, thực thi nhanh đi kèm với khả năng mở rộng được để có thao tác với những tập dữ liệu ngày càng lớn. Với nhu cầu này nhóm em đã nghiên cứu tổng quan về công nghệ phân lớp dữ liệu nói chung và phân lớp dữ liệu dựa trên cây quyết định nói riêng và thuật toán C4.5. Việc phân tích đánh giá thuật toán có giá trị khoa học và thực tiễn. Tìm hiểu các thuật toán giúp chúng ta tiếp thu và có thể phát triển về mặt tư tưởng, cũng như kỹ thuật của một công nghệ tiên tiến. Từ đó có thể triển khai cài đặt và thử nghiệm các mô hình phân lớp dữ liệu thực tế. 4 I. Tổng quan về phân lớp dữ liệu dựa trên cây quyết định 1.Phân lớp dữ liệu: là kĩ thuật dựa trên tập huấn luyện và những giá trị hay hay là nhãn của lớp trong một thuộc tính phân lớp và sử dụng nó trong việc phân lớp dữ liệu mới. Phân lớp cũng là tiên đoán loại lớp của nhãn. Bên cạnh kĩ thuật phân lớp có một hình thức tương tự là kĩ thuật tiên đoán , kĩ thuật tiên đoán khác với phân lớp ở chỗ phân lớp chỉ liên quan đến tiên đoán loại lớp của nhãn còn kĩ thuật tiên đoán mô hình những hàm đánh giá liên tục . Kĩ thuật phân lớp được tiến hành bao gồm 2 bước : Xây dựng mô hình và sử dụng mô hình . +Xây dựng mô hình : là mô tả một tập những lớp được định nghĩa trước trong đó: mỗi bộ hoặc mẫu được gán thuộc về một lớp được định nghĩa trước như là được xát định bởi thuộc tính nhãn lớp , tập hợp của những bộ được sử dụng trong việc sử dụng mô hình được gọi là tập huấn luyện . Mô hình được biểu diễn là những luật phân lớp , cây quyết định và những công thức toán học . +Sử dụng mô hình : Việc sử dụng mô hình phục vụ cho mục đích phân lớp dữ liệu trong tương lai hoặc phân lớp cho những đối tượng chưa biết đến . Trước khi sử dụng mô hình người ta thường phải đánh giá tính chính xát của mô hình trong đó : nhãn được biết của mẫu kiểm tra được so sánh với kết quả phân lớp của mô hình , độ chính xác là phần trăm của tập hợp mẫu kiểm tra mà phân loại đúng bởi mô hình , tập kiểm tra là độc lập với tập huấn luyện . Phân lớp là một hình thức học được giám sát tức là : tập dữ liệu huấn luyện ( quan sát , thẩm định .) đi đôi với những nhãn chỉ định lớp quan sát , những dữ liệu mới được phân lớp dựa trên tập huấn luyện . Ngược lại với hình thức học được giám sát là hình thức học không được giám sát lúc đó nhãn lớp của tập dữ liệu huấn luyện là không được biết đến. 1.1. Các vấn đề liên quan đến phân lớp dữ liệu. 1.1.1. Chuẩn bị dữ liệu cho việc phân lớp. Việc tiền xử lý dữ liệu cho quá trình phân lớp là một việc làm không thể thiếu và có vai trò quan trọng quyết định tới sự áp dụng được hay không của mô hình phân lớp. Quá trình tiền xử lý dữ liệu sẽ giúp cải thiện độ chính xác, tính hiệu quả và khả năng mở rộng được của mô hình phân lớp. Quá trình tiền xử lý dữ liệu gồm có các công việc sau: + Làm sạch dữ liệu: 5 Làm sạch dữ liệu liên quan đến việc xử lý với lỗi (noise) và giá trị thiếu (missing value) trong tập dữ liệu ban đầu. Noise là các lỗi ngẫu nhiên hay các giá trị không hợp lệ của các biến trong tập dữ liệu. Để xử lý với loại lỗi này có thể dùng kỹ thuật làm trơn. Missing value là những ô không có giá trị của các thuộc tính. Giá trị thiếu có thể do lỗi chủ quan trong quá trình nhập liệu, hoặc trong trường hợp cụ thể giá trị của thuộc tính đó không có, hay không quan trọng. Kỹ thuật xử lý ở đây có thể bằng cách thay giá trị thiếu đó bằng giá trị phổ biến nhất của thuộc tính đó hoặc bằng giá trị có thể xảy ra nhất dựa trên thống kê. Mặc dù phần lớn thuật toán phân lớp đều có cơ chế xử lý với những giá trị thiếu và lỗi trong tập dữ liệu, nhưng bước tiền xử lý này có thể làm giảm sự hỗn độn rong quá trình xây dựng mô hình phân lớp. + Phân tích sự cần thiết của dữ liệu: Có rất nhiều thuộc tính trong tập dữ liệu có thể hoàn toàn không cần thiết hay liên quan đến một bài toán phân lớp cụ thể. Ví dụ dữ liệu về ngày trong tuần hoàn toàn không cần thiết đối với ứng dụng phân tích độ rủi ro của các khoản tiền cho vay của ngân hàng nên thuộc tính này là dư thừa. Phân tích sự cần thiết của dữ liệu nhằm mục đích loại bỏ những thuộc tính không cần thiết, dư thừa khỏi quá trình phân lớp vì thuộc tính đó sẽ làm chậm, phức tạp và gây ra sụ hiểu sai trong quá trình phân lớp dẫn tới mô hình phân lớp không đúng. + Chuyển đổi dữ liệu: Việc khái quát hóa dữ liệu lên mức khái niệm cao hơn đôi khi là cần thiết trong quá trình tiền xử lý. Việc này đặc biệt hữu ích với những thuộc tính liên tục. Ví dụ: các giá trị số của thuộc tính thu nhập của khách hàng có thể được khái quat hóa thành các dãy giá trị rời rạc: thấp, trung bình, cao. Tương tự với những thuộc tính rời rạc như địa chỉ phố có thể được khái quát hóa lên thành thành phố. Việc khái quát hóa làm cô đọng dữ liệu học nguyên thủy, vì vậy các thao tác vào/ra liên quan đến quá trình phân lớp sẽ giảm. 1.1.2. So sánh các mô hình phân lớp. Trong từng ứng dụng cụ thể cần lựa chọn mô hình phân lớp phù hợp. Việc lựa chọn đó căn cứ vào sự so sánh các mô hình phân lớp khác nhau, dựa trên các tiêu chuẩn sau: • Độ chính xác dự đoán (predictive accuracy): Độ chính xác là khả năng của mô hình để dự đoán chính xác nhãn lớp của dữ liệu mới hay dữ liệu chưa biết. 6 • Tốc độ (speed): Tốc độ là chi phí tính toán liên quan đến quá trình tạo ra và sử dụng mô hình. • Sức mạnh (robustness): Sức mạnh là khả năng mô hình tạo ra những dự đoán đúng từ những dữ liệu noise hay dữ liệu với những giá trị thiếu. • Khả năng mở rộng (Scalability): là khả năng thực thi hiệu quả trên lượng lớn dữ liệu của mô hình đã học. • Tính hiểu được ( interpretability): Tính hiểu được la mức độ hiểu và hiểu rõ những kết quả sinh ra bởi mô hình đã học. • Tính đơn giản (simplicity): Tính đơn giản liên quan đến kích thước của cây quyết định hay độ cô đọng của các luật. 1.1.3. Các phương pháp đánh giá độ chính xác của mô hình phân lớp. Ước lượng độ chính xác của bộ phân lớp là quan trọng ở chỗ nó cho phép dự đoán được độ chính xác của các kết quả phân lớp những dữ liệu tương lai. Độ chính xác còn giúp so sánh các mô hình phân lớp khác nhau. Dưới đây là hai phương pháp đánh giá phổ biến là holdout và k-fold cross- validation. Cả hai phương pháp này đều dựa trên các phân hoạch ngẫu nhiên tập dữ liệu ban đầu. + Phương pháp holdout : dữ liệu đưa ra được phân chia ngẫu nhiên thành 2 phần là: tập dữ liệu đào tạo và tập dữ liệu kiểm tra. Thông thường 2/3 dữ liệu cấp cho dữ liệu đào tạo, phần còn lại cho tập dữ liệu kiểm tra. + Phương pháp k-fold cross-validation : tập dữ liệu ban đầu được chia ngẫu nhiên thành k tập con (fold) có kích thước xấp xỉ nhau S1,S2, …,Sk. Quá trình phân lớp và test được thực hiện k lần. Tại lần lặp thứ i,Si là tập dữ liệu kiểm tra, các tập còn lại hợp thành tập dữ liệu đào tạo. Có nghĩa là đầu tiên việc phân lớp được thực hiện trên các tập S2, S3,…,Sk sau đó test trên tập S1, tiếp tục quá trình phân lớp được thực hiện trên tập S1,S3,S4, …,Sk sau đó test trên tập S2 và cứ tiếp tục. Độ chính xác là toàn bộ số phân lớp đúng từ k lần lặp chia cho tổng số mẫu cảu tập dữ liệu ban đầu. 2. Cây quyết định Trong lý thuyết quyết định (chẳng hạn quản lí rủi ro), một cây quyết định (tiếng Anh: decision tree) là một đồ thị của các quyết định và các hậu 7 quả có thể của nó (bao gồm rủi ro và hao phí tài nguyên). Cây quyết định được sử dụng để xây dựng một kế hoạch nhằm đạt được mục tiêu mong muốn. Các cây quyết định được dùng để hỗ trợ quá trình ra quyết định. Cây quyết định là một dạng đặc biệt của cấu trúc cây. 2.1 Khái niệm cây quyết định: Cây quyết định (Decision Tree) là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật (series of rules). Các thuộc tính của đối tượng (ngoại trừ thuộc tính phân lớp – Category attribute) có thể thuộc các kiểu dữ liệu khác nhau (Binary, Nominal, ordinal, quantitative values) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal. Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các đối tượng chưa biết (unseen data) Cây quyết định là một flow-chart giống cấu trúc cây , nút bên trong biểu thị một kiểm tra trên một thuộc tính , nhánh biểu diễn đầu ra của kiểm tra , nút lá biểu diễn nhãn lớp hoặc sự phân bố của lớp. 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ôi nhà 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 y 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 hay thua). Việc tạo cây quyết định bao gồm 2 giai đoạn : Tạo cây và tỉa cây . + Để tạo cây ở thời điểm bắt đầu tất cả những ví dụ huấn luyện là ở gốc sau đó phân chia ví dụ huấn luyện theo cách đệ qui dựa trên thuộc tính được chọn . + Việc tỉa cây là xát định và xóa những nhánh mà có phần tử hỗn loạn hoặc những phần tử nằm ngoài (những phần tử không thể phân vào một lớp nào đó) . Việc sử dụng cây quyết định như sau : Kiểm tra những giá trị thuộc tính của mẫu đối với cây quyết định . 8 Trong lĩnh vực phân lớp, 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 một nút trong (internal node) 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 một 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ị 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á đó. Phân lớp bằng cây quyết định cũng là một phương pháp thông dụng trong khai phá dữ liệu. Khi đó, cây quyết định mô tả một cấu trúc cây, trong đó, các lá đại diện cho các phân loại còn cành đại diện cho các kết hợp của các thuộc tính dẫn tới phân loại đó. Một cây quyết định có thể được phân lớp bằng cách chia tập hợp nguồn thành các tập con dựa theo một kiểm tra giá trị thuộc tính . Quá trình này được lặp lại một cách đệ qui cho mỗi tập con dẫn xuất. Quá trình đệ qui hoàn thành khi không thể tiếp tục thực hiện việc chia tách được nữa, hay khi một phân loại đơn có thể áp dụng cho từng phần tử của tập con dẫn xuất. Một bộ phân loại rừng ngẫu nhiên (random forest) sử dụng một số cây quyết định để có thể cải thiện tỉ lệ phân loại. Cây quyết định cũng là một phương tiện có tính mô tả dành cho việc tính toán các xác suất có điều kiện. Cây quyết định có thể được mô tả như là sự kết hợp của các kỹ thuật toán học và tính toán nhằm hỗ trợ việc mô tả, phân loại và tổng quát hóa một tập dữ liệu cho trước. Dữ liệu được cho dưới dạng các bản ghi có dạng: 1 2 3 ( , ) ( , , , ., , ) k x y x x x x y= Biến phụ thuộc (dependant variable) y là biến mà chúng ta cần tìm hiểu, phân loại hay tổng quát hóa. 1 2 3 , , .x x x là các biến sẽ giúp ta thực hiện công việc đó. Ví dụ Ta sẽ dùng một ví dụ để giải thích về cây quyết định: David là quản lý của một câu lạc bộ đánh golf nổi tiếng. Anh ta đang có rắc rối chuyện các thành viên đến hay không đến. Có ngày ai cũng muốn chơi golf nhưng số nhân viên câu lạc bộ lại không đủ phục vụ. Có hôm, không hiểu vì lý do gì mà chẳng ai đến chơi, và câu lạc bộ lại thừa nhân viên. 9 Mục tiêu của David là tối ưu hóa số nhân viên phục vụ mỗi ngày bằng cách dựa theo thông tin dự báo thời tiết để đoán xem khi nào người ta sẽ đến chơi golf. Để thực hiện điều đó, anh cần hiểu được tại sao khách hàng quyết định chơi và tìm hiểu xem có cách giải thích nào cho việc đó hay không. Vậy là trong hai tuần, anh ta thu thập thông tin về: Trời (outlook) (nắng (sunny), nhiều mây (clouded) hoặc mưa (raining)). Nhiệt độ (temperature) bằng độ F. Độ ẩm (humidity). Có gió mạnh (windy) hay không. Và tất nhiên là số người đến chơi golf vào hôm đó. David thu được một bộ dữ liệu gồm 14 dòng và 5 cột. Dữ liệu chơi golf Các biến độc lập Quang cảnh Nhiệt độ Độ ẩm Gió Chơi Nắng 85 85 không không Nắng 80 90 có không Âm u 83 78 không có Mưa 70 96 không có Mưa 68 80 không có Mưa 65 70 có không Âm u 64 65 có có Nắng 72 95 không không Nắng 69 70 không có Mưa 75 80 không có Nắng 75 70 có có Âm u 72 90 có có 10 . công nghệ phân lớp dữ liệu nói chung và phân lớp dữ liệu dựa trên cây quyết định nói riêng và thuật toán C4. 5. Việc phân tích đánh giá thuật toán có giá. trong phần thuật toán C4. 5. 3.2.3. Đánh giá cây quyết định trong phân lớp dữ liệu. 3.2.3.1. Sức mạnh của cây quyết định. Cây quyết định có 5 sức mạnh chính