Khái niệm– Là một cấu trúc cây phân cấp sử dụng trong bài toán phân lớp dựa trên dãy các câu hỏi/luật về thuộc tính của lớp – Biến thuộc tính của lớp có thể là dạng bất kỳ, nhưng các lớp
Trang 1CÂY QUYẾT ĐỊNH
Trang 2Khái niệm
– Là một cấu trúc cây phân cấp sử dụng trong bài toán phân lớp dựa trên dãy các câu hỏi/luật về thuộc tính của lớp
– Biến thuộc tính của lớp có thể là dạng bất kỳ, nhưng các lớp phải ở dạng định tính
– Ví dụ:
Trang 3Sử dụng cây quyết định
• Dự đoán mẫu hay phân lớp dữ liệu
– Các luật (phụ thuộc vào thứ tự ưu tiên các thuộc tính)
• Test data:
– Alex: Train
– Buddy: Bus
– Cherry: Train
Trang 4Tạo một cây quyết định
• Cây quyết định được xây dựng và huấn luyện dựa trên tập dữ liệu
• Quá trình tạo gồm hai giai đoạn:
– xây dựng
– cắt tỉa: Xác định và loại bỏ những nhánh nhiễu hoặc tách khỏi nhóm
Trang 5Các bước cơ bản xây dựng cây quyết định
• Gồm 2 bước:
– Phát triển cây quyết định: đi từ gốc, đến các nhánh, phát triển quy nạp theo hình thức chia để trị.
• Chọn thuộc tính “tốt” nhất bằng một độ đo đã định trước
• Phát triển cây bằng việc thêm các nhánh tương ứng với từng giá trị của thuộc tính đã chọn
• Sắp xếp, phân chia tập dữ liệu đào tạo tới node con
• Nếu các ví dụ được phân lớp rõ ràng thì dừng
• Ngược lại: lặp lại bước 1 tới bước 4 cho từng node con
– Cắt tỉa cây: nhằm đơn giản hóa, khái quát hóa cây, tăng độ chính xác
Trang 6Các bước cơ bản xây dựng cây quyết định
BuildTree(DataSet,Output)
• If all output values are the same in DataSet, return a leaf node that
says “predict this unique output”
• If all input values are the same, return a leaf node that says “predict
the majority output”
• Else find attribute X with highest Info Gain
• Suppose X has nX distinct values (i.e X has arity nX).
• Create and return a non-leaf node with nX children.
• The i’th child should be built by calling
BuildTree(DSi,Output)
Where DSi built consists of all those records in DataSet for which X = ith
distinct value of X.
Trang 7Độ đo thuộc tính
• Việc tính độ đo để lựa chọn thuộc tính quyết định đến hình dáng của cây
• Có nhiều độ đo, ứng với mỗi độ đo là thuật toán dựa cây quyết định như độ đo Gain, độ đo tỉ lệ Gain, độ đo Gini
• Các tiêu chí đánh giá độ đo càng tốt khi các tập con được phân chia càng trở nên “trong suốt”
Trang 8• Cây quyết định bị ảnh hưởng quá nhiều vào dữ liệu huấn luyện gây nên cây quá nhiều nhánh, độ chính xác kém trong những mẫu chưa biết
• Nguyên nhân:
– Dữ liệu nhiễu và tách rời khỏi nhóm
– Dữ liệu huấn luyện quá ít
– Các giá trị tối đa cục bộ trong tìm kiếm tham lam
• Khắc phục:
– cắt tỉa lại cây quyết định sau khi học
– cắt tỉa các luật sau khi chuyển cây về dạng luật
Trang 9Một số đại lượng dùng trong cây quyết định
– Entropy
– Gini Index
– Classification error
– Information Gain
– Second Iteration
– Third Iteration
Trang 10Thuật toán ID3
• 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 đó
• Học cây quyết định từ một tập các dữ liệu huấn luyện
– Đầu vào: Tập huấn luyện, ví dụ gồm các thuộc tính mô tả một tình huống, hay một đối tượng, và một giá trị phân loại của nó – Đầu ra: 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 rèn luyện
• xây dựng cây quyết định theo cách từ trên xuống
Trang 11Thuật toán ID3
Function induce_tree(tập_ví_dụ, tập_thuộc_tính)
begin
if mọi ví dụ trong tập_ví_dụ đều nằm trong cùng một lớp then
return một nút lá được gán nhãn bởi lớp đó
else if tập_thuộc_tính là rỗng then
return nút lá được gán nhãn bởi tuyển của tất cả các lớp trong tập_ví_dụ
Else
begin
chọn một thuộc tính P, lấy nó làm gốc cho cây hiện tại;
xóa P ra khỏi tập_thuộc_tính;
với mỗi giá trị V của P
begin
tạo một nhánh của cây gán nhãn V;
Đặt vào phân_vùngV các ví dụ trong tập_ví_dụ có giá trị V tại thuộc tính P;
Gọi induce_tree(phân_vùngV, tập_thuộc_tính), gắn kết quả vào nhánh V
end
end
end
Trang 12Thuật toán C4.5
• Là sự phát triển từ CLS và ID3, tư
tưởng thuật toán theo Hunt và
chiến lược phát triển theo độ sâu
• Pseudocode:
– Kiểm tra case cơ bản
– Với mỗi thuộc tính A tìm thông tin nhờ
việc tách thuộc tính A
– Chọn a_best là thuộc tính mà độ đo lựa
chọn thuộc tính “tốt nhất”
– Dùng a_best làm thuộc tính cho node chia
cắt cây.
– Đệ quy trên các danh sách phụ được tạo ra
bởi việc phân chia theo a_best, và thêm
các node này như là con của node
(1) ComputerClassFrequency(T); (2) if OneClass or FewCases return a leaf;
Create a decision node N;
(3) ForEach Attribute A ComputeGain(A);
(4) N.test=AttributeWithBestGain; (5) if (N.test is continuous)
find Threshold;
(6) ForEach T' in the splitting of T (7) If ( T' is Empty )
Child of N is a leaf else
(8) Child of N=FormTree(T');
(9) ComputeErrors of N;
return N
Trang 13Thuật toán C4.5
• Chuyển đổi sang luật: cắt tỉa cây
– Dạng luật: if A and B and C… then class X Không thỏa mãn điều kiện chuyển về lớp mặc định
– Xây dựng luật: 4 bước
• Mỗi đường đi từ gốc đến lá là một luật mẫu Đơn giản luật mẫu bằng cách bỏ dần điều kiện
mà không ảnh hưởng tới độ chính xác của luật.
• Các luật đã cắt tỉa được nhóm lại theo giá trị phân lớp tạo ra các tập con Với mỗi tập con, xem xét để lựa chọn luật để tối ưu hóa độ chính xác dự đoán của lớp gắn với tập luật đó
• Sắp xếp các tập luật trên theo tần số lỗi Lớp mặc định được tạo ra bằng cách xác định các case trong tập S không chứa trong các luật hiện tại và chọn lớp phổ biến nhất trong các case đó làm lớp mặc định
• Ước lượng đánh giá: các luật được ước lượng trên toàn tập S, loại bỏ luật làm giảm độ chính xác của sự phân lớp
– Hoàn thành: 1 tập các quy tắc đơn giản được lựa chọn cho mỗi lớp
Trang 14Thuật toán C4.5
• Ứng dụng vào bài toán phân lớp dữ liệu:
– Bước 1 (Học): xây dựng mô hình mô tả tập dữ liệu; khái niệm đã biết
• Input: tập dữ liệu có cấu trúc được tạo mô tả bằng các thuộc tính
• Output: Các luật If…Then
– Bước 2 (Phân loại): dựa trên mô hình đã xây dựng để phân lớp dữ liệu mới: đi từ gốc đến các nút lá nhắm rút ra lớp của đối tượng cần xét
• Xử lý với dữ liệu thuộc tính liên tục:
– Sử dụng kiểm tra dạng nhị phân: value(V) < h với h là hằng số ngưỡng (threshold) – h được tìm bằng cách:
• Quick sort sắp xếp các case trong S theo các giá trị của thuộc tính liên tục V đang xét =>V = {v1, v2, …, vm}
• hi = (vi + v(i+1))/2 Test phân chia dữ liệu:V <= hi hay V>hi => chia V thành V1={v1,v2,…, vi} và V2 = {vi+1, vi+2, …, vm} và có hi (i=1…m-1)
Trang 15Từ điển âm tiết
• Hướng xây dựng
– Dựa vào bộ phân tách phiên âm
– Dựa vào luật âm tiết
– Thống kê
Trang 16Từ điển âm tiết
• Thông kê:
– Thống kê các vần và khả năng ghép với các phụ âm đầu cuối
– Khối lượng công việc lớn, tiềm ẩn sai sót
• Bộ phân tách phiên âm
– Chưa hoàn chỉnh
– Không bỏ xót âm, nhưng xác nhận cả những tổ hợp vần và phụ âm không phát âm được
• Dựa vào luật phiên âm
- Cần xây dựng luật âm tiết đúng đắn
- Áp dụng học máy để bổ xung âm tiết mới