Thuật toán C4.5

Một phần của tài liệu Thuật toán ID3 và chương trình mô phỏng chuẩn đoán bệnh cúm h1n2 (Trang 40 - 48)

Thuật toán C4.5 đƣợc phát triển và công bố bởi Quinlan vào năm 1993. 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ố (Numeric atributes) 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 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:

( ) ( ) ( ) ( ) Mạnh Nhẹ Không Có Có Trung bình Không Có Mƣa Âm u Nắng Quang cảnh Gió Độ ẩm Cao

35 Với

( ) ∑ | | || | | || ( )

( ) Trong đó:

Value(X) là tập các giá trị của thuộc tính X.

là tập con của tập T ứng với thuộc tính X = giá trị là

Đối với cá thuộc tính liên tục, tiến hành phép thử nhị phân cho mọi giá trị của thuộc tính đó. Thuật toán Quicksort đƣợc dùng để thu thập các giá trị Entropy gain của tất cả các phép thử nhị phân một cách bằng cách tiến hành xắp xếp các dữ liệu theo giá trị của thuộc tính liên tục đó.

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: Function xay_dung_cay(T)

{

1. <Tính toán tần xuất các giá trị trong các lớp của T>;

2. If<Kiểm tra các mẫu, nếu thuộc cùng một lớp hoặc có rất ít mẫu khác lớp>Then<Trả về 1 nút lá>

Else<Tạo một nút quyết định N>;

3. For<Với mỗi thuộc tính A>Do<Tính giá trị Gain(A)>;

4. <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). Gọi N.test là thuộc tính có Gain lớn nhất>;

5.If<Nếu N.test là thuộc tính liên tục>Then<Tìm ngƣỡng cho phép tách của N.test>;

6. For<Với mỗi tập con T' đƣợc tách ra từ tập T>Do

(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.)

36 <Gán nút con này của nút N là nút lá>;

Else

8. <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 xay_dung_cay(T'), với tập T'>;

}

9. <Tính toán các lỗi của nút N>; <Trả về nút N>;

}

Giả sử tập mẫu dữ liệu T đƣợc mô tả bằng m thuộc tính ứng viên. Số lƣợng mẫu trong tập dữ liệu T đƣợc ký hiệu là | |. Các thuộc tính dùng để phân chia tập mẫu đƣợc ký hiệu là Quá trình cây đƣợc tiến hành từ trên xuống dƣới. Đầu tiên cần xác định nút gốc, sau đó xác định các nhánh xuất phát từ gốc này. Tập T đƣợc chia thành các tập con theo các giá trị của thuộc tính đƣợc xét tại nút gốc.

Tìm thuộc tính phân lớp tại nút gốc: Do T có m thuộc tính ứng viên nên có m khả năng để lựa chọn thuộc tính. Một số thuật toán thì trong quá trình xây dựng cây mỗi thuộc tính chỉ đƣợc xét một lần, nhƣng với thuật toán này một thuộc tính có thể đƣợc xét nhiều lần.

Xét thuộc tính X có n giá trị lần lƣợt là Khi đó, tập T có thể chia ra thành n tập con ( ̅̅̅̅̅) theo các giá trị của khi

Tần xuất ( ) là số lƣợng mẫu của tập T nào đó đƣợc xếp vào lớp con . Xác xuất để một mẫu thuộc lớp khi lấy bất kỳ một mẫu từ T là:

( )

| | ( )

Theo lý thuyết thông tin, số lƣợng các thông tin chứa trong mẫu phụ thuộc vào khả năng xác xuất của nó:

37

Loga đƣợc dùng là loga nhị phân nên công thức sẽ đƣa ra số lƣợng biểu diễn bằng bit. Xét công thức:

( ) ∑ ( ) | | ( ( ) | | ) ( )

Công thức này đánh giá số lƣợng thông tin trung bình cần thiết để phân lớp các mẫu trong tập hợp T. Áp dụng công thức sau khi phân chia theo X, công thức thu đƣợc có dạng sau:

( ) ∑| |

| | ( )

( )

