2.4.1. Thuật toán Apriori-TID
Như đã biết, thuật toán Apriori quét toàn bộ CSDL trong mỗi giai đoạn để tính độ hỗ trợ. Việc quét toàn bộ CSDL có thể không cần thiết trong mọi giai đoạn. Với ý tưởng này, Agrawal đã đề xuất thuật toán Apriori-TID. Tương tự như thuật toán Apriori, thuật toán này cũng sử dụng hàm Apriori-gen() để xác định các tập mục ứng viên
trước khi bắt đầu mỗi giai đoạn. Điểm khác nhau chủ yếu của thuật toán này so với Apriori là nó không sử dụng CSDL để tính độ hỗ trợ trong các giai đoạn ( với k>1). Thay vào đó, nó sử dụng mã hóa các tập mục ứng viên đã được sử dụng trong giai đoạn trước, Ck’. Nhiều thí nghiệm trên nhiều CSDL chỉ ra rằng thuật toán Apriori cần ít thời gian hơn Apriori-TID trong các giai đoạn đầu, tuy nhiên lại mất nhiều thời gian hơn trong các giai đoạn sau [9].
2.4.2. Thuật toán Apriori-Hybrid
Thuật toán này dựa vào ý tưởng sau: “ Không nhất thiết phải áp dụng cùng một thuật toán cho tất cả các giai đoạn lên dữ liệu”. Như đã đề cập ở trên, thuật toán Apriori thực hiện hiệu quả ở các giai đoạn đầu, thuật toán Apriori-TID thực hiện hiệu quả ở các giai đoạn sau. Kết hợp hai thuật toán trên, phương pháp này sử dụng thuật toán Apriori ở giai đoạn đầu, và sử dụng thuật toán Apriori-TID ở các giai đoạn sau [9].
2.4.3. Thuật toán AIS ( Agrawal Imielinski Swami)
Trong thuật toán AIS, tập các mục ứng viên được sinh ra và được tính khi quét toàn bộ CSDL. Với mỗi giao dịch T, thuật toán chọn tập các mục phổ biến nào đã được phát hiện ở các giai đoạn trước có chứa giao dịch T. Các tập mục ứng viên mới được sinh ra bằng việc mở rộng các tập mục phổ biến này với các mục khác trong giao dịch T. [8,9]
2.4.4. Thuật toán DIC ( Dynamic Itemset Counting)
Thuật toán DIC bắt đầu tính độ hỗ trợ cho k-tập mục sau khi quét (k-1)M giao dịch, M< và dừng việc tính sau khi k-tập mục được tìm thấy trong tất cả các giao dịch. Thuật toán Apriori là trường hợp đặc biệt của thuật toán DIC, ứng với M= . Vì vậy, thuật toán DIC thực hiện tốt hơn thuật toán Apriori nếu M được chọn thích hợp [9].
2.4.5. Thuật toán phân hoạch
Thuật toán này chia CSDL thành các phân hoạch nhỏ, mỗi phân hoạch có thể được lưu trữ trên bộ nhớ chính. Cho các phân hoạch của CSDL D là D1, D2,..., Dn. Lần quét đầu tiên, thuật toán tìm tập mục phổ biến trên mỗi phân hoạch Di ( 1≤ i gọi là tập mục phổ biến cục bộ. Mỗi tập mục phổ biến cục bộ Li có thể được tìm thấy bằng cách sử dụng thuật toán Apriori. Lần quét thứ hai, thuật toán này sử dụng tính chất sau: tập
mục phổ biến thỏa mãn trên CSDL toàn cục thì cũng là tập mục phổ biến cục bộ trong ít nhất một phân hoạch nào đó của CSDL. Ta hợp các tập mục phổ biến cục bộ được tìm thấy trong mỗi phân hoạch để tạo ra các tập mục ứng viên và thực hiện tính độ hỗ trợ tổng thể trên CSDL D, để tìm tất cả các tập mục phổ biến. Thuật toán này thực thi tốt trên các máy tính song song. Thuật toán Apriori chỉ thực hiện tốt hơn thuật toán phân hoạch khi nào ngưỡng hỗ trợ lớn [9].
2.5. Khai phá luật kết hợp định lượng
2.5.1. Một số hướng tiếp cận trong khai phá luật kết hợp
Lĩnh vực khai thác luật kết hợp cho đến nay đã được nghiên cứu và phát triển theo nhiều hướng khác nhau, như đề xuất nhằm cải tiến tính hiệu quả của một số thuật toán đã có hay đề xuất tìm kiếm các luật có ý nghĩa và đáng tin cậy hơn, v.v... Một số hướng khai phá luật kết hợp được đề cập ở đây như:
Khai phá luật kết hợp nhị phân (binary association rule ): là hướng nghiên cứu đầu tiên của luật kết hợp. Trong đó các mục(item) trong CSDL giao dịch đều là các thuộc tính Boolean thể hiện sự xuất hiện hay không xuất hiện của một mục hàng trong một giao dịch và đặc biệt là vai trò của chúng được xem là tương đương nhau. Ví dụ: Trong một giao dịch, việc bán một mặt hàng bột giặt và máy giặt được xem là tương đương nhau. Trên thực tế, việc bán một chiếc máy giặt đem lại lợi nhuận lớn hơn rất nhiều so với việc bán một túi bột giặt. Thuật toán tiêu biểu nhất của khai phá dạng luật này là thuật toán Apriori .
Khai phá luật kết hợp có trọng số ( Mining Weighted Association Rules): đây là hướng khai phá mở rộng cho bài toán khai phá luật kết hợp nhị phân. Trong đó phương pháp này quan tâm đến tầm quan trọng của các mục khác nhau trong CSDL. Các mục quan trọng thường là các mục đem lại nhiều lợi nhuận. Để xác định tầm quan trọng của các mục, người ta gán cho mỗi mục một giá trị mô tả mức độ quan trọng của các mục. Giá trị này thường được cho kèm theo bảng CSDL giao dịch và được gọi là trọng số mục. Trọng số càng lớn, mức độ quan trọng càng cao và ngược lại. Nhờ vậy, ta có thể thu được những luật “hiếm” ( tức là các luật có độ hỗ trợ thấp nhưng mang nhiều ý nghĩa). Bài toán khai phá luật kết hợp trên những CSDL được đánh trọng số như trên được C.H.Cai, Ada W.C.Fu, C.H Cheng và W.W Kwong giới thiệu năm 1998.
Khai phá luật kết hợp định lƣợng (Mining Quantitive Association Rules): Các thuộc tính trong cơ sở dữ liệu được phân làm hai loại là thuộc tính định lượng và thuộc tính phân loại. Thực hiện việc ánh xạ các thuộc tính định lượng và phân loại sang dạng nhị phân, từ đó áp dụng các phương pháp khai phá luật kết hợp nhị phân để tìm các luật mạnh.
Khai phá luật kết hợp tiếp cận theo hƣớng tập thô ( Mining association rules base on rough set ): tìm kiếm luật kết hợp dựa trên lí thuyết tập thô.
Khai phá luật kết hợp đa mức ( Multi-level association rules ): với cách tiếp cận luật kết hợp thế này sẽ tìm kiếm thêm những luật có dạng : mua máy tính PC mua hệ điều hành Window và mua phần mềm văn phòng Microsoft Office,… Khai phá luật kết hợp đa mức sử dụng một số chiến lược, dựa trên các ngưỡng hỗ trợ tối thiểu được định nghĩa ở mỗi mức trừu tượng, như là uniform support, reduced support, và group-based support. Dự phòng đa mức các luật kết hợp (hậu duệ) có thể bị loại bỏ nếu ngưỡng hỗ trợ và tin cậy của chúng gần với giá trị dự kiến, dựa trên luật gốc tương ứng của chúng .
Khai phá luật kết hợp mờ (Fuzzy association rules ): Với những khó khăn gặp phải khi rời rạc hoá các thuộc tính số, các nhà nghiên cứu đề xuất luật kết hợp mờ để khắc phục hạn chế đó và chuyển luật kết hợp về một dạng gần gũi hơn. Khai phá luật kết hợp song song (Parallel mining of association rule ). Nhu cầu
song song hoá và xử lí phân tán là cần thiết vì kích thước dữ liệu ngày càng lớn nên đòi hỏi tốc độ xử lí phải được đảm bảo
Trên đây là những biến thể của khai phá luật kết hợp cho phép ta tìm kiếm luật kết hợp một cách linh hoạt trong những cơ sở dữ liệu lớn. Trong phần tiếp theo luận văn sẽ làm rõ hơn về hướng Khai phá luật kết hợp định lƣợng (Mining Quantitive Association Rules).
2.5.2. Khai phá luật kết hợp định lượng
2.5.2.1. Tổng quan về khai phá luật kết hợp định lƣợng
Từ khi được đề xuất vào năm 1993, mô hình bài toán khai phá luật kết hợp nhị phân đã được nghiên cứu và ứng dụng hiệu quả trong nhiều lĩnh vực, tuy nhiên nó cũng cho thấy một số hạn chế, đó là:
Vai trò của các mục trong CSDL là tương đương nhau.
Không quan tâm đến các đặc tính dữ liệu vốn có của các mục.
Do vậy, việc phát triển các mô hình mở rộng mới là nhu cầu tất yếu. Bài toán khai phá luật kết hợp nhị phân là một trong những hướng phát triển của bài toán khai phá luật kết hợp.
Như chúng ta đã đề cập ở các phần trước, tất các các mục trên các bảng CSDL quan hệ đều thể hiện ở hai trạng thái là sự xuất hiện hay không xuất hiện mục đó trong mỗi giao dịch, nghĩa là chúng đều tồn tại ở dạng nhị phân. Trên bảng quan hệ, mỗi mục tương ứng với một item, mỗi bản ghi tương ứng với một giao dịch (Transaction). Giá trị mỗi mục trong mỗi bản ghi bằng 1 nếu mục này là một mặt hàng được mua trong ít nhất một giao dịch, ngược lại thì bằng 0. Bài toán khai phá luật kết hợp nhị phân cũng đã được đề cập đến trong phần 2.5.1 theo hướng xác định tầm quan trọng của các mục trong dữ liệu, bằng việc gán giá trị trọng số cho các mục (Khai phá luật kết hợp có trọng số). Tuy nhiên, trên thực tế, các bảng trong CSDL được tổ chức với nhiều kiểu dữ liệu khác nhau, có thể chia thành hai loại:
Chứa các thuộc tính định lƣợng (Quantitative). Ví dụ: tuổi, lương,...
Chứa các thuộc tính phân loại (Categorical). Ví dụ: biển số xe, CMTND,...
Ví dụ 2.4 ID Tuổi Đã kết hôn Số lƣợng xe 001 002 003 004 005 23 25 29 34 39 No Yes No Yes Yes 1 1 0 2 2
Bảng 2.3. Bảng “People” chứa thuộc tính định lượng và phân loại
Trong Bảng 2.3, các thuộc tính như “Tuổi” và “Số lượng xe” là các thuộc tính định lượng (Quantitative), và thuộc tính “Đã kết hôn” là thuộc tính phân loại (Categorical). Bài toán khai phá luật kết hợp trên các bảng dữ liệu chứa các thuộc tính định lượng và
thuộc tính phân loại như trên được gọi là Bài toán khai phá luật kết hợp định lƣợng
(Mining Quantitative Asociation Rules) được đề xuất bởi R.Srikant và R.Agrawal, 1996 [5]. Áp dụng những kỹ thuật đã biết đối với bài toán Khai phá luật kết hợp nhị
phân, luận văn này sẽ trình bầy những kỹ thuật được áp dụng trong Bài toán khai phá luật kết hợp định lượng với mục đích đưa ra những mẫu luật có dạng:
(Biết rằng: min-sup = 40%, min-conf =50%).
Luật ( mẫu) Độ hỗ trợ Độ tin cậy
<Tuổi: 30..39> và <Đã kết hôn: Yes> <Số lượng xe: 2> <Số lượng xe: 0..1> < Đã kết hôn: No>
40% 40%
100% 66.6%
2.5.2.2. Ánh xạ từ bài toán khai phá luật kết hợp định lƣợng về bài toán khai phá luật kết hợp nhị phân
Để áp dụng được các thuật toán khai phá đã có đối với luật kết hợp nhị phân, ta phải thực hiện việc ánh xạ các thuộc tính định lượng (quantitative) và các thuộc tính phân loại (categorical) về dạng các thuộc tính nhị phân. Tư tưởng của phương pháp ánh xạ này được thể hiện như sau:
Đối với các mục phân loại hoặc các mục định lượng chỉ có một vài giá trị thì việc ánh xạ các mục này thành các mục nhị phân được thực hiện như sau:
o Nếu mục phân loại (categrical) có n loại hoặc các mục định lượng (quantitative) có n giá trị thì ta xây dựng n mục nhị phân tương ứng với n cặp có dạng: (mục x, giá trị 1), (mục x, giá trị 2),..., ( mục x, giá trị n).
oMỗi mục nhị phân này sẽ nhận một trong hai giá trị 0 hoặc 1. Trong đó, với k = 1..n; (mục x, giá trị k) có giá trị bằng 1 nếu mục x có giá trị bằng k trên bản ghi gốc, các mục còn lại tương ứng của x sẽ có giá trị bằng 0. Nếu miền giá trị của mục định lượng rộng, ta sẽ chia miền giá trị thành các
khoảng (interval) và sau đó tiến hành ánh xạ từng cặp (mục, khoảng) của mục định lượng tương ứng với một mục nhị phân.
Ví dụ 2.5 Ánh xạ các mục định lƣợng/phân loại sang dạng nhị phân
Từ Bảng 2.3, ánh xạ các mục phân loại và định lượng sang dạng nhị phân như sau:
ID Tuổi 20..29 Tuổi 30..39 Đã kết hôn (Yes) Đã kết hôn ( No) Số lƣợng xe (0) Số lƣợng xe (1) Số lƣợng xe (2) 001 002 003 1 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0
004 005 0 0 1 1 1 1 0 0 0 0 0 0 1 1
Nhận thấy: Các mục trong bảng kết quả nhận được sau khi ánh xạ đều có giá trị nhị phân, tuy nhiên số lượng các mục cũng tăng lên đáng kể. Với kết quả ánh xạ này, ta hoàn toàn có thể sử dụng các thuật toán khai phá luật kết hợp nhị phân để tìm luật kết hợp định lượng. Tuy nhiên, phương pháp ánh xạ này lại tồn tại hai hạn chế cơ bản sau:
Về “Độ hỗ trợ tối thiểu – Min-sup”: Nếu ta chia miền giá trị của các mục định lượng thành nhiều khoảng hoặc các mục không được phân khoảng có nhiều giá trị thì độ hỗ trợ cho bất kỳ một khoảng đơn nào hay một giá trị nào có thể sẽ rất thấp. Vì vậy, một số luật chứa các mục này sẽ không tìm thấy, do chúng không có độ hỗ trợ cần thiết.
Về “ Độ tin cậy tối thiểu – Min-conf”: Một số thông tin có thể bị mất khi chúng ta chia miền giá trị thành các khoảng. Một số luật chỉ có độ tin cậy tối thiểu khi ở vế trái chỉ là một mục đơn hoặc là một khoảng nhỏ. Sự mất mát thông tin ngày càng tăng khi kích thước các khoảng được chia càng lớn.
Từ đó cho thấy, nếu kích thước các khoảng là quá nhỏ (chia mục thành quá nhiều khoảng) thì một số luật có thể không có độ hỗ trợ tối thiểu. Ngược lại, nếu kích thước các khoảng là quá lớn (chia mục thành ít khoảng hoặc không chia khoảng), thì dẫn đến khả năng có một số luật sẽ không có độ tin cậy tối thiểu.
Tuy nhiên, việc tăng số lượng các khoảng đồng thời kết nối các khoảng liền kề sẽ dẫn đến hai vấn đề mới:
“Thời gian thực”: Nếu một thuộc tính định lượng có n giá trị (hoặc n khoảng), thì có trung bình O(n2) vùng, bao gồm các giá trị hoặc các khoảng cụ thể. Do đó, số các mục trên mỗi bản ghi tăng lên rất lớn, điều này sẽ làm tăng thời gian thực hiện.
“Quá nhiều luật”: Nếu một giá trị (hoặc một khoảng) của thuộc tính định lượng có độ hỗ trợ tối thiểu, thì một vài vùng cũng sẽ chứa khoảng này. Do đó, số lượng các luật tăng lên. Nhiều trong số đó sẽ không đáng quan tâm.
Vì vậy cần một sự thỏa hiệp giữa việc đẩy nhanh thời gian thực hiện với số lượng khoảng ít hơn và việc giảm mất mát thông tin với nhiều khoảng hơn. Chúng ta có thể giảm việc mất mát thông tin bằng cách tăng số lượng các khoảng, tại đó chi phí cho việc tăng thời gian thực và tiềm ẩn khả năng sinh nhiều luật không thú vị. Như vậy,
chúng ta sẽ cần xác định khi nào nên hay không nên phân chia một mục định lượng thành các khoảng? Và nếu tiến hành phân chia thì nên chia thành bao nhiêu khoảng là đủ? Và cách thức phân chia như thế nào cho tối ưu? Vấn đề này sẽ được đề cập ở các phần tiếp theo.
2.3.2.3. Phát biểu bài toán
Để giải quyết hai vấn đề nêu trên, chúng ta sử dụng cùng một phương thức đối với cả thuộc tính định lượng và thuộc tính phân loại. Đối với các thuộc tính phân loại, mỗi giá trị của các thuộc tính được ánh xạ tới một tập các số nguyên liên tiếp. Đối với các thuộc tính định lượng không phân chia thành các khoảng, các thuộc tính của chúng được ánh xạ tới tập các số nguyên liên tiếp. Đối với các thuộc tính định lượng được chia khoảng, các khoảng được ánh xạ tới các số nguyên liên tiếp, trong đó thứ tự giữa các khoảng được đảm bảo. Không mất tính tổng quát, phương thức ánh xạ này giúp chúng ta chuyển việc xử lý một bản ghi của CSDL bằng xử lý một cặp (thuộc tính, giá trị số nguyên tương ứng).
a) Bài toán khai phá luật kết hợp định lƣợng:
Gọi I = {i1,i2,...,im} là tập các mục, được gọi là các thuộc tính. Đặt P là tập số nguyên dương.
Cho Iv được biểu diễn bởi tập IP. Cặp (x,v) ϵ Iv biểu diễn kết nối giữa thuộc tính x và giá trị v.
Cho IR được biểu diễn bởi tập {< x, l, u > ϵ IPP l u, nếu x là thuộc tính định lượng; l = u, nếu x là thuộc tính phân loại}.
Do đó, một bộ ba <x, l, u> ϵ IR biểu diễn một thuộc tính định lượng x có giá trị thuộc