Phát hiện luật bằng cách sử dụng siêu phằng tối ưu theo hướng tiếp cận thô

Qua kết quảthực nghiệm của chương trình trong bảng 16 chúng tôi nhận thấy rằng thuật toán đã phần nào phân lớp được các đối tượng bịbệnh và không bịbệnh. Tỉ lệsố đối tượng được phân lớp đúng khoảng 65% đến 70%. Qua đó khẳng định thuật toán trình bày trong Chương 2phần 2.2.2.4.là có khảnăng phân lớp được dữliệu dựa trên một cách chọn siêu phẳng khá đơn giản. Đểnâng cao được kết quảthực nghiệm chúng ta cần có một phương pháp chọn siêu phẳng tổng quát hơn, hiệu quảhơn. Cách chọn siêu phẳng được trình bày trong Chương 2phần 2.2.2.4.của khoá luận tốt nghiệp là khá đơn giản đểlập trình, tuy nhiên chưa thực sựhiệu quảcho việc phân lớp. Nhất là với dữliệu kiểu thực thì việc lựa chọn siêu phẳng dựa trên cách chọn thuộc tính tốt nhất dùng hàm độ đo thông tin Infomation Gainlà không hiệu quảkhi tập giá trịcủa thuộc tính đó của các đối tượng khác nhau là rất lớn, gần nhưbằng chính số đối tượng.

