Trong thực tế, có một phương pháp khá thành công cho việc tìm kiếm các giả thuyết có độ chính xác cao mà chúng ta có thể gọi nó là kỹ thuật: lược sau luật (rule post−pruning). Luật post−pruning gồm các bước sau đây:
Suy cây quyết định từ tập ví dụ huấn luyện, phát triển cây cho đến khi dữ liệu huấn luyện phù hợp đến mức có thể và cho phép xuất hiện overfitting.
Chuyển đổi cây sang một tập các luật tương đương bằng cách tạo ra một luật cho mỗi đường đi từ nút gốc đến nút lá.
Loại bớt (tổng quát hoá) mỗi luật bằng cách loại bỏ bất kỳ điều kiện nào dẫn đến sự cải thiện độ chính xác của nó.
Sắp xếp các luật đã bị loại theo độ chính xác của nó, và xem xét chúng trong chuỗi này trong các trường hợp phân loại sau đó.
Hình 3.8. Cây quyết định
Theo luật post−pruning, một luật được phát sinh cho mỗi nút lá trên cây. Mỗi thuộc tính kiểm tra theo một đường từ gốc đến lá tương ứng với một tiền luật (precondition) và sự phân lớp tại nút lá tương ứng với luật kết quả (postcondition). Ví dụ, nhánh bên trái nhất của cây trong hình 4.11 được luật hoá như sau:
If (Outlook = Sunny)Λ(Humidity = High) Then Playtennis = No
Sau đó, mỗi luật bị lược bỏ bằng cách loại bỏ bất kỳ precondition nào mà không làm giảm đi độ chính xác của nó. Ví dụ, luật post−running sẽ xem xét việc loại bỏ tiền luật (Outlook = Sunny) và (Humidity = High). Nó sẽ lựa chọn bất cứ bước nào cho ra sự cải thiện lớn nhất độ chính xác của luật, sau đó sẽ xét đến việc thu giảm tiền luật thứ 2 như là bước thu giảm cao hơn. Không bước loại bỏ nào được thực hiện nếu nó làm giảm độ chính xác của luật.
Sự chuyển đổi cây quyết định thành những luật trước khi tỉa có 3 thuận lợi chính sau đây:
Trong những ngữ cảnh khác nhau, việc chuyển thành những luật cho phép phân biệt một nút cây quyết định được sử dụng. Bởi vì mỗi đường phân biệt thông qua nút cây quyết định cho ra một luật phân biệt, sự cắt tỉa cây quyết định xem xét việc kiểm tra các thuộc tính có thể tạo thành những đường khác nhau.
Việc chuyển thành luật loại bỏ sự khác biệt giữa thuộc tính kiểm tra xảy ra gần với gốc của cây với những thuộc tính kiểm tra xảy ra gần với những lá. Như vậy chúng ta có thể tránh được sự lộn xộn trong vấn đề kế toán như là làm thế nào để tổ chức lại cây nếu nút gốc bị cắt tỉa.
Chuyển thành luật làm tăng khả năng dễ đọc. Thể hiện bằng luật thường dễ hiểu hơn đối với con người.
GainRatio (S,A) = SplitInformation (S,A) ) , (S A Gain
(4.5)
Chú ý rằng SplitInformation ngăn chặn lựa chọn các thuộc tính có nhiều giá trị. Ví dụ, xem xét một tập n ví dụ được tách với thuộc tính A (Ví dụ “Day”). Trong trường hợp này, giá trị SplitInformation là log2n. Ngược lại thuộc tính lôgic B tách n ví dụ thành hai phần có SplitInformation là 1. Nếu các thuộc tính A và B tạo ra cùng một lợi thế thông tin thì rõ ràng B sẽ có điểm cao hơn theo đại lượng GainRatio.
Một vấn đề thực tế là sử dụng GainRatio thay cho Gain để lựa chọn các thuộc tính thì mẫu số có thể bằng 0 hoặc rất nhỏ khi |Si|≈|S|. Điều này tạo ra GainRatio không định nghĩa được hoặc rất lớn với thuộc tính có cùng giá trị cho tất cả các thành phần của S. Để tránh việc lựa chọn các thuộc tính chỉ trên cơ sở này, chúng ta có thể chấp nhận một kinh nghiệm là đầu tiên tính toán Gain cho mỗi thuộc tính, sau đó áp dụng GainRatio chỉ kiểm tra cho các thuộc tính này với giá trị Gain trên trung bình.
1.12 3.7 Tóm tắt và kết luận
Học cây quyết định cung cấp một phương pháp thực tiễn cho việc học đối với những hàm giá trị rời rạc khác. Họ giải thuật ID3 suy diễn ra cây quyết định bằng việc đi từ gốc xuống các nút lá.
ID3 tìm kiếm không gian giả thuyết đầy đủ. Bằng cách đó nó tránh những khó khăn liên quan đến tính gần đúng mà được xem như giới
hạn của tập hợp những giả thuyết: hàm mục tiêu đó có thể không thể hiện trong không gian giả thuyết.
Khuynh hướng qui nạp ẩn trong ID3 bao gồm một sự ưu tiên cho những cây nhỏ.
Overfitting training data là một vấn đề quan trọng trong học cây quyết định. Những phương pháp sử dụng cho post-pruning cây quyết định trở nên quan trọng trong việc tránh overfitting trong học cây quyết định. Rất nhiều những mở rộng của giải thuật ID3 đã được phát triển theo
nhiều nguyên cứu khác nhau. Những phương pháp này bao gồm post- pruning tree, handing real-values attributes, việc xử lý các ví dụ huấn luyện với missing attribute values, cải tiến độ chính xác trên cây quyết định, sử dụng những đánh giá chọn lựa thuộc tính khác hơn information gain và xem xét đến những chi phí liên quan đến những thuộc tính.
4. Xây dựng và cài đặt hệ thống
Thuật toán được cài đặt trên ngôn ngữ Java. Chương trình bao gồm:
Đầu vào: Một tập hợp các ví dụ. Mỗi ví dụ bao gồm các thuộc tính mô tả một đối tượng nào đó và một giá trị phân loại của nó. Đầu vào có thể nhập trực tiếp vào trong ô InputData hoặc mở file .txt hoặc .dat. Dữ liệu nhập vào phải chú ý các điểm sau:
Dòng đầu tiên chứa tên của các thuộc tính. Các dòng tiếp theo chứa giá trị của thuộc tính. Số lượng thuộc tính là số lượng từ trong một dòng.
Trong một thuộc tính, cùng một giá trị thuộc tính phải viết giống nhau. Nếu viết khác nhau thì sẽ tạo ra cây quyết định không chính xác. Ví dụ: với thuộc tính PlayTennis có giá trị là “No”, những giá trị còn lại mang giá trị “No”, khi nhập cũng phải viết là “No”,không viết “no”, “NO”, “nO”…
Không được để dòng trắng nằm giữa các dòng giá trị. Các từ trong cùng một dòng cách nhau bởi khoảng trắng.
Ví dụ, dữ liệu nhập vào bao gồm 4 thuộc tính cùng với giá trị của chúng: Outlook (sunny, overcast, rain), Temperature (Hot, Mild, Cool), Humidity (High, Normal), Wind (Weak, Strong) và thuộc tính phân loại là PlayTennis (Yes, No). Các thuộc tính kết hợp với nhau tạo thành ví dụ huấn luyện như sau:
Outlook Temperature Humidity Wind PlayTennis
sunny Hot High Weak No
sunny Hot High Strong No
Overcast Hot High Weak Yes
Rain Mild High Weak Yes
Rain Cool Normal Weak Yes
Rain Cool Normal Strong No
Overcast Cool Normal Strong Yes
sunny Mild High Weak No
sunny Cool Normal Weak Yes
Rain Mild Normal Weak Yes
sunny Mild Normal Strong Yes
Overcast Mild High Strong Yes
Overcast Hot Normal Weak Yes
Rain Mild High Strong No
Bảng 3.1 Tập dữ liệu huấn luyện cho khái niệm “PlayTennis”
Đầu ra: Cây quyết định có khả năng phân loại các ví dụ trong tập dữ liệu huấn luyên. Trong chương trinh đã tạo ra cây quyết định thể hiện dưới dạng luật hay cây quyết định dạng TreeView (mặc dù chưa thể hiện chính xác dạng TreeView).
Các chức năng chính của chương trình
Mở dữ liệu đã tồn tại ( ) hoặc vào File chọn Open File.
Lưu lại dữ liệu sau khi tạo mới hoặc chỉnh sửa dữ liệu đã tồn tại( ) hoặc vào File chọn Save.
Tạo cây quyết định cơ bản ( ) hoặc vào Run chọn DecisionTree.
Tạo cây quyết định thể hiện dưới dạng luật ( ) hoặc vào Run chọn
DecisionTreeRuler.
Chức năng Edit dùng làm thay đổi màu nền, màu chữ trong Result of program.
Hình 4.1 Giao diện của chương trình
Sử dụng dữ liệu ở bảng 2.2 ta có kết quả của chương trình. Có thể mở dữ liệu có sẵn hoặc tự nhập vào trong InputData. Đầu tiên là hiển thị cây quyết định ở dạng luật.
Hình 4.2 Hiển thị cây quyết định ở dạng luật
Sau đó ta có thể lựa chọn hiển thị cây quyết định ở dạng cây đơn giản như hình sau:
Hình 4.3. Hiển thị cây quyết định dạng TreeView
Chương 4: Kết quả nghiên cứu 1.13 Đánh giá kết quả
Trong khuôn khổ đề tài “Tìm hiểu về cây quyết định trong xây dựng tri thức và ứng dụng”, tôi đã đạt được một số kết quả như sau:
Nghiên cứu lý thuyết về Trí tuệ nhận tạo. Nghiên cứu lý thuyết học cây quyết định.
Xây dựng được chương trình hiển thị cây quyết định dạng đơn giản và hiển thị cây quyết định dưới dạng các luật.