Khi đó công thức sẽ đƣa ra tiêu chuẩn để lựa chọn thuộc tính khi phân lớp:

( ) ( ) ( ) ( )

Công thức (2.7) đƣợc tính toán với các thuộc tính và thuộc tính đƣợc lựa chọn tại một nút là thuộc tính có Gian lớn nhất. Thuộc tính đƣợc chọn sẽ đƣợc dùng để phân lớp tập mẫu dữ liệu tại nút đó. Các nhánh sau khi đƣợc phân chia thì tiếp tục đƣợc tính toán để xác định thuộc tính phân loại tiếp theo để xây dựng cây. Quá trình đƣợc tiếp tục cho đến khi các mẫu trong tập dữ liệu đƣợc phân lớp hoàn toàn. Nếu một tập nào đó có các mẫu thuộc cùng một lớp thì đánh dấu nó là một nút lá.

Ở đây cần giải thích tại sao công thức (2.7) phải đạt giá trị lớn nhất? Từ tính chất của Entropy nhận thấy Entropy đạt giá trị lớn nhất khi các thông tin của nó có xác suất bằng nhau. Trong trƣờng hợp này Entropy (2.6) đạt giá trị lớn nhất khi tần xuất gặp các mẫu trong tập hợp T bằng nhau. Tiếp theo cần chọn thuộc tính để cho khi phân chia lớp theo nó thì có khả năng xuất hiện lớp cao nhất. Điều này xảy ra khi (2.6) đạt giá trị nhỏ nhất khi đại lƣợng Gain trong công thức (2.7) đạt giá trị lớn nhất.

Đối với các thuộc tính số (thuộc tính liên tục), cần phải chọn một ngƣỡng (Threshold) nào đó để so sánh giá trị trong thuộc tính. Giả sử thuộc tính có số tập hợp giá trị hữu hạn phận biệt đƣợc biểu diễn bằng các giá trị

38

(Với giả thiết rằng ). Trƣớc tiên các giá trị của thuộc tính này sẽ đƣợc sắp xếp theo các giá trị cụ thể sau đó chọn bất kỳ một giá trị giữa và để chia các mẫu thành hai tập hợp. Một giá trị nằm bên trái và một giá trị nằm bên phải. Có thể chọn giá trị trung bình của và nhƣ sau:

( )

Chia T thành 2 tập là và nhƣ sau:

* | +và * | +

Ứng với mỗi giá trị V nhƣ thế sẽ tính đƣợc giá trị Gain tƣơng ứng theo phép tách nhƣ trên. Phép tách nào đƣa ra đƣợc giá trị Gain ứng với thuộc tính X và tập mẫu T theo các giá trị của thuộc tính X.

Làm việc với thuộc tính đa trị, đối với cách tính giá trị Gain nhƣ công thức (2.7) thì thuật toán sẽ không phù hợp với các thuộc tính có rất nhiều giá trị và trƣờng hợp xấu nhất là thuộc tính mà mỗi giá trị của nó thuộc một mẫu khác nhau. Tức là nếu chia các mẫu theo các thuộc tính này thì mỗi tập con chỉ chứa duy nhất một mẫu. Với cách tính giá trị Gain nhƣ trên thì thuộc tính nhƣ thế sẽ đƣợc chọn trƣớc. Bởi vì Gain của chúng đạt giá trị lớn nhất theo công thức (2.7) do ∑ | |

| | ( )

đạt giá trị nhỏ nhất hoặc bằng 0 (bằng 0 nếu các giá trị riêng biệt của thuộc tính nằm trên các mẫu riêng biệt). Nhận thấy sự phân lớp mà mỗi lớp chỉ chứa một mẫu thì sự phân lớp này là vô nghĩa bởi vì không tìm ra đƣợc mối quan hệ giữa các thuộc tính do thuật toán sẽ chọn thuộc tính có giá trị Gain cao nhất (chính là thuộc tính có nhiều giá trị ở trên). Rồi sau đó nó có thể sẽ dừng và các thuộc tính còn lại bị bỏ qua. Chẳng hạn nhƣ việc phân loại sinh viên theo mã sinh viên thì sẽ là vô nghĩa.