pdf64 trang | Chia sẻ: lylyngoc | Lượt xem: 2291 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Phát hiện luật bằng cách sử dụng siêu phằng tối ưu theo hướng tiếp cận thô, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng. Ta có định nghĩa luật kết hợp như sau: Định nghĩa 11: Luật kết hợp là biểu thức có dạng X⇒Y trong đó X ⊂ I, Y ⊂ I và X∩Y=∅. Trong đinh nghĩa trên thì X được gọi là tiên đề. Y được gọi là kết quả của luật. Định nghĩa 12: Độ hỗ trợ của một tập mục X, ký hiệu là Supp(X), là tỉ số giữa số các tác vụ mà tập mục đó xuất hiện trên tổng số các tác vụ. Với định nghĩa trên thì ta dễ dàng có tính chất: Nếu A ⊆ B thì Supp(A)≥Supp(B). Định nghĩa 13: Độ hỗ trợ của luật X⇒Y , ký hiệu là Supp(X⇒Y) được xác định như sau: Supp(X⇒Y)= Supp(X∪Y). Định nghĩa 14: Độ tin cậy của luật dạng r=X⇒Y, ký hiệu là conf(X⇒Y) được định nghĩa: Conf(X⇒Y)=Supp(X∪Y)/Supp(X).ư Ta thấy độ tin cậy của một luật chính là xác suất có điều kiện của tác vụ chứa Y xét trong điều kiện chứa X Ví dụ: Để hiểu rõ hơn các định nghĩa trên chúng ta xét ví dụ sau: Cho một cơ sở dữ liệu như bảng sau: ID Tác vụ Các mục T1 A, C, D T2 B, E T3 A, B, C, E T4 B, E T5 B, D, F Bảng 3. Ví dụ về một cơ sở dữ liệu. Trong cơ sở dứ liệu trên gồm 5 tác vụ thao tác trên 6 tập mục là A, B, C, D, E, F. Khi đó thì độ hỗ trợ tương ứng của từng mục sẽ là: Ở đây tổng số tác vụ là 5, trong khi mục A xuất hiện trong 2 tác vụ là T1 và T3 nên có độ hỗ trợ là 2/5=40% { }( ) )( : )( Dcard TXTcard XSupp ∈= Mục Số tác vụ chứa mục Độ hỗ trợ A 2 40% B 3 80% C 2 40% D 2 40% E 3 60% F 1 20% Bảng 4. Độ hỗ trợ tương ứng của từng mục đơn. Tiếp tục tính độ hỗ trợ của các tập mục lớn hơn với mỗi tập gồm 2 mục ta có bảng : Mục Số tác vụ chứa mục Độ hỗ trợ A, C 2 40% A, B 1 20% B, D 1 20% C, D 1 20% A, B, C 1 20% A, B, E 1 20% A, C, D 1 20% B, D, F 1 20% A, B, C, E 1 20% Bảng 5. Độ hỗ trợ tương ứng của các tập mục khác Ta xét một số luật sinh từ các tập mục phổ biến trên trong bảng sau. Trong các luật của bảng ta xét luật A⇒B thì supp({A, B})=20%, supp(A)=40% vì vậy conf(A⇒B)=50%. Luật kết hợp Độ tin cậy conf(X⇒Y) A⇒C 100% A⇒B 50% B⇒D 25% A,B⇒C 100% A,C⇒B 50% B,E⇒A 33% Bảng 6. Độ tin cậy của các luật. 2.1.3. Thuật toán khai phá luật kết hợp. 2.1.3.1. Tập phổ biến. Định nghĩa 15: Tâp mục X⊆I được gọi phổ biến nếu thoả mãn supp(X) ≥ minsup. Trong đó minsup là một độ hỗ trợ tối thiểu cho trước. Khái niệm phổ biến này cho phép chúng ta chỉ xét những tập mục xuất hiện trong cơ sở dữ liệu là đủ lớn, lớn hơn một minsup nào đó. Khi đó luật của chúng ta sinh ra sẽ đáng tin cậy hơn. Ta có hệ quả sau: Cho A và B là hai tập mục, A⊆B. a. Nếu B là tập mục phổ biến thì A cũng là tập mục phổ biến. b. Nếu A là tập mục không phổ biến thì B cũng là tập mục không phổ biến. 2.1.3.2. Khai phá luật dựa trên tập mục phổ biến. Việc tìm kiếm luật kết hợp trong cơ sở dữ liệu được quy về 2 giai đoạn [7]: − Tìm tất cả các luật có độ hỗ trợ lớn hơn một minssup. Các tập mục này chính những tập mục phổ biến. Các thuật toán Apriori và AprioriTid nhằm giải quyết vấn đề này. − Từ các tập mục tìm được ở trên tiến hành sinh những luật có độ tin cậy lớn hơn một minconf nào đó. Hai tham số minsupp và minconf được người sử dụng đưa vào khi hệ thống khai phá tri thức. Các giá trị này thường được đưa ra bởi các chuyên gia kinh tế hoặc những người có kinh nghiệm. Ở trong giai đoạn nhất việc phát hiện những tập mục phổ biến tiến hành duyệt dữ liệu rất nhiều lần. Việc tìm các tập mục phổ biến thực hiện dựa trên hệ quả của định nghĩa 14 trình bày ở trên. Và thực hiện lần luợt các bước sau: − Đầu tiên người ta khởi tạo một tập thật giống các tập mục phổ biến và sinh các tập mục phổ biến dựa trên tập mục hạt giống này. − Từ các tập mục phổ biến người ta thực hiện ghép các tập mục phổ biến để được các tập mục lớn hơn, các tập mục này được gọi là tập ứng cử viên. − Để tính được độ hỗ trợ của các tập mục phổ biến người ta phải thực hiện duyệt toàn bộ dữ liệu. Khi đó sẽ tìm được những tập mục ứng cử viên là tập mục phổ biến. − Tập các tập mục ứng cử viên là phổ biến này được sử dụng là tập hạt giống cho bước tiếp theo. Cụ thể các thuật toán Apriori và AprioriTid sinh ra các tập ứng cử viên đó được tính trong một lần duyệt bằng việc sử dụng các tập mục được coi là phổ biến trong lần duyệt trước mà không cần quan tâm tới các tác vụ trong cơ sở dữ liệu. Việc chỉ xét các tập mục là phổ biến trong lần trước để sinh các tập mục ứng cử viên dựa hệ quả rút ra từ định nghĩa 14 đã trình bày ở trên: “Bất kỳ tập con của một tập mục phổ biến nào cũng là tập mục phổ biến”. Vì vậy tập ứng cử viên có k mục có thể sinh ra bởi tập các tập mục phổ biến có k-1 mục. Điều này có thể dẫn đến việc giảm đáng kể các tập mục ứng cử viên, là giảm độ phức tạp trong tính toán. Thuật toán Apriori: Đây là thuật toán dùng để phát sinh các tập mục phổ biến. − Lk là tập các tập mục phổ biến có kích thước k. − Ck là tập ứng cử viên, là các tập mục có tiềm năng trở thành tập mục phổ biến. − Thuật toán được tiến hành cho đến khi không tìm được một tập mục phổ biến nào trong một lần duyệt. Các bước của thuật toán được trình bày dưới đây: Lần duyệt 1 1. Phát sinh các ứng cử viên C1. Thực chất tất cả các tập mục đơn của cơ sở dữ liệu. 2. Kiểm tra và ghi lại những tập mục thuộc C1 là tập mục phổ biến và L1. Lần duyệt thứ k: 1. Phát sinh các tập ứng cử viên từ các tập mục phổ biến Lk-1. a. Kết hợp các Lk-1 để được tất cả các Ck. b. Với mỗi ứng cử viên Ck phát sinh tất cả k-1 tập con của Ck. c. Tỉa tất cả các ứng cử viên từ Ck trong đó có tập con (k-1) của nó không có trong tập mục phổ biến Lk-1. 2. Duyệt trong cơ sở dữ liệu để xác định độ hỗ trợ của các tập ứng cử viên Ck. 3. Ghi lại các tập mục phổ biến Lk. Trong bước thứ 2 của mỗi lần duyệt, để có thể tính độ hỗ trợ của các tập ứng cử viên thì thuật toán phải tiến hành duyệt lại toàn bộ cớ sở dữ liệu. Quá trình này là thực sự đáng kể với những cơ sở dữ liệu lớn. Khắc phục hạn chế trên thuật toán ApriporiTid đã lưu lai thông tin về các tác vụ gắn liền với mỗi tập mục phổ biến. Điều này có thể giúp chúng ta khắc phục được hạn chế về việc phải đọc dữ liệu nhiều lần tuy nhiên lại gây khó khăn hơn cho chúng ta khi tổ chức bộ nhớ chương trình. Ở giai đoạn 2, giai đoạn sinh luật với mỗi tập mục phổ biến l ta tiến hành xây dựng những luật dạng ( )ala −→ ở đây a là tập con của l sao cho ( ) ( ) confap lp min sup sup ≥ Ta có, với một tập aa ⊂* thì ( ) ( )apap sup*sup ≥ nên độ tin cây của luật dạng ( )** ala −→ không thể lớn hơn luật dạng ( )ala −→ . Do đó nếu luật ( )ala −→ không được chấp nhận thì luật dạng ( )** ala −→ cũng không thể chấp nhận được. Nhờ tính chất này mà ta có thể tiến hành xây dựng các luật chỉ có một tập mục ở phía phải sau đó kết hợp các luật thành dạng có 2 mục, 3 mục, ... ở phia phải 2.1.4. Kết luận. Việc tìm kiếm các luật kết hợp trong cơ sở dữ liệu được thực hiện theo thuật toán nguyên thuỷ Apriori và AprioriTid. Tuy nhiên một thực tế là số tập mục phổ biến có thể là rất nhiều, khắc phục hạn chế này chúng ta có thể dùng thuật toán CHARM được Mohammed .J Zaki và Ching-jui Hsiao đưa ra trong năm 2000 [13]. Thuật toán CHARM không tiến hành tìm những tập mục phổ biến mà tiến hành tìm những tập mục phổ biến đóng. Điều này dẫn đến số tập mục phổ biến tìm được là giảm đi rất nhiều và tại các bước của thuật toán việc cắt nhánh trong quá trình thực hiện là rất hiệu quả. Một hạn chế đáng kể của các thuật toán trình bày ở trên là chỉ làm việc với dữ liệu ở dạng nhị phân, tức là giá trị của các thuộc tính chỉ nhận 2 giá trị là 0 và 1. Điều đó dẫn đến việc thuật toán khó có thể áp dụng trực tiếp trên những cơ sở dữ liệu tự nhiên. Muốn thực hiện được thuật toán cần phải định lượng các thuộc tính thành dạng nhị phân. Quá trinh này làm giảm tính chính xác của kết quả thu được. Trong chương sau chúng tôi sẽ trình bày một thuật toán có thể làm việc được với dữ liệu là đa trị, dữ liêu là dạng số thực. 2.2 . Sinh cây quyết định từ hệ thông tin. 2.2.1. Thuật toán học cây quyết định. Phương pháp học cây quyết định là một trong những phương pháp được sử dụng rông rãi nhất cho việc học quy nạp từ một tập mẫu lớn [11]. Đây là phương pháp xấp xỉ các hàm mục tiêu có giá trị rời rạc. Mặt khác cây quyết định còn có thể chuyển sang dạng biểu diễn tương đương dưới dạng tri thức là các luật Nếu – Thì (if ... then). Xét một ví dụ về cây quyết định. Cho một bảng dữ liệu sau: Doc ai timetable system patallel relation database process graphic Class AI D1 1 1 0 0 0 0 0 0 1 D2 1 0 0 0 0 0 0 0 1 D3 0 1 0 0 1 1 1 1 1 D4 1 0 0 0 0 0 0 1 1 D5 1 1 1 1 1 0 0 1 1 D6 0 0 1 1 0 0 0 0 0 D7 0 0 1 0 0 0 0 1 0 D8 0 0 1 0 1 1 0 0 0 D9 1 0 1 1 0 1 0 0 0 D10 1 1 0 0 1 1 1 0 0 Bảng 6. Các ví dụ huấn luyện tron cây quyết định. Ta có cây quyết định: Hình trên là một ví dụ về cây quyết định phân lớp AI các mẫu đưa vào theo bảng 5. Mỗi nút của cây biểu diễn một thuộc tính trong các mẫu, mỗi một nhánh tới nút tương ứng với một trong những giá trị cụ thể cho thuộc tính này. Để đơn giản ta chỉ xét các thuộc tính nhị phân, tức là chỉ lấy giá trị là 0 và 1. Trong bảng 5, dữ liệu huấn luyện là 10 văn bản (trong các bài toán thực tế thì số lượng văn bản có thể lên tới hàng nghìn). Mỗi văn bản có 8 thuộc tính nhị phân tương ứng với việc văn bản đó có hay không có từ đó. Đó là các thuộc tính ai, system, paralell, relation, database, process, graphics.Thuộc tính cuối Class AI cùng là thuộc tính quyết định. Đó là hàm mục tiêu của chúng ta, nó nhận giá trị 1 tức là văn bản đó thuộc lớp AI, 0 tức là văn bản đó không thuộc lớp AI. Mặt khác, từ cây quyết định trên chúng ta có thể sinh ra được các luật như sau: 1) Nếu (System=1) và (Timetable =1 ) thì class AI =Yes. 2) Nếu (System=1) và (Timetable =0 ) thì class AI =No. 3) Nếu (System=0) và (Process =1 ) thì class AI =No. 4) Nếu (System=0) và ( Process=0 ) thì class AI =Yes. System Process Timetable 0 1 0 1 0 1 Yes No Yes No Hình 2.Một ví dụ về cây quyết đinh. Giải thích cụ thể hơn ta có: 1) Nếu văn bản có từ System và từ Timetable thì thuộc lớp AI. 2) Nếu văn bản có từ System và không có từ Timetable thì không thuộc lớp AI. 3) Nếu văn bản không có từ System và có từ Process thì không thuộc lớp AI. 4) Nếu văn bản không có từ System và không có từ Process thì thuộc lớp AI. Những bài toán nên sử dụng việc học cây quyết định: Trong [10], Mitchel đã chỉ việc sử dụng cây quyết định phù hợp với việc giải quyết các bài toán sau: − Các mẫu huấn luyện được biểu diễn thành những cặp giá trị - thuộc tính, các thuộc tính là một tập cố định. Các giá trị thuộc tính là rời rạc. Tuy nhiên trong các thuật toán sinh cây quyết định cải tiến sau này cho phép các thuộc tính nhận giá trị là giá trị thực. Đặc biệt là thuật toán sinh cây quyết định sử dụng siêu phẳng được đưa ra trong[9] sẽ được trình chi tiết sau. − Hàm mục tiêu phải có giá trị rời rạc, trong bài toán phân lớp văn bản trên thì hàm mục tiêu có thể mở rộng thành nhiều giá trị đầu ra. − Trong trường hợp cần biểu diễn kết quả thu được dưới dạng các mô tả: Chẳng hạn như là dưới dạng luật thì cấu trúc cây quyết định có thể chuyển sang một cách dễ dàng. − Tập dữ liệu huấn luyện có thể chứa lỗi: Phương pháp học cây quyết định có thể thực hiện tốt trên các tập dữ liệu chứa lỗi, cả trên các lỗi trong phân lớp ví dụ huấn luyện cũng như lỗi trên các giá trị thuộc tính trong các ví dụ này. − Tập dữ liệu có thể có những giá trị bị thiếu. Phương pháp cây quyết định có thể được sử dụng trong các trường hợp các ví dụ huấn luyện có những giá trị chưa biết. Thuật toán ID3 Đây là một thuật toán cơ bản nhất trong lĩnh vực học cây quyết đinh, hầu hết các thuật toán học cây quyết đinh cải tiến sau này đều dựa trên nó. ID3 và các thuật toán cải tiến của nó đều dựa vào cách tiếp cận từ trên xuống. Trong các thuật toán học cây quyết định thì thuật toán ID3 và thuật toán C4.5 là phổ biến nhất. Thuật toán ID3 lần đầu tiên được Quinlan giới thiệu năm 1975 trong tạp trí Machine Learning, Vol 1, No.1.Sau đây chúng tôi trình bày thuật toán ID3, thuật toán được mô tả như sau [9]: ID3(Examples, Target attribute, Attributes) Examples: Tập các ví dụ huấn luyện. Target attribute: là thuộc tính đầu ra cho cây quyết định. Attributes:Danh sách các thuộc tính. Kết quả trả về là một câu quyết định phân lớp đúng các mẫu ví dụ đưa ra. • Tạo một nút gốc Root cho cây quyết định. • Nếu toàn bộ Examples là ví dụ dương. Trả về cây Root một nút đơn, với nhãn +. • Nếu toàn bộ Examples là ví dụ âm. Trả về cây Root một nút đơn, với nhãn - . • Nếu tập thuộc tính là rỗng thì trả lại cây Root một nút đơn với nhãn bằng giá trị phổ biến nhất của Target_attribute trong Examples. • Ngược lại:Begin o A ←Thuộc tính từ tập Attributes mà phân lớp tốt nhất tập Examples. o Thuộc tính quyết định cho Root ←A. o For Mỗi giá trị cụ thể vi của A, ƒ Thêm một nhánh cây con ở dưới Root, phù hợp với biểu thức kiểm tra A=vi . ƒ Đặt Examplesvi là tập các ví dụ có giá trị của thuộc tính A là vi . ƒ Nếu Examplesvi rỗng • thì dưới nhánh mới thêm gán một nút lá với nhãn = giá trị phổ biến nhất của Target_attribute trong tập Examples. • ngược lại thì dưới nhánh mới này thêm một cây con: ID3(Examplesvi,Target_attribute,Attribute-{A}. • End. • Return Root. Chọn lựa thuộc tính tốt nhất Vấn đề quan trọng nhất của thuật toán ID3 là làm sao chọn lựa được thuộc tính tốt nhất để đưa vào các nút của cây. Để giải quyết vấn đề này, người ta sử dụng kết quả của lý thuyết thông tin là các độ đo là infomation gain và entropy. Entropy: Đây là đại lượng hết sức quan trọng trong lý thuyết thông tin. Entropy là đại lượng đo tính đồng nhất hay thuần tuý của các mẫu. Trước tiên ta xem xét trường hợp các thuộc tính của tập các mẫu huấn luyện S của cây quyết định chỉ có hai lớp phân biệt là mẫu ví dụ dương (possotive) và mẫu ví dụ âm (Negative). Khi đó Entropy của tập S được định nghĩa như sau: Entropy(S)≡-p⊕ log2p⊕--pΘ log2pΘ. Trong đó: p⊕ : là phân bố của các ví dụ dương trong S. pΘ : là phân bố của các ví dụ dương trong S. Chúng ta quy đinh 0log20 =0. Ví dụ: Xét trong ví dụ bảng 5, có10 mẫu huấn luyện, trong đó có 5 mẫu huấn luyện dương(Class AI=1) và 5 ví dụ âm (Class Ai=0). Khi đó đại lương Entropy S liên quan tới sự phân bố 2 lớp dương và âm của tập S là: Entropy(S) = -(5/10)log2(5/10)-(5/10)log2(5/10)= =1.0 Trong trường hợp tổng quát thì đại lượng Entropy được tính như sau: Trong đó: pi :là phân bố của lớp thứ i trong S. c : là số lớp trong S. Tương tự: Entropy(Sai=1) = -(4/6)log2(4/6)-(2/6)log2(2/6)=0,918. Entropy(Sai=0) = -(1/4)log2(1/4)-(3/4)log2(3/4)=0,812. ( ) ∑ = −= c i ii ppSEntropy 1 2log Information Gain Trong khi Entropy là đại lượng đo độ không đồng nhất của các mẫu, người ta đưa ra một độ đo sự ảnh hưởng của một thuộc tính trong mẫu đó trong việc phân lớp là information gain. Information gain của một thuộc tính A được tính như sau: Trong đó Sv là tập các phần tử mà thuộc tính A có giá trị là v. Ví dụ: Tiếp tục xét ví dụ trong bảng 5 ta có. Gain(S,ai) = Entropy(S)-(6/10)Entropy(Sai=1)-(4/10)Entropy(Sai=0) = 1.0-(6/10).0,918-(4/10).0,812 = 0,1244 Tương tự ta có thể xét các Gain của các thuôc tính khác có giá trị như bảng sau. Attribute ai timetable system parallel relation database process graphic Gain 0,1244 0,1244 0,2871 0,0349 0,0 0,1244 0,0 0,1244 Bảng 7. Giá trị informatin Gain của các thuộc tính. Khi đó theo thuật toán ID3 thì thuộc tính đầu tiên được chọn là thuộc tính system vì có giá trị information Gain là lớn nhất. ∑ ∈ −≡ )( )()(),( AValuesV V V SEntropy S S SEntropyASGain ( ) )()(, }1,0{ v v v SEntropy S S SEntropyaiSGain ∑ ∈ −= 2.2.2. Một số phương pháp giải quyết vấn đề rời rạc hoá 2.2.2.1. Maximal Discernibility (MD) Heuristic Theo như định nghĩa 8 được trình bày trong Chương 1 phần 1.2.1.4 trên một bảng quyết định bất kỳ ta luôn có thể định nghĩa một tập các nhát cắt. Từ tính chất này ta có thể xây dựng thuật toán sau: Từ một bảng quyết định A =(U, A∪{d}), chúng ta xây dựng một bẳng quyết định mới. A* =(U*, A*∪{d*}) như sau: • U* ={(u, v)∈ U2 : d(u)≠d(v)} ∪ {⊥}. • A* ={c: c là một nhát cắt trên A}. c(⊥)=0; c((ui, uj))=1 nếu c phân biệt được ui và uj. 0 nếu ngược lại. • d(⊥) và d*(ui, uj)=1. Ta thu được bảng quyết định dạng sau: A* c1 c2 . . . ck . . . d* (u1, u2) 1 0 . . . 0 . . . 1 (u1, u2) 1 1 . . . 1 . . . 1 . . (u1, u2) 0 1 1 . . . . ⊥ 0 0 . . . 0 . . . 0 Bảng 8. Một dạng của bảng quyết định dạng A* Như vậy việc tìm kiếm một sự rời rạc hoá tối ưu bảng quyết định A tương đương với việc tìm tập rút gọn nhỏ nhất trong bảng quyết định A*. Thuật toán MD[9] được xây dựng dựa trên việc tìm kiếm nhát cắt với số cặp đối tượng được phân biệt bởi nhát cắt là nhỏ nhất được mô tả như sau: Từ tập tất cả các nhát cắt A*, nhát cắt phân biệt số lớn nhất các cặp đối tượng thuộc những lớp quyết định khác nhau sẽ được chọn. Quá trình thực hiện đến khi hai đối tượng bất kỳ từ những lớp quyết định khác nhau đều bị phân biệt bởi một hoặc vài nhát cắt. Phương pháp này rất hiệu quả vì để tìm được nhát cắt với sự phân biệt là lớn nhất chúng ta chỉ cần O(nk) bước, trong đó n là số đối tượng và k là số thuộc tính.Vì thế tổng thời gian rời rạc hoá là O(nk.| P |), với P là tập nhát cắt cuối cùng tìm được. 2.2.2.2. Sự rời rạc hoá định nghĩa bằng siêu phẳng Ở trên chúng ta đã trình bày một phương pháp khá đơn giản để rời rạc hóa dữ liệu bằng nhát cắt theo định nghĩa 8. Chúng ta xét một chiến lược tương tự, nhưng thay vì tập các nhát cắt như trên chúng ta dùng tập các siêu phẳng [9]. Ta xét một bảng quyết định A =(U, A∪{d}) Trong đó: U={u1,. . ., un} A={f1, . . ., fk} d:U→{1,. . .,m} Giả sử rằng những đối tượng ui được phân biệt bởi thuộc tính điều kiện chúng ta có thể diễn tả chúng trong không gian quan hệ k chiều như sau: Pi=(f1(ui), f2(ui), . . .,fk(ui)) với i ∈{1, 2, 3, . . ., n}. Như vậy ta có thể coi mỗi đối tượng như một điểm trong không gian quan hệ k chiều. Và các điểm đó lập thành các lớp quyết định: Ci={u∈U :d(u)=i}. với i=1,. .,m Ta xét một siêu phẳng H được diễn tả đầy đủ bởi một bộ (k+1) số (a, a1,. . .,ak) ∈Rk: H={(x1,. . ., xn)∈Rk: a1x1+. . .+akxk+a=0} Khi đó siêu phẳng H chia lớp Ci thành hai lớp con sau đây: Chúng ta thêm một số đọ đo để đo chất lượng của siêu phẳng trong mỗi quan hệ giữa các lớp quyết định C1,C2,. . .,Cm. Ta xét độ đo sau để tính toán chất lượng của siêu phẳng: Nếu award(H)>award(H') thì số cặp đối tượng từ những lớp quyết định khác nhau bị phân biệt bởi siêu phẳng H sẽ nhiều hơn siêu phẳng H'. 0}a(u)fa...(u)fa: C{u kk11i , ≥+++∈=HUiC 0}a(u)fa...(u)fa: C{u kk11i , <+++∈=HLiC ∑ ≠ = ji HL j HU i CcardCcardHaward )().()( ., Đặt )( ,HUii Ccardu = và )( ,HLii Ccardl = với i=1,. . ., r và u=u1 + u2 + . . . +ur ;l=l1 + l2 + . . . +lm Khi đó , ta có công thức: Chúng ta tiếp định nghĩa hàm sau: Như vậy thì chất lượng của siêu phẳng H có thể được tính theo công thức sau: porwer1(H) =award(H). Để hiểu rõ cách tính đại lượng này chúng ta cùng xét ví dụ sau: Cho bảng dữ liệu sau gồm 6 đối tượng và mỗi đối tượng có 4 thuộc tính, trong đó thuộc tính thứ (9) là thuộc tính quyết định. Ở trong ví dụ này chỉ có hai lớp quyết định tương ứng với các giá trị 1 và 2 của thuộc tính quyết định (9). (1) (2) (8) (9) X1 2 102 31 1 X2 4 146 70 2 X3 3 102 28 1 X4 2 90 37 2 X5 2 90 31 1 X6 2 146 28 2 Bảng 9. Ví dụ về bảng quyết đinh. ∑∑ =≠ −== m i ii ji ji lululuHaward 1 .)( ( ) ( ) ( ) ∑∑ == =⋅= m i ii HU i m i HU i juCcardCcardHpenalty 1 , 1 , Ta xét 2 siêu phẳng ( ) ⎭⎬ ⎫ ⎩⎨ ⎧ =+−++∈= 124 2 146102.0.1.0:,, 321 3 3211 xxxRxxxH và ( ) ⎭⎬ ⎫ ⎩⎨ ⎧ =+−++∈= 96 2 90102.0.1.0:,, 321 3 3212 xxxRxxxH Thực chất 2 siêu phẳng trên là xét giá trị của thuộc tính thứ (2) và giá trị của thuộc tính đó so sánh với điểm giữa của các giá trị đó. Khi đó ta có: 1H các chia lớp quyết định của tập các đối tượng trên thành các tập con là: { }=1,1 HUC , { }5,3,11,1 XXXC HL = , { }2,61,2 XXC HU = , { }4,21,2 XXC Hl = . { }3,12,1 XXC HU = , { }51,1 XC HL = , { }2,61,2 XXC HU = , { }41,2 XC Hl = . Như vậy: ( ) ( ) ( ) ( ) ( ) 62.02.3 .. 1111 ,2 , 1 , 2 , 11 =+= += HLHUHUHL CcardCcardCcardCcardHpower và ( ) ( ) ( ) ( ) ( ) 41.22.1 .. 2222 ,2 , 1 , 2 , 12 =+= += HLHUHUHL CcardCcardCcardCcardHpower Vậy ta có ( ) ( )21 HpowerHpower > nên trong quá trình rời rạc hoá dữ liệu thì siêu phẳng 1H được ưu tiên hơn. Ngoài ra ta còn có thể xét một số hàm sau cũng như là hàm xác định chất lượng của siêu phẳng: và ( ) ( )( ) ;2 cHpenalty HawardHporwer += ( ) ( ) ( ).. 213 HpenaltywHawardwHporwer −= Cả 3 hàm power1(H), power2(H), power3(H) trên đều có thể được dùng để tính chất lượng của siêu phẳng. Cả 3 độ đo này đều có thể áp dụng cho thuật toán kinh nghiệm sẽ được trình bày sau. 2.2.2.3. Những tính chất của phương thức MD. Xét bảng quyết định A =(U, A∪{d}, các đối tượng trong U được chia thành m lớp quyết định C1, C2, . . ., Cm. Chúng ta xem xét một đặc tính mới f của các đối tượng trong U với giá trị từ tập V={v0, v1, . . .,vk} ⊂ R(với v0 < v1< . . .<vk). Tập các nhát cắt trên V được định nghĩa là một tập P = {c1, c2, . . ., ck} trong đó 2 1 ii i vvc += − với i=1,. . .,k. Đặt : ( ) ( )( ) ( )( )( )judcufUucardcl iij =∧<∈= : là số đối tượng của lớp quyết định Ci nằm ở bên trái của nhát cắt ci ( ) ( )( ) ( )( )( )judcufUucardcl iij =∧>∈= : là số đối tượng của lớp quyết định Ci nằm ở bên phải của nhát cắt ci. conf(A) =card {(u, v)∈U2 :d(u) ≠d(v)}, là số cặp đối tượng thuộc những lớp quyết định khác nhau. Theo như được trình bày trong [2] chúng ta có các định lý sau: Định lý 1:Hàm conf(A) có thể tính bằng công thức dưới đây. 1. Xét nj = card(Cj) với j=1,. . .,m ta có: ⎥⎥⎦ ⎤ ⎢⎢⎣ ⎡ =⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛= ∑∑ == m j j m j j nnAconf 1 2 2 12 1)( 2. Với một nhát cắt bất kỳ c ∈ P : ( ) ( ) ( )( ) ( ) ( )( )∑ < ++= ji jjii crclcrclAconf . Đinh nghĩa 16: Hàm “Discernible pair” dp:P→N (với N là tập các số nguyên không âm) như sau: ( ) ( ) ( ) ( )( ) ( ) ( )( ){ }vdudvfcufUvucardcdp ≠∧<<∈= :, 2 với mọi nhát cắt c thuộc P. Khi đó dp(c) chính là số cặp đối tượng từ cùng một lớp quyết định bị phân biệt bởi nhát cắt c∈P. Định lý 2: Với một nhát cắt bất kỳ c∈P ta có: ( ) ( ) ( ) ;. 1 ,1 ∑ ∑ = ≠= ⎟ ⎟ ⎠ ⎞ ⎜⎜⎝ ⎛= m j m jll lj crclcdp ( ) ( ) ( ) ( ) ( )∑∑∑ === −= m j jj m j j m j j crclcrclcdp 111 . . Theo định lý trên thì giá trị của hàm dp có thể tính theo công thức trên. Xét { }mi .,..,1⊆∂ là tập giá trị quyết định của tất cả các đối tượng nằm trong khoảng ( )1, +ii cc : ( )( ) ( )( ){ }1: +∈ <<∧=∃=∂ iiUui cufctudt Định lý 3: Nếu ( ) ( ) 11 =∂=∂ =ii cardcard và ci là cực đai địa phương định nghĩa trên hàm dp ( ) ( ) ( ) ( ) ( ) ( ) ( )( )1111 2,, −++− +≥≥≥ iiiiiii cdpcdpcdpcdpcdpcdpcdp thì ii ∂≠∂ −1 . Chứng minh: Theo định lý 2 ta có: ( ) ( ) ( ) ( ) ( )∑∑∑ === −= m j jj m j j m j j crclcrclcdp 111 . Nếu ii ∂=∂ −1 (Không làm giảm tính tổng quát ta có thể coi 11 =∂=∂ − ii ) thì: ( ) ( )( )⎩⎨ ⎧ ≠ =−= 1 111 jkhicl jkhiclcl j i ij và ( ) ( )( )⎩⎨ ⎧ ≠ =+= 1 111 jkhicr jkhicrcr j i ij Do đó: ( ) ( ) ( ) ( )[ ] ( )[ ] ( ) ( )∑∑∑ === −+−−⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ +⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ −= m j jjjjii m j jj m j jji crclcrclcrclcdp 1 11 11 .1111 ( ) ( ) ( ) ( ) ( ) ( )[ ]∑∑∑∑ ==== −+−= 1 1111 .. j ijij m j ijij m j ij m j ij crclcrclcrcl ( ) ( ) ( )[ ]∑ = −+= 1 1j ijiji crclcdp . Áp dụng tương tự với tham số là ( )1+icdp ta có: ( ) ( ) ( ) ( )[ ] ( )[ ] ( ) ( )∑∑∑ === + −−+−⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ −⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ += m j jjjjii m j jj m j jji crclcrclcrclcdp 1 11 11 1 .1111 ( ) ( ) ( ) ( ) ( ) ( )[ ]∑∑∑∑ ==== −−−= 1 1111 .. j ijij m j ijij m j ij m j ij crclcrclcrcl ( ) ( ) ( )[ ]∑ = −−= 1 1j ijiji crclcdp . Như vậy ( ) ( ) ( )iii cdpcdpcdp .211 =+ −− , suy ra ic không thể là cực đại địa phương trên hàm dp. Sau đây ta sẽ xét một số tính chất đáng chú ý của siêu phẳng tốt nhất với một số điều kiện đặt ra. Định lý 4: Nếu một nhát cắt ic là cực đại địa phương của hàm dp, m=1 (số giá trị của thuộc tính quyết định chỉ là 2, giả sử là 1 và 2) và ( ) ( ) 111 =∂=∂ −− ii cardcard thì ( ) ( )Aconfcdp i .2 1≥ . Chứng minh: Từ định lý 4 ta có 1−∂≠∂ ii , không mất tính tổng quát chúng ta có thể giả sử rằng { }11 =∂ −i và { }2=∂ i . Từ định lý 2 ta có: ( ) ( ) ( )[ ] ( ) ( )[ ]iiii crclcrclAconf 2211 . ++= Từ định lý 3 ta có: ( ) ( ) ( ) ( ) ( )iiiii crclcrclcdp 1221 .. += ( ) ( )[ ] ( ) ( ) ( )[ ]( ) ( ) ( )iii iiiii crclcdp crclcrclcdp 22 12211 1..1 −+= ++−=− ( ) ( )[ ] ( ) ( ) ( )[ ]( ) ( ) ( )iii iiiii crclcdp crclcrclcdp 22 12211 1..1 −+= ++−=− Nhát cắt ic là cực đại địa phương của hàm dp khi ( ) ( )1−≥ ii cdpcdp và ( ) ( )1+≥ ii cdpcdp ; Điều kiện ( ) ( )1−≥ ii cdpcdp tương đương với: ( ) ( ) 022 ≤− ii crcl Điều kiện ( ) ( )1+≥ ii cdpcdp tương đương với: ( ) ( ) 011 ≤− ii crcl Ta suy ra được bất đẳng thức sau: ( ) ( )[ ] ( ) ( )[ ] 0. 1122 ≤−− iiii crclcrcl . Khai triển ra ra được: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 0.... 12212121 ≤−−+ iiiiiiii crclcrclcrcrclcl ⇔ ( ) ( )[ ] ( ) ( )[ ] ( ) ( ) ( ) ( )[ ]iiiiiiii crclcrclcrclcrcl 12212211 ...2. +≤++ . Từ đó suy ra: ( ) ( )icdpAconf .2≤ Dẫn đến ( ) ( )Aconfcdp i .2 1≥ là điều phải chứng minh. Trên đây chúng tôi đã trình bày một số tính chất của bài toán rời rạc hoá dữ liệu. Đó là những cơ sở toán học để chúng tôi tiến hành xây dựng thuật toán xây dựng cây quyết định không đối xứng sẽ được trình bày sau đây. 2.2.2.4. Xây dựng cây quyết định không đối xứng Theo nhận định của nhiều nhà nghiên cứu về học máy, thông thường tính cân bằng của các tập con được chia thường cho kết quả phân lớp tốt. Tuy nhiên, trong nhiều trường hợp cách thức phân hoạch không cân bằng lại cho kết quả tốt hơn, và tương ứng là phương pháp xây dựng cây quyết định không đối xứng. Để đủ đơn giản ta chỉ xét các bảng quyết định { }( )dAUA ∪= , , khi tập U các đối tượng chỉ gồm 2 lớp quyết định, giá trị của thuộc tính quyết định d chỉ là 1 và 2 ( { }2,1: →Ud ). Sử dụng theo ý tưởng thực hiện trong thuật toán ID3, các đối tượng là các lá của cây quyết định và siêu phẳng là nhãn của các nút khác (Nút trong). Một siêu phẳng bất kỳ: ( ){ }0...:,...,, 221121 =++++∈= axaxaxaRxxxH kkkk Ta định nghĩa một hàm RRH k →: như sau: ( ) axaxaxaxxxH kkk ++++= ...,..,, 221121 Một đối tượng trong kRu∈ có thể bị phân loai theo cách sau đây:Chúng ta bắt đầu từ gốc của cây quyết định. Xét H là một siêu phẳng được đánh nhãn ở gốc. Nếu ( ) 0>uH chúng ta sẽ đi theo hướng cây con bên phải và nếu ( ) 0<uH chúng ta sẽ đi theo nhánh cây bên trái. Quá trình tiến hành với tất cả trong khi các nút của cây quyết định đến khi tập các đối tượng được đánh nhãn không có cùng một giá trị quyết định. H L R H(u)>0 H(u)<0 u Hình 3. Hình ảnh cây quyế định nhị phân được thành lập. Chi tiết các bước của thuật toán xây dựng cây quyết định không đối xứng được trình bày sau đây: 1. Khởi tạo cây nhị phân trống T. 2. .Đánh nhãn gốc của cây bằng tập tất cả các đối tượng của thuộc U và đặt trạng thái của gốc là chưa sẵn sàng. 3. For mỗi trạng thái chưa sẵn sàng của lá L của T: a. Nếu tất cả các đối tượng của nhãn L có cùng giá trị quyết định thì Thay thế tập tất cả các đối tượng với giá trị quyêt định chung đó. Đặt trạng thái của L là săn sàng b. ngược lại: Tìm siêu phẳng HL tốt nhất cho tập các đối tượng của L. Thay thế nhãn của L bằng HL.-Khởi tạo 2 nút mới L1 và L2 với trạng thai là chưa săng sàng đánh nhãn như sau: L1={ x∈L : HL(x) < 0 } và L2={ x∈L : HL(x) > 0 } 4. Lặp lại bước 3 cho đến khi tất cả các lá của T là sẵn sàng. 4. Return T //Siêu phẳng tốt nhất là siêu phẳng với giá trị một trong các của hàm power1, power2, power3 là lớn nhất. Cây quyết định đưa ra bởi tập U các dữ liệu huấn luyên được gọi là tối ưu khi chiều cao và số lá là nhỏ nhất. Thuật toán trên hướng tới việc là nhỏ nhất số siêu phẳng có thể. Nó chỉ ra rằng số là (số luật) được sinh ra là nhỏ. Trong một cách khác cũng có thể chỉ rằng chiều cao của cây giành được là nhỏ nhất. Định lý 5 [9]:Chiều cao của cây quyết định xây dựng trong trường hợp dùng độ đo là power1 se không lớn hơn 2.log2n –2, khi n là số đối tượng đưa ra bởi bảng quyết định. Chứng minh: Đặt conf(h) là tổng của conf của tất cả các nút ở chiều cao h của cây quyết định. Chúng ta có: ( ) ( )1.2 −≥ hconfhconf Đặt n là số đối tượng của đưa ra bởi bảng quyết định và n1 và n2 là số đối tượng tương ứng với từng lớp quyết định.Sử dụng định lý 2 ta có: ( ) ( ) 42 0 22 21 21 nnnbnconfAconf =⎟⎠ ⎞⎜⎝ ⎛ +≤== Đặt ( )Th là chiều cao của cây quyết định T. thì chúng ta có ( )( ) 0=Thconf . Vì vây: ( ) ( )( ) 2log.2 4 loglog 2 2 22 −=⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛≤≤ nnTconfTh Giả sử rằng mọi nút trong của cây đều có cấu trúc thoả mãn điều kiện sau: ( ) ( )RL NconfNconf = Ta có: ( ) ( )( ) ( )NconfNconfNconf RL 4 1,max ≤ khi NL vaf NR là các nhánh con trái và phải của nút N. Suy ra: ( ) ( )( ) nnTconfTh 2 2 44 log14 log1log =+⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛≤+≤ Và chiều cao của siêu phẳng có thể giảm khi chúng ta sử dụng hàm sau để tính độ mạnh của siêu phẳng: ( ) ( ) ( ) ( ) ( ) ( )( )⎥⎦ ⎤⎢⎣ ⎡ −⎥⎦ ⎤⎢⎣ ⎡ −= RL NconfNconfnconfnconfHawardHpower ,max2.24 với một siêu phẳng bất kỳ. Một vấn đề đặt ra với thuật toán trên là làm sao lựa chọn được tập các siêu phẳng để tìm được siêu phẳng có độ mạnh là lớn nhất. Sau đây chúng tôi đưa ra một cách lựa chọn siêu phẳng để thực hiện thuật toán trên trong chương trình thử nghiệm của mình. Để tìm được siêu phẳng tốt nhất cho thuật toán trên chúng tôi đã đưa ra một cách lựa chọn siêu phẳng gồm 2 bước sau: Bước 1: Chọn một thuộc tính tốt nhất a∈A theo cách chọn của thuật toán ID3 đã trình bày ở trên (Thuộc tính có Information Gain lớn nhất). Bước 2: Chọn một siêu phẳng trong các siêu theo cách định nghĩa sau: Định nghĩa 17 : Siêu phẳng H được định nghĩa như sau: Xét một thuộc tính bất kỳ a∈A. Va={v0, . . .,vk} là tập các giá trị của thuộc tính a. Đặt P={c1, . . .,ck} khi ci=(vi-1+vi)/2 với i=1,. . .,k ta có một siêu phẳng H={(x1,. . ., xk)∈ Rk: a((x1,. . .,xk))-ci=0} trong đó a(u) là phép lấy giá trị của thuộc tính a của đối tượng u ∈ U. Như vậy một siêu phẳng H thực tế là một bộ gồm 2 số (a,c) trong đó a là thuộc tính tốt nhất được chọn và c là một nhát cắt trên tập giá trị của thuộc tinh a. Để hiểu rõ các bước của thuật toán trên chúng ta sẽ xét ví dụ sau: Cho bảng quyết định như sau: (1) (2) (8) (9) X1 2 102 31 1 X2 4 146 70 2 X3 3 102 28 1 X4 2 90 37 2 X5 2 90 31 1 X6 2 146 28 2 Bảng 10. Ví dụ về bảng quyết định. Bảng trên chính là thông tin về 6 bệnh nhân đang khám bệnh tiểu đường. Trong đó thuộc tính (9) là thuộc tính quyết định giá trị thuộc tính này bằng 1 nếu người đó bị bệnh và bằng 2 nếu người đó không bị bệnh. Các thuộc tính (1) tương ứng với số lần mang thai của bệnh nhân đó, (2) lượng đường trong huyết tương sau 2 giờ chịu thuốc, (8) tương ứng với tuổi của bệnh nhân. Ta có Information Gain của 3 thuộc tính điều kiện được tính trong bảng sau: (1) (2) (8) Gain 0,3333 0,6667 0,6667 Bảng 11. Bảng giá trị infomation gain của các thuộc tính của các đối tượng trong bảng 10 (2),124 X1,X3,X4,X5 X2,X6 (d=2) Khi đó thuộc tính được chọn tốt nhất theo ID3 là thuộc tính (2) hoặc(8). Ta chọn thuộc tính (2) để tiếp tục thuật toán. Tâp giá trị của thuộc tính (2) là {90, 102, 146} suy ra một tập các nhát cắt cần xét là: {((2),124), ((2), 96). Khi đó độ mạnh của các siêu phẳng tương ứng với những nhát cắt trên sẽ là: siêu phẳng H (2),124 (2), 96 power1 6 4 Bảng 12. Bảng giá trị hàm power1 của các siêu phẳng chọn theo thuộc tính (2) Như vậy siêu phẳng được chọn sẽ tương ứng với nhát cắt ((2), 124) và cây quyết định khi đó sẽ là: Hình 4. Các nhánh cây bị phân theo thuật toán đối với các đối tượng ở bảng 10. Khi đó tập đối tượng được phân thành 2 tập gồm những đối tượng trong đó tập gồm 2 đối tượng {X2, X6} là hai đối tượng thuôc cùng một lớp quyết định nên ta không xét tiếp, ta xét các đối tượng còn lai trong bảng sau: (1) (2) (8) (9) X1 2 102 31 1 X3 3 102 28 1 X4 2 90 37 2 X5 2 90 31 1 Bảng 13. Bảng quyết định ứng với nhánh trái của cây quyết định hình 4. Khi đó thì information gain sẽ được tính theo bảng sau: (1) (2) (8) Gain 0,1226 0,3112 0,8112 Bảng 14. Bảng giá trị infomation gain của các thuộc tính của các đối tượng trong bảng 13 Và độ mạnh tương ứng của các siêu phẳng là: sieu phẳng H (8),34 (8), 19,5 power1 3 1 Bảng 15. Bảng giá trị hàm power1 của các siêu phẳng chọn theo thuộc tính (8) Và cây quyết định sẽ có dạng: Hinh 5. Cây quyết định sau khi áp dụng thuật toán với nhánh trái của cây hình 4 Nhìn vào hình 5 ta thấy tại tât cả các nút lá các đối tượng đều có cùng giá trị quyết định. Đến đây thuật toán có thể dùng lại. Sau khi kết thúc thuật toán thì cây quyết định có dạng: (2),124 (8), 34 X2,X6 (d=2) X1,X3, X5(d=1) X4(d=2) (2),124 (8), 34 (d=2) (d=1) (d=2) Hình 6. Cây quyết định được thành lập sau khi thực hiện thuật toán. và từ cây quyết định trên ta có thể có được các luật sau: Nếu ((2)>124) thì (9)=2. Nếu ((2)<124) và ((8)<43) thì (9)=1. Nếu ((2)43) thì (9)=2. Như vậy từ tập các mẫu huấn luyện ta có thể huấn luyên được cây quyết định theo thuật toán trên, từ cây quyết đinh đó ta có thể sinh ra được các luật. 2.2.3. Kết luận Chương này chúng tôi đã trình bày một số thuật toán khai phá dữ liệu. Trong đó thuật toán khai phá luật kết hợp theo hướng tiếp cận thông thường tỏ ra rất hiệu quả với những dữ liệu rõ ràng, giá trị của các thuộc tính là nhị phân. Do đó rất khó áp dụng cho các bài toán thực tế với những dữ liệu thường ở dạng thô, giá trị của các thuộc tính thường là các số thực,ở dang liên tục. Chương này cũng trình bày thuật toán rời rạc hóa dữ liệu sử dụng siêu phẳng tối ưu theo hướng tiếp cận tập thô. Đây là thuật toán có thể xử lý được trên dữ liệu thô, có các thuộc tính có giá trị thực. Vì vậy có thể áp dụng cho các bài toán thực tế mà không cần phải có những bước tiền xử dữ liệu phức tạp. Từ thuật toán xây dựng cây quyết định dùng siêu phẳng tối ưu được trình bày trong [9], chúng tôi đã đưa ra một cách lựa chọn siêu phẳng gồm hai bước (chúng tôi đề xuất định nghĩa 17 phục vụ cho cách lựa chọn của mình), để xây dựng chương trinh thử nghiêm cho thuật toán mà kết quả thử nghiệm sẽ được trình bày trong Chương 3. Khóa luận sẽ đưa ra các đánh giá về hiệu quả của thuật toán nói trên (đoạn 2.2.2.4) với cách lựa chọn siêu phẳng do chúng tôi đề xuất. Chương 3 CHƯƠNG TRÌNH THỬ NGHIỆM Chương trình thử nghiệm xây dựng cây quyết định dựa trên thuật toán đã trình bày trong phần 2.2.2.4 . Kết quả thử nghiệm của chương trình thực hiện trên cơ sở dư liệu khám bệnh tiểu đường được cung cấp bởi tổ chức “National Institute of Diabetes and Digestive and Kidney Diseases” (31KB), từ đó sinh ra các luật trên cây quyết định hỗ trợ quyết định khám bệnh cho các bác sĩ. 3.1 . Mô tả dữ liệu Chương trình tiến hành khai phá dữ liệu trong cơ sở dữ liệu bệnh nhân bị bệnh tiểu đường. Dữ liệu đầu vào là một file text có cấu trúc như sau: − Mỗi dòng là thông tin về một bệnh nhân. Cuối mỗi dòng có dấu kết thúc là dấu ‘.’. − Trên mỗi dòng một bệnh nhân thể hiện qua 9 thuộc tính, giữa 2 thuộc tính có dấu ‘,’ ngăn cách. − Thuộc tính thứ 9 là thuộc tính quyết định tương ứng với 2 trường hợp là bị bệnh (có giá trị là 1) và không bị bệnh (có giá trị là 2). Ví dụ về cơ sở dữ liệu: 1, 172, 68, 49, 579, 42.4, 0.702, 28, 2. 0, 173, 78, 32, 265, 46.5, 1.159, 58, 1. 6, 111, 64, 39, 0, 34.2, 0.260, 24, 1. 9, 152, 78, 34, 171, 34.2, 0.893, 33, 2. 0, 189, 104, 25, 0, 34.3, 0.435, 41, 2. 1, 122, 64, 32, 156, 35.1, 0.692, 30, 2. 3, 111, 56, 39, 0, 30.1, 0.557, 30, 1. 2, 125, 60, 20, 140, 33.8, 0.088, 31, 1. Các thuộc tính tương ứng với một số đại lượng mà các bác sĩ dùng để xác định tình trạng bệnh của bệnh nhân. − Thuộc tính (1): Số lần mang thai. − Thuộc tính (2): Plasma glucose concentration a 2 hours in an oral glucose tolerance test. − Thuộc tính (3) : Diastolic blood pressure (mm Hg). − Thuộc tính (4): Triceps skin fold thickness (mm). − Thuộc tính (5): 2-Hour serum insulin (mu U/ml). − Thuộc tính (6): Body mass index (weight in kg/(height in m)^2) − Thuộc tính (7): Diabetes pedigree function − Thuộc tính (8):Tuổi của bệnh nhân. − Thuộc tính (9): bằng 1 nếu bị bệnh và bằng 2 nếu không bị bệnh. Bộ dữ liệu gồm thông tin về 768 bệnh nhân, trong đó: • 500 (65.1%) người là bị bệnh. • 268 (34.9%) người là không bị bệnh. Trong ví dụ trên thì bệnh nhân có thông tin lưu trữ ở dòng 1 là một người không bị bệnh vì có thuộc tính thứ (9) có giá trị là 2. Một đặc điểm quan trọng trong cơ sở dữ liệu này là có thể có những dữ liệu là số thực, điều này khiến nhiều thuật toán không thể thực hiện được trước khi định lượng các giá trị đó. Thuật toán xây dựng cây quyết định nhờ sử dụng siêu phẳng được trình bày trong Chương 2 phần 2.2.2.4 có thể thực hiện trên loại dữ liệu này. 3.2 . Xây dựng chương trình Chương trình được xây dựng trên ngôn ngữ lập trình Visual C++ 6.0 theo phương pháp lập trình hướng đối tượng hoàn toàn, thực hiện thuật toán được trình bày trong Chương 2 phần 2.2.2.4. Chương trình có cấu trúc như sau: • Lớp các đối tượng CObj: class CObj { public: int FindTheBestAttribute(); int DelObject(); //hàm lấy thông tin về một đối tượng ở đầu danh sách. int GetObject(int &iNAttribute,float *arrAttri); //hàm thêm một đối ở đầu danh sách. void AddObject(int iNAttribute,float *arrAttr); // sô thuộc tính của đối tượng. int iNumberAttribute; //mảng giá trị của các thuộc tính. float *arrAttribute; //con trỏ đến đối tượng tiếp theo. CObj *pntNext; CObj(); virtual ~CObj(); }; Mỗi biến thuộc lớp này lưu thông tin về một danh sách các đối tượng, tại mỗi nút lưu thông tin về một đối tượng, con trỏ pntNext là con trỏ chỉ đến đối tượng tiếp theo thuộc danh sách. • Lớp siêu phẳng CHyperPlane: Khai báo: class CHyperPlane { public: float fPower; //độ mạnh của siêu phẳng // Thông tin về nhát cắt gồm thuộc tính iAttribute và giá trị nhát cắt trên thuộc tính đó fCut. float fCut; int iAttribute; CHyperPlane(); virtual ~CHyperPlane(); }; Mỗi đối tượng thuộc lớp này chứa thông tin về một siêu phẳng. Môt siêu phẳng đặc trưng bởi 2 giá trị là iAttribute là tên thuộc tính được chọn và fCut là giá trị trên nhát cắt đó được chọn. • Lớp tập giá trị của một thuộc tính CValueSet: class CValueSet { public: float arrValue[1000]; int iNumberValue; CValueSet(); virtual ~CValueSet(); }; Mỗi đối tượng chứa thông tin về các giá trị của một thuộc tính được tính bằng hàm GetValueSet() trong lớp CDecisionTree sẽ được trình bày sau đây. • Lớp cây quyết định CDecisionTree: class CDecisionTree { public: // Các biến của lớp float fValueDecision; CHyperPlane hypBest; CValueSet ValueSetCurrent; CObj *pntObjects ; CDecisionTree *pntLeft,*pntRight; // Các hàm thực hiện trên các biến của lớp int testObject(CObj *pntObj); void SinhLuat(char *strRule); void MDAlgoritthm(); float GetPower(float fCut,int iAttribute); void FindTheBestHyperPlane(); float GetGain(int iAttribute); int FindTheBestAttri(); void GetValueSet(int iAttribute); int GetNumberObject(int iAttribute=0, float fValue=0.0); float GetEntropy(int iAttribute=0,float fValueAttri=0); int DelObject(); void AddObjects(int iNAttribute,float *arrAttr); CDecisionTree(); virtual ~CDecisionTree(); }; Mỗi đối tượng thuộc lớp này thể hiện một nút trong cây quyết định. Các biến thuộc lớp có ý nghĩa như sau: Các biến: − fValueDecision là một biến kiểu float lưu giá trị quyết định ở các nút lá của cây quyết định. − hypBest là biến kiểu CHyperPlane lưu thông tin về siêu phẳng được chọn tại các nút trong của cây quyết định. Trong trường hợp là nút lá thì biến này không được xét đến. − ValueSetCurrent là biến kiểu CValueSet lưu thông tin về tập giá trị của thuộc tính tai thời điểm xét. − Con trỏ pntObjects là biến kiểu CObj lưu thông tin về tập các đối tượng thuộc nút. Trong trường hợp là nút là thì con trỏ có giá trị NULL. − Hai con trỏ pntLeft và pntRight là biến kiểu CDecisionTree chính là 2 nút con của nút hiện tại trong thuật toán. Các hàm: − testObject(CObj *pntObj) là hàm thực hiện kiểm tra xem đối tượng pntObj có được phân lớp đúng theo cấy quyết định được tạo ra không. − SinhLuat(char *strRule) thực hiện sinh luật dựa trên cây quyết định. − MDAlgoritthm() đây là hàm thực hiện thuật toán chính. − GetPower(float fCut,int iAttribute) là hàm trả về độ mạnh của siêu phẳng. − FindTheBestHyperPlane() là hàm tìm siêu phẳng tốt nhất. − GetGain(int iAttribute) là hàm lấy độ đo thông tin của thuộc tính iAttribute. − FindTheBestAttri() là hàm tìm thuộc tính tốt nhất. − GetValueSet(int iAttribute) là hàm lấy về tập giá trị của thuộc tính iAttribute trả về biến ValueSet. − GetNumberObject(int iAttribute=0, float fValue=0.0) trả về số đối tượng thuộc nút tai thời điểm gọi. − GetEntropy(int iAttribute=0,float fValueAttri=0) hàm tính Entropy. − DelObject() thực hiện xoá một đối tượng thuộc pntObjects. − AddObjects(int iNAttribute,float *arrAttr) thực hiện thêm một đối tượng thuộc pntObjects. Trong các hàm trên chú ý nhất là hàm MDAlgoritthm() là hàm thực hiện thuật toán. void CDecisionTree::MDAlgoritthm() { . . . } Hàm này thực hiện thuật toán chính của chương trình. Chương trình được xây dựng để có thể chạy không chỉ trên bộ dữ liệu về bệnh tiểu đường mà còn có thể thực hiện khai phá luật trên cả những bộ dữ liệu khác chỉ cần thoả mãn những điều kiện sau đây: − Giá trị của thuộc tính quyết định chỉ có 2 loại. − Tệp dữ liệu phải có câu trúc như đã trình bày ở trên. Tuy nhiên, số thuộc tính có thể nhiều hơn hoặc ít hơn 9 thuộc tính. Giao diện của chương trình: Chương trình cho phép bạn lựa chọn giữa việc sinh luật hoặc là kiểm tra độ chính xác trong phân lớp của thuật toán. Để sư dụng bạn thực hiện các bước sau: − Nhập tên file huấn luyện vào. − Nhập tên file dữ liệu kiểm thử. − Ấn nút tạo cây để chương trình tạo cây quyết định. − Ấn nút kiểm thử để chương trình thực hiện việc kiểm thử. − Ấn nút sinh luật để chương trình sinh luật ra một file dữ liệu luat.txt. 3.3 . Kết quả thử nghiệm Kết quả kiểm thử khai phá dữ liệu bệnh tiểu đường đã trình bày được ở trên. Bộ dữ liệu gồm 768 ví dụ được chia thành 2 bộ dữ liệu huấn luyện và dữ liệu kiểm thử như sau. Chúng tôi lấy 200 đối tượng đầu tiên để làm dữ liệu kiểm thử, còn lại 568 mẫu ví dụ khác chúng tôi lần lượt lấy số mẫu huấn luyện tương ứng là 50, 100, ...500 và tập huấn luyện cuối cùng là 568. Khi đó thu được kết quả như sau: Trương hợp 1: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 50 ví dụ: huanluyen1.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 114 mẫu kiểm thử là phân lớp đúng (62,00%). − 86 mẫu kiểm thử là phân lớp sai(38,00%). Trương hợp 2: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 100 ví dụ: huanluyen2.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 133 mẫu kiểm thử là phân lớp đúng (67,00%). − 67 mẫu kiểm thử là phân lớp sai(33,00%). Trương hợp 3: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 150 ví dụ: huanluyen3.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 134 mẫu kiểm thử là phân lớp đúng (64,50%). − 66 mẫu kiểm thử là phân lớp sai(35,50%). Trương hợp 4: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 200 ví dụ: huanluyen4.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 142 mẫu kiểm thử là phân lớp đúng (68,50%). − 58 mẫu kiểm thử là phân lớp sai(31,50%). Trương hợp 5: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 250 ví dụ: huanluyen5.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 124 mẫu kiểm thử là phân lớp đúng (62,50%). − 76 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 6: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 300 ví dụ: huanluyen6.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 137 mẫu kiểm thử là phân lớp đúng (62,50%). − 63 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 7: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 350 ví dụ: huanluyen7.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 132 mẫu kiểm thử là phân lớp đúng (62,50%). − 68 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 8: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 400 ví dụ: huanluyen8.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 137 mẫu kiểm thử là phân lớp đúng (62,50%). − 63 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 9: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 450 ví dụ: huanluyen9.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 130 mẫu kiểm thử là phân lớp đúng (62,50%). − 70 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 10: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 500 ví dụ: huanluyen10.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 132 mẫu kiểm thử là phân lớp đúng (62,50%). − 68 mẫu kiểm thử là phân lớp sai(37,50%). Trương hợp 11: Dữ liệu đầu vào: − Dữ liệu huấn luyện là 568 ví dụ: huanluyen11.txt . − Dữ liệu kiểm thử là 200 ví dụ: kiemthu.txt . Kết quả: − 133 mẫu kiểm thử là phân lớp đúng (62,50%). − 67 mẫu kiểm thử là phân lớp sai(37,50%). Ta có bảng tổng kết sau:( số mẫu kiểm thử là 200). Số mẫu đúng Số mẫu sai %Đúng 50 mẫu HL 114 86 57,00 100 mẫu HL 133 67 66,50 150 mẫu HL 134 66 67,00 200 mẫu HL 142 58 71,00 250 mẫu HL 124 76 62,00 300 mẫu HL 137 63 68,50 350 mẫu HL 132 68 66,00 400 mẫu HL 137 63 68,50 450 mẫu HL 130 70 65,00 500 mẫu HL 132 68 66,00 568 mẫu HL 133 67 66,50 Bảng 16. Kết quả thử nghiêm chương trình. 3.4 . Nhận xét đánh giá kết quả thực nghiệm Qua kết quả thực nghiệm của chương trình trong bảng 16 chúng tôi nhận thấy rằng thuật toán đã phần nào phân lớp được các đối tượng bị bệnh và không bị bệnh. Tỉ lệ số đối tượng được phân lớp đúng khoảng 65% đến 70%. Qua đó khẳng định thuật toán trình bày trong Chương 2 phần 2.2.2.4. là có khả năng phân lớp được dữ liệu dựa trên một cách chọn siêu phẳng khá đơn giản. Để nâng cao được kết quả thực nghiệm chúng ta cần có một phương pháp chọn siêu phẳng tổng quát hơn, hiệu quả hơn. Cách chọn siêu phẳng được trình bày trong Chương 2 phần 2.2.2.4. của khoá luận tốt nghiệp là khá đơn giản để lập trình, tuy nhiên chưa thực sự hiệu quả cho việc phân lớp. Nhất là với dữ liệu kiểu thực thì việc lựa chọn siêu phẳng dựa trên cách chọn thuộc tính tốt nhất dùng hàm độ đo thông tin Infomation Gain là không hiệu quả khi tập giá trị của thuộc tính đó của các đối tượng khác nhau là rất lớn, gần như bằng chính số đối tượng. Chương trình của chúng tôi đã thành công trong việc mô phỏng thuật toán của tác giả [1] với một cách chọn siêu phẳng khá đơn giản. Tuy nhiên, chương trinh còn có một số hạn chế như: − Chỉ làm việc được với một loại cấu trúc dữ liệu đầu vào. − Chưa đưa ra được một cách chọn siêu phẳng đủ mạnh để phân lớp dữ liệu theo thuật toán trình bày trong Chương 2 phần 2.2.2.4 − Thuộc tính quyết định chỉ được phép nhận 2 giá trị. − Tâp thuộc tính quyết định chỉ là một thuộc tính quyết định. KẾT LUẬN Sau một thời gian nguyên cứu và tìm hiểu trong quá trình làm luận văn Tài liêu tham khảo: [1]. Aleksander. Discernibility and Rough Sets in Medicine: Tools and Applications Knowledge Systems Group, Dept. of Computer and Information Science, Norwegian University of Science and Technology, Trondheim, Norway. [2]. Andrzej Skowron, Ning Zong (2000). Rough Sets in KDD. Tutorial Notes. [3]. Ho Tu Bao (1996). Introduction to Knowledge Discovery and Data mining. Institute of Information Technology National Center for Natural Science and Technology. [4]. Fayyad, Piatetsky-Shapiro, Smyth, “From Data Mining to Knowledge Discovery: An Overiew”, in Fayyad, Piatetsky-Shapiro, Smyth, Uthurusamy, Advances in Knowl\ledge Discovery and Data Mining, AAAI Press/ The MIT Press, Menlo Park, CA, 1996, pp,1-34 [5]. Sinh Nguyen Hoa, Andrzej Skowron, Piotr Synak (1998). Discovery of Data Patterns with Application to Decomposition and Classification Problems. [6]. Jan Komorowski, Zdzislaw Pawlak, Lech Polkowski, Andrzej Skowron (2000). Rough sets: A tutorial [7]. Rakesh Agrawal, Tomasz Imielinski, Arun Swami (1993). Mining Assosication Rules between Sets of item in Large Databases. Proceedings of the 1993 ACM SIGMOD conference Washington DC, USa, May 1993 [8] Ronald J.Branchman and Tej Anand. The Process of Knowledge Discoery inDatabases, 1996 [9] Nguyen Hung Son, Nguyen Sinh Hoa. From Optimal Hyperplanes to Optimal Decision Trees: Rough Set and Boolean Reasoning Approaches, Institute of Computer Sciences Warsaw University 02-097, Banacha 2, Warsaw, Poland [10] Hà Quang Thuỵ (1996). Một số vấn đề về không gian xấp xỉ, tập thô đối với hệ thông tin. Luận án Phó tiến sĩ Khoa học Toán Lý. ĐHKHTN, 1996 [11] Tom M. Mitchen. Machine Learning. Mc Graw Hill, pp52-76 [12]. Wojciech P. Ziarko (Ed., 1994). Rough Sets, Fuzzy Sets and Knowledge Discovery. Proceedings of the International Workshop on Rough Sets and Knowledge Discovery (RSKD'93), Banff, Alberta, Canada, 12-15 October 1993. Springer-Verlag.

Các file đính kèm theo tài liệu này:

  • pdfk44_nguyen_danh_hoan_thesis_7316.pdf