Thuật toán khai phá luật kết hợp

Một phần của 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ô (Trang 26)

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. (adsbygoogle = window.adsbygoogle || []).push({});

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 a→(la)ởđây a là tập con của l sao cho

( ) ( )a conf p l p min sup sup ≥

Ta có, với một tập a*⊂a thìsupp( )a* ≥supp( )a nên độ tin cây của luật dạng a*→(la*) không thể lớn hơn luật dạng a→(la). Do đó nếu luật

(l a)

a→ − không được chấp nhận thì luật dạng a*→(la*) 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

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

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. (adsbygoogle = window.adsbygoogle || []).push({});

− 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.

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 gainentropy.

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à: (adsbygoogle = window.adsbygoogle || []).push({});

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 i i p p S Entropy 1 2 log

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.

∑ ∈ − ≡ ) ( ) ( ) ( ) , ( A Values V V V S Entropy S S S Entropy A S Gain ( , ) ( ) ( ) } 1 , 0 { v v v S Entropy S S S Entropy ai S Gain ∑ ∈ − =

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

Một phần của 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ô (Trang 26)