Cây quyết định là một công cụ mạnh và phổ biến dùng trong việc giải quyết bài toán phân lớp và dự đoán. Hiện nay, có rất nhiều các thuật toán được sử dụng trong việc xây dựng cây quyết định, hai thuật giải hiện nay vẫn còn được ứng dụng nhiều trong các lĩnh vực là CART và C4.5.
a) Một số khái niệm cơ sở
Cho
- D = {t1, …, tn} với ti=<ti1, …, tih>
- Một lược đồ CSDL bao gồm {A1, A2, …, Ah} - Tập các lớp C={C1, …., Cm}
Cây quyết định, hoặc cây phân lớp là cây có quan hệ với D theo các quy tắc sau:
- Mỗi nút con được gán nhãn với một thuộc tính, Ai
- Mỗi cung được gán nhãn với dự đoán gắn với thuộc tính tại nút cha
- Mỗi nút lá được gán nhãn một lớp, Cj
Trong bài toán phân lớp, bằng cách xuất phát từ gốc của cây quyết định, di chuyển dọc cây theo chiều từ trên xuống cho đến tận lá của cây, việc xác định điểm kết thúc chính là phân lớp của mẫu thử.
Phương pháp thực hiện của cây quyết định là dạng điển hình của tiếp cận theo phương pháp quy nạp trong việc khám khá tri thức. Để áp dụng cây quyết định trong giải quyết bài toán phân lớp, cần có các yêu cầu sau đây:
Mô tả thuộc tính-giá trị: Đối tượng phải được biểu diễn qua một tập cố định các thuộc tính.
Định nghĩa trước các lớp: Cây quyết định sử dụng phương pháp học có giám sát, vì vậy tất cả các lớp đều phải được xác định trước khi phân lớp một mẫu bất kỳ.
Các lớp có sự khác biệt: Mỗi một trường hợp lớp đều phải có các quy tắc rõ ràng trong việc xác định lớp, không mập mờ, không có tính đa trị.
Dữ liệu: Để đạt được hiệu quả, cần phải sử dụng hàng trăm, thậm chí hàng nghìn mẫu huấn luyện.
Một cây quyết định thực hiện cung cấp một đối tượng hoặc một trạng thái đã miêu tả bằng một tập các thuộc tính, và các đầu ra là “việc quyết định” yes/ no. Vì vậy cây quyết định là hiện thân của các hàm Boolean. Những hàm có một số lượng đầu ra lớn cũng có thể được trình bày qua cây quyết định, nhưng để đơn giản, thường sử dụng với đại số Boolean. Mỗi nút trong cây tương ứng với một giá trị kiểm tra của các thuộc tính, và các nhánh từ những nút được gán nhãn với giá trị phù hợp với kết quả kiểm tra. Mỗi nút lá trong cây xác định giá trị Boolean được trả về nếu lá đó được duyệt đến.
b) Thuật toán xây dựng cây quyết định
Phần lớn các thuật toán dùng trong việc xây dựng cây quyết định đều xuất phát chung từ một ý tưởng cơ bản, xuất phát theo hướng top – down, sử dụng phương pháp tìm kiếm tham lam trong không gian các trạng thái có thể của cây quyết định, xây dựng nên cây quyết định T từ tập các mẫu huấn luyện.
Thuật toán xây dựng cây quyết định ID3 Return a decision tree
Function DECISION-TREE-LEARNING(examples, attributes, default)
Inputs: exmples, Tập các mẫu
Attributes, tập các thuộc tính
Default, giá trị ngầm định cho điều đã được khẳng định mục tiêu Begin
If examples is empty then return default
Else
if all examples have the same classification then return the classification
else if attribute is empty then
return MAJORITY-VALUE(examples) else
best–CHOOSE-ATTRIBUTE(attributes, examples)
tree – a new decision tree with root test best
For each value vi of best do
examplesi - {elements of examples with best = vi} subtree–DECISION-TREE-
LEARNING(examplesi,attributes – best
MAJOTITY-VALUE(examples))
Add abrand to tree with label vi and subtree
subtree
End For
Return tree
Bảng 2.4 Thuật toán học cây quyết định
- Cây được khởi tạo gồm một nút, mô tả các mẫu dữ liệu huấn luyện.
- Nếu tất cả các mẫu đều thuộc cùng một lớp, nút đó trở thành nút lá và được gán nhãn lớp (bước 2 và bước 3).
- Ngược lại, thuật toán sẽ sử dụng một khái niệm gọi là độ đo thông tin thu được – information gain để chọn thuộc tính tốt nhất cho việc phân tách trên cây quyết định. Trong phiên bản của thuật toán ID3 này, tất cả các thuộc tính đều có kiểu giá trị liệt kê, rời rạc, nếu thuộc tính có kiểu giá trị là liên tục sẽ được rời rạc hoá. - Một phân nhánh sẽ được tạo ra theo các giá trị đã biết của thuộc
tính đó và các mẫu sẽ được phân hoạch theo các nhánh tương ứng - Quá trình phân hoạch, học đệ quy trên sẽ dừng khi một trong các
điều kiện sau thoả mãn:
o Tất cả các mẫu thuộc cùng một nút sẽ được gán nhãn cùng
một lớp.
o Không còn một thuộc tính nào mà trên đó các mẫu có thể
phân hoạch được. Trong trường hợp này, quyết định theo đa số (majority voting) sẽ được sử dụng, chuyển nút thành lá và gán nhãn lớp cho nút đó nếu trong mẫu huấn luyện, lớp đó chiếm đa số.
o Nếu không có mẫu nào cho nhánh test-attribute = ai , trong
trường hợp này, một lá được tạo với lớp chiếm đa số trong mẫu.
Ví dụ, chúng ta sẽ thực hiện các thao tác phân lớp trên cây với vấn đề có đợi hay không đợi để đặt chỗ tại nhà hàng. Mục đích ở đây là học
một việc xác định cho việc khẳng định mục tiêu WillWait (sẽ đợi), việc
quyết định được biểu diễn như một cây quyết định, giả sử chúng ta quyết định dựa trên danh sách các thuộc tính sau:
1. Alternate: Có hay không có một nhà hàng phù hợp gần đó.
2. Bar: Có hay không có một nhà hàng với khu đợi thoải mái trong đó.
3. Fri/Sat: Đúng vào ngày thứ sáu hay thứ bảy. 4. Hungry: Chúng ta có đói hay không.
5. Patrons: Có bao nhiêu người ở trong nhà hàng, thuộc tính này nhận các giá trị trong miền liệt kê: không có, có một số, kín nhà hàng.
6. Price: Mức độ giá cả của nhà hàng.
7. Raining: Ngoài trời có mưa hay không.
8. Reservation: Chúng ta có đặt chỗ trước hay không.
9. Type: Loại nhà hàng (Pháp, Ý, Thái Lan, hay Bungari).
10. WaitEstimate: Ước lượng thời gian đợi để nhận được chỗ và phục vụ, tính theo phút (0-10, 10-30, 30-60, > 60).
Về mặt logic, cây có thể được biểu diễn như là một sự kết hợp của những sự liên quan không thích hợp tương ứng với những hướng đi xuyên suốt đến cuối cây tại những node yes. Ví dụ, hướng đi đối với nhà hàng đầy khách (patrons = full) và một ước lượng thời gian đợi của chủ nhà hàng từ 10-30 phút (WaitEstimate = 10-30 phút) khi tác nhân không đói, thì được diến tả bởi một câu logic.
Tập dữ liệu huấn luyện gồm 12 mẫu được liệt kê trong bảng: Exampl
e
Attributes
Alt Bar Fri Hun Pat Price Rain Res Type Est
X1 Yes No No Yes Some $$$ No Yes French 0-10 Yes
X2 Yes No No Yes Full $ No No Thai 30-60 No
X3 No Yes No No Some $ No No Burger 0-10 Yes
X4 Yes No Yes Yes Full $ No No Thai 10-30 Yes
X5 Yes No Yes No Full $$$ No Yes French >60 No
X6 No Yes No Yes Some $$ Yes Yes Italian 0-10 Yes
X7 No Yes No No None $ Yes No Burger 0-10 No
X8 No No No Yes Some $$ Yes Yes Thai 0-10 Yes
X9 No Yes Yes No Full $ Yes No Burger >60 No
X10 Yes Yes Yes Yes Full $$$ No Yes Italian 10-30 No
X11 No No No No None $ No No Thai 0-10 No
X12 Yes Yes Yes Yes Full $ No No Burger 30-60 Yes
Bảng 2.5 Những mẫu cho lĩnh vực nhà hàng.
Quá trình xây dựng cây là quá trình chúng ta tìm kiếm thuộc tính có giá trị phân loại nhất. Hình 2.1(a) cho thấy rằng thuộc tính Patrons là một thuộc tính khá quan trọng, bởi vì nếu giá trị là none or some, thì chúng ta rời bỏ những tập mà chúng ta có thể trả lời rạch ròi (No và Yes cho riêng từng trường hợp). (Nếu giá trị là Full chúng ta sẽ cần phải kiểm tra thêm).
Ở hình 2.2(b) chúng ta thấy rằng Type là thuộc tính kém quan trọng hơn,
bởi vì nó cho chúng ta 4 kết luận có thể suy ra, mỗi kết luận có vài câu trả lời khẳng định hoặc phủ định. Chúng ta xem xét tất cả những thuộc tính có thể trong phạm vi này, và chọn một thuộc tính quan trọng nhất như việc kiểm tra gốc. Chúng ta bỏ qua việc việc cân nhắc so sánh chi tiết về mức độ quan trọng giữa các thuộc tính, bởi vì nó không ảnh hưởng đến thuật toán cơ bản. Bây giờ ta giả sử thuộc tính quan trọng nhất là Patrons.
Hình 2.1 Sự phân chia các mẫu bởi quá trình kiểm tra các thuộc tính.
Sau khi việc kiểm tra thuộc tính đầu tiên tách ra các mẫu, mỗi một kết quả là một cây quyết định mới cho vấn đề học của bản thân nó, với ít mẫu và ít thuộc tính hơn. Có 4 trường hợp phải xem xét cho những vấn đề đệ qui này:
- Nếu đồng thời có một số mẫu khẳng định và phủ định, thì chọn thuộc
tính tốt nhất để tách chúng. Hình 2.1(c) cho thấy thuộc tính Hungry
đang được sử dụng để tách những mẫu còn lại.
- Nếu tất cả những mẫu còn lại là khẳng định (hoặc tất cả là phủ định), thì chúng ta đã hoàn thành: chúng ta có thể trả lời Yes hoặc No. Hình
2.1(c) cho thấy những mẫu này trong các trường hợp None và some.
- Nếu không có mẫu nào bị loại bỏ thì có nghĩa là không có mẫu nào được quan sát, và chúng ta trở lại giá trị ngầm định đã được sắp đặt từ việc phân loại phần đông tại nút cha.
- Nếu không có thuộc tính nào bị loại bỏ, trừ cả hai loại mẫu khẳng định và phủ định, chúng ta có một vấn đề. Nó có nghĩa rằng những mẫu này nhận được sự diễn tả tương tự một cách đúng đắn nhưng
các sự phân loại khác biệt. Điều này xảy ra khi một số dữ liệu không chính xác; chúng ta nói rằng có dữ liệu tạp nhiễu. Nó cũng xảy ra khi những thuộc tính không đưa đủ thông tin để diễn tả đầy đủ trạng thái, hoặc khi lĩnh vực thực sự không tuân theo thuyết quyết định. Một phương pháp đơn giản bỏ qua vấn đề là chọn theo đa số.
Chúng ta tiếp tục áp dụng thuật toán DECISION-TREE-LEARNING cho đến khi chúng ta nhận được cây hiển thị ở hình 2.2
Hình 2.2 Cây quyết định nhận được từ tập đào tạo 12 mẫu
Việc đánh giá thuật học là tốt nếu nó đưa ra các giả thuyết mà thực hiện công việc dự đoán tốt sự phân loại các mẫu không thấy. Chúng ta sẽ xem một phương pháp luận đánh giá chất lượng dự đoán theo cơ sở lập luận.
Hiển nhiên, một dự đoán là tốt nếu nó đưa ra là đúng, do vậy chúng ta có thể đánh giá chất lượng của các giả thuyết bằng việc kiểm tra những
dự đoán của nó dựa vào sự phân loại chính xác một khi chúng ta biết nó.
Chúng ta thực hiện điều này trên một tập các mẫu đã biết như tập kiểm tra.
Nó thích hợp hơn theo hệ phương pháp dưới đây: 1. Sưu tập một số lượng lớn các mẫu.
2. Chia nó thành 2 tập tách rời: tập đào tạo và tập kiểm tra.
3. Sử dụng thuật toán học với tập đào tạo như các mẫu để sinh ra một giả thuyết H.
4. Đo tỷ lệ % các mẫu trong tập kiểm tra được phân loại chính xác bởi
H.
5. Lặp lại các bước 1 đến 4 với các tập đào tạo có kích thước khác nhau và kích thước của mỗi tập đào tạo là được lựa chọn ngẫu nhiên.
Kết quả của hệ phương pháp này là một tập dữ liệu có thể được xử lý để đưa ra chất lượng dự đoán trung bình như một hàm theo kích thước của tập đào tạo.
c) Đánh giá các thuật toán học cây quyết định Ưu điểm
Các cây quyết định có thể dễ dàng trích rút các luật dễ hiểu: đây là
ưu điểm mạnh nhất của kỹ thuật này. Nếu một lĩnh vực phức tạp có thể phân tích để chuyển phân lớp về cách xác định miền có dạng hình chữ nhật thì cây quyết định có thể có kích thước rất lớn, phức tạp nhưng vẫn đảm bảo tính hiệu quả cao. Ngoài ra, do rất dễ dàng theo dõi một đường đi từ gốc đến một nút lá, mà thực chất là quá trình suy diễn thì việc giải thích cho các kết luận của cây quyết định thực hiện không quá khó khăn. Vì vậy, cây quyết định rất thích hợp để giải quyết các bài toán đòi hỏi tính giải thích cao, ví dụ như hệ chẩn đoán bệnh….
Cây quyết định giải quyết bài toán phân lớp mà không yêu cầu nhiều tính toán. Trong thực hành, các thuật toán sinh cây chỉ yêu cầu một hệ số phân nhánh và một số phép kiểm tra đơn giản tại từng nút. Các thao tác thông thường tại các nút bao gồm phép so sánh các số, thiết lập quan hệ và tạo kết nối đơn giản, khi cài đặt các thao tác này trên máy tính, chỉ cần các phép toán so sánh và phép toán số học nguyên, nên tốc độ thực hiện rất nhanh, chi phí thấp.
Cây quyết định có thể áp dụng cho các dữ liệu có kiểu liên tục hoặc
kiểu liệt kê. Kiểu liệt kê là một vấn đề khó khăn cần giải quyết đối với các kỹ thuật thống kê hoặc mạng neural.
Cây quyết định chỉ rõ mô hình học rất rõ ràng khi xác định những
thuộc tính quan trọng nhất trong quá trình phán đoán và phân lớp.
Hạn chế
Tính hiệu quả của mô hình cây quyết định không cao trong các bài
toán ước lượng với mục tiêu là phỏng đoán giá trị của các đại lượng kiểu liên tục, ví dụ lợi nhuận kinh doanh thu được, nhịp tim của bệnh nhân…. Cây quyết định cũng gặp khó khăn khi xử lý dữ liệu chuỗi thời gian (time – series data) để dự đoán xu hướng của các mẫu tiếp theo trong khai phá mẫu.
Độ tin cậy không cao với phân lớp nhiều lớp: một vài thuật toán học
cây quyết định chỉ có thể thực hiện tốt nếu giải quyết bài toán có dạng đầu ra nhị phân (yes/no, accept/reject). Lỗi khi phân lớp sai sẽ tăng nhanh nếu cây có quá nhiều mức and/or với nhiều nhánh tại từng nút.
Chi phí tính toán và lưu trữ khi huấn luyện cao: quá trình xây dựng
cây là một quá trình tương đối mất nhiều chi phí trong tính toán và lưu trữ. Tại mỗi nút, từng thuộc tính ứng cử viên để phân tách phải được lưu trữ trước khi thuộc tính tốt nhất để phân nhóm tìm ra.
Trong một vài thuật toán, sự kết nối giữa các thuộc tính được sử dụng và vì vậy quá trình tìm kiếm phải thực hiện tối ưu hoá trọng số kết nối giữa các thuộc tính. Các thuật toán lược bỏ cây có thể hoạt động không hiệu quả trong các trường hợp có rất nhiều các cây con ứng cử viên cần được chuẩn hoá và so sánh.
Khó khăn khi vùng phân lớp không có dạng hình chữ nhật: phần lớn
các thuật toán học cây quyết định chỉ làm việc với một thuộc tính tại một thời điểm. Việc phân lớp theo dạng hình chữ nhật như vậy khi áp dụng vào thực tế khó đạt hiệu quả với các ứng dụng phức tạp.