Để khắc phục vấn đề này Quinlan đƣa ra hàm GainRatio thay thế cho hàm Gain, hàm này đƣợc dùng để tính hiệu quả của một thuộc tính cho sự phân lớp dữ liệu. Hàm GainRatio đƣợc tính thông qua hàm SplitInfo (SplitInformation) đƣợc xác định nhƣ sau:

39

( ) ∑ ( )

( )

Công thức đá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 con. Xét biểu thức sau:

( ) ( )

( ) ( )

Giả sử biểu thức là tiêu chuẩn để đánh giá việc lựa chọn thuộc tính phân loại. Nếu dùng GainRatio làm tiêu chí thì các thuộc tính sẽ có rất nhiều giá trị không đƣợc ƣu tiên trƣớc. Trong trƣờng hợp này mẫu số Gain đạt giá trị lớn nhất dẫn tới GainRatio đạt giá trị nhỏ nhất thậm chí bằng 0 (trƣờng hợp mỗi mẫu có một giá trị thuộc tính đang xét khác nhau). Mặc dù đã cải tiến tiêu chuẩn để lựa chọn khi phân loại nhƣng các nút và lá chứa số lƣợng các mẫu rất nhỏ vẫn có thể xảy ra. Để tránh tình trạng này nguyên tắc sau đƣợc đƣa vào sử dụng: Khi phân lớp tập hợp T cần ít nhất 2 tập hợp con có số lƣợng mẫu lớn hơn K (K=2). Trong trƣờng hợp nguyên tắc này không đƣợc thỏa mãn thì quá trình phân chia tập hợp con chấm dứt và nút đƣợc gọi là nút lá. Có thể với nguyên tắc này thì có những mẫu liên hệ đến hai lá khác nhau. Trong tình huống đó, sẽ có một lá đƣợc chọn là lá có mẫu gặp thƣờng xuyên hơn trong nút. Còn nếu số lƣợng mẫu thuộc hai lá bằng nhau thì lá đƣợc chọn là lá có nhãn lớp đƣợc gặp nhiều hơn trong nhánh dẫn xuất trực tiếp tới chúng.

Làm việc với dữ liệu bị thiếu: Thuật toán vừa xây dựng dựa trên giả thuyết tất cả các thuộc tính đã đƣợc chọn đều tồn tại trên tất cả các bản ghi. Nhƣng trong thực tế, xẩy ra hiện tƣợng dữ liệu bị thiếu, tức là ở một số mẫu dữ liệu có những thuộc tính không đƣợc xác định, mâu thuẫn hoặc không bình thƣờng. Vì vậy đối với trƣờng hợp dữ liệu bị thiếu cần đƣợc xem xét kỹ hơn. Để xử lý trƣờng hợp này cách đơn giản nhất là bỏ qua các mẫu với giá trị bị thiếu, nếu làm nhƣ vậy thì có thể dẫn tới tình trạng thiếu mẫu học. Một cách khác là có thể xử ký giá trị bị thiếu nhƣ là một giá trị chắc chắn khác. Phƣơng pháp này chỉ có thể thực hiện nếu nhƣ giá trị bị thiếu có một ý nghĩa chắc

40

chắn, nhƣng không phải lúc nào phƣơng pháp này cũng khả thi. Để xử lý đƣợc các vấn đề trên Quinlan đƣa ra cách tính giá trị Gain và GainRatio đối với dữ liệu có các thuộc tính bị thiếu nhƣ sau:

( ) ∑ ( | | ) ( ( | | )) ( )

( ) ∑| | | | ( )

( )

Trong trƣờng hợp này, tần số ( ) chỉ đƣợc tính riêng với các mẫu với giá trị trên thuộc tính L đã xác định. Khi đó công thức (2.7) đƣợc viết lại bằng công thức:

( ) | | | | ( ( ) ( )) ( )

Tƣơng tự thay đổi công thức (2.10). Nếu phép kiểm tra có N giá trị đầu vào thì công thức đƣợc tính nhƣ trong trƣờng hợp chia N tập hợp ban đầu thành (N+1) tập hợp con.

Giả sử phép thử X có các giá trị đƣợc lựa chọn theo công thức (2.12), vậy cần phải xử lý nhƣ thế nào với các dữ liệu bị thiếu? Giả sử mẫu từ tập hợp T với đầu ra là có liên quan đến tập hợp thì khả năng mẫu đó thuộc tập hợp là 1.

Giả sử rằng mỗi mẫu trong có một chỉ số xác định, xác suất thuộc tập hợp . Nếu mẫu có giá trị thuộc tính L có trọng số bằng 1. Nếu trong trƣờng hợp ngƣợc lại, thì mẫu này liên quan đến tập con với xác suất tƣơng ứng là: | | | | | | | | | | | | Dễ thấy tổng các xác suất thì bằng 1: ∑| | | | ( )

41

Tóm lại giải pháp này đƣợc phát biểu nhƣ sau: Xác suất xuất hiện của các giá trị bị thiếu tỷ lệ thuận với xác suất xuất hiện của các giá trị không thiếu.

Ví dụ 4: Từ 14 mẫu của bảng dữ liệu 2.1, nhận thấy trong tập thuộc tính đích S có 9 mẫu thuộc lớp dƣơng và 5 mẫu thuộc lớp âm (Ký hiệu là [9+, 5-] ). Do đó: ( ) ( ) đƣợc tính nhƣ sau: ( ) ( ) ( ) ( ) ( )

Tƣơng tự với các thuộc tính còn lại: Gain(S, Độ ẩm) Gain(S, Nhiệt độ) Gain(S, Gió) = 0,151 = 0,029 =0,048

Gain(S, Quang cảnh) lớn nhất nên thuộc tính Quang cảnh đƣợc chọn làm nút phân tách cây.

Sau khi lập đƣợc cấp đầu tiên của cây quyết định, xét nhánh Nắng. Tiếp tục lấy Entropy và Gain cho nhánh Nắng nhƣ sau:

Gain( , Độ ẩm) Gain( , Nhiệt độ) Gain( Gió) = 0,970 = 0,570 = 0,019

Nhƣ vậy thuộc tính độ ẩm có hiệu suất phân loại cao nhất trong nhánh Nắng nên thuộc tính Độ ẩm đƣợc chọn làm nút kế tiếp. Tƣơng tự nhƣ vậy đối với các nhánh còn lại của cây.

Khái niệm độ lợi thông tin Gain có xu hƣớng ƣu tiên các thuộc tính có số lƣợng lớn các giá trị. Nếu thuộc tính D có giá trị riêng biệt cho mỗi bảng ghi (Thuộc tính Ngày ở bảng dữ liệu 2.1), thì Entropy(S, D) = 0, nhƣ vậy Gain(S, D)

42

sẽ đạt giá trị cực đại. Rõ ràng, một phân vùng nhƣ vậy thì việc phân loại là vô ích.

Thuật toán C4.5, một cải tiến của ID3, mở rộng cách tính Information Gain thành Gain Ratio để cố gắng khắc phục sự thiên lệch.

Tính Gain Ratio cho các thuộc tính ở bảng dữ liệu 2.1.

( ) ( ) ( ) Tƣơng tự: GainRatio(S, Nhiệt độ) GainRatio(S, Độ ẩm) GainRatio(S, Gió) = 0,0187 = 0,151 = 0,049

GainRatio(S, Quang cảnh) có giá trị lớn nhất nên thuộc tính Quang cảnh đƣợc chọn làm nút phân tách cây. Tƣơng tự với các thuộc tính còn lại cây quyết định thu đƣợc nhƣ sau:

Hình 2.12. Cây quyết định thu được sử dụng thuật toán C4.5

Một phần của tài liệu Thuật toán ID3 và chương trình mô phỏng chuẩn đoán bệnh cúm h1n2 (Trang 40 - 48)

Tải bản đầy đủ (PDF)

(70 trang)