Khai phá tập mục thường xuyên được biết đến như một bài toán con của khai phá luật kết hợp được giới thiệu bởi Agrawal vào năm 1993 khi phân tích cơ sở dữ liệu bán hàng của siêu thị, phâ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
HOÀNG MINH QUANG
CÁC TẬP MỤC THƯỜNG XUYÊN
TRONG KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG
LUẬN VĂN THẠC SỸ
Hà Nội, 2010
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
HOÀNG MINH QUANG
CÁC TẬP MỤC THƯỜNG XUYÊN
TRONG KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 05
LUẬN VĂN THẠC SỸ NGƯỜI HƯỚNG DẪN: PGS TS Vũ Đức Thi
Hà Nội, 2010
Trang 3MỤC LỤC
MỤC LỤC 1
DANH MỤC VIẾT TẮT VÀ KÝ HIỆU 2
DANH MỤC BẢNG BIỂU, HÌNH ẢNH 3
GIỚI THIỆU 4
I KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 5
I.1 Mở đầu 5
I.2 Một số khái niệm cơ bản về tập mục 6
I.3 Tập mục thường xuyên và luật kết hợp 7
I.4 Mô tả bài toán khai phá luật kết hợp 9
I.5 Một số thuật toán khai phá tập mục thường xuyên và luật kết hợp 14
I.6 Thuật toán Apriori 16
I.7 Thuật toán FP-Growth 20
II CÁC BÀI TOÁN MỞ RỘNG KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 27
II.1 Một số nghiên cứu chuyên sâu về khai phá luật kết hợp 27
II.2 Khai phá tập mục cổ phần cao 28
II.3 Khai phá tập mục lợi ích cao 45
III CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM KHAI PHÁ TẬP MỤC LỢI ÍCH CAO 54
KẾT LUẬN 62
TÀI LIỆU THAM KHẢO 64
Trang 4DANH MỤC VIẾT TẮT VÀ KÝ HIỆU
Các ký hiệu:
I={I1,I2,…,In} Tập n mục dữ liệu
DB={T1,T2, …, Tm} Cơ sở dữ liệu có m giao tác
db: Cơ sở dữ liệu giao tác con của DB, db ⊆ DB
ip: Mục dữ liệu thứ p
Tq: Giao tác thứ q
n: Số mục dữ liệu trong một cơ sở dữ liệu giao tác
m: Số giao tác của một cơ sở dữ liệu giao tác
A, B, C…: Tên các mục dữ liệu trong cơ sở dữ liệu
X, Y,…: Tập con của tập mục dữ liệu I; X, Y ⊆ I
X = ABC thay cho X = {A,B,C} trong cơ sở dữ liệu giao tác
minsup: Ngưỡng độ hỗ trợ tối thiểu
minShare: Ngưỡng cổ phần tối thiểu
minutil: Ngưỡng lợi ích tối thiểu
Trang 5DANH MỤC BẢNG BIỂU, HÌNH ẢNH
Bảng 1 Biểu diễn cơ sở dữ liệu giao tác ngang 6
Bảng 2 Biểu diễn cơ sở dữ liệu giao tác dọc 7
Bảng 4 Cơ sở dữ liệu minh họa thực hiện thuật toán COFI-tree 22
Bảng 5 Các mục dữ liệu và độ hỗ trợ 22
Bảng 6 Các mục dữ liệu thường xuyên đã sắp thứ tự 22
Bảng 7 Các mục dữ liệu trong giao tác sắp xếp giảm dần theo độ hỗ trợ 23
Hình 1 Hình cây FP-Growth 23
Hình 2 Cây COFI-tree của mục D 24
Hình 3 Các bước khai phá cây D-COFI-tree 25
Bảng 8 Cơ sở dữ liệu giao tác cho khai phá tập mục cổ phần cao 29
Bảng 9 Xét CSDL Bảng 8 với minShare ≥ 30% 30
Bảng 10 Biểu diễn tất cả tập mục cổ phần cao 31
Bảng 11 CSDL minh họa có trường hợp hai hàm tới hạn bằng nhau 39
Bảng 12 CSDL minh họa trường hợp hai hàm tới hạn luôn bằng nhau 40
Bảng 13 Giá trị của hai hàm tới hạn với k=1 40
Bảng 14 Các giá trị lmv và hàm tới hạn với k=1 43
Bảng 15 Các giá trị lmv và hàm tới hạn với k=2 43
Bảng 16 các giá trị lmv và hàm tới hạn với k=3 44
Bảng 17 Cơ sở dữ liệu giao tác trong khai phá tập mục lợi ích cao 47
Bảng 18 Bảng lợi ích các mục dữ liệu 47
Bảng 19 Cở sở dữ liệu giao tác lợi ích cao với khai pháp cổ phần cao 49
Giao diện 1 Sheet HUI, dữ liệu được sinh bởi chương trình 54
Giao diện 2 Sheet Profit, dữ liệu nhập vào bằng tay 54
Giao diện 3 Giao diện chương trình chính 55
Giao diện 4 Kết quả thực hiện với ngưỡng lợi ích 30% 56
Trang 6Khai phá dữ liệu và khám phá tri thức (Data mining and knowledge discovery) là một lĩnh vực quan trọng của ngành Công nghệ thông tin Đây là lĩnh vực đã thu hút đông đảo các nhà khoa học trên thế giới và trong nước tham gia nghiên cứu Khai phá tập mục thường xuyên được biết đến như một bài toán con của khai phá luật kết hợp được giới thiệu bởi Agrawal vào năm 1993 khi phân tích cơ sở dữ liệu bán hàng của siêu thị, phân tích sở thích mua của khách hàng bằng cách tìm ra những mặt hàng khác nhau được khách hàng mua trong cùng một lần mua Những thông tin như vậy giúp người quản lý kinh doanh tiếp thị chọn lọc và thu xếp không gian bày hàng hợp lý hơn, giúp cho việc kinh doanh hiệu quả hơn
Khai phá tập mục thường xuyên gặp khó khăn khi xử lý cơ sở dữ liệu lớn
Vì thế đã có nhiều nghiên cứu về cách thức mở rộng, ứng dụng Rất nhiều kết quả nghiên cứu đã được công bố nhưng vấn đề khai phá tập mục thường xuyên vẫn được coi là bài toán khó
Với mục đích đóng góp vào lĩnh vực sôi động này, tác giả tìm hiểu và nghiên cứu về các thuật toán khai phá tập mục thường xuyên phổ biến nhất, đem lại một cái nhìn tổng quát về khai phá tập mục thường xuyên và luật kết hợp
Trang 7I KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
I.1 Mở đầu
Khai phá tập mục thường xuyên đóng vai trò quan trọng trong nhiều nhiệm
vụ khai phá dữ liệu Khai phá tập mục thường xuyên xuất hiện như bài toán con của nhiều lĩnh vực khai phá dữ liệu như khám phá luật kết hợp, khám phá mẫu tuần tự, phân tích tương quan, phân lớp, phân cụm dữ liệu, khai phá Web,… Bài toán khai phá tập mục thường xuyên được giới thiệu lần đầu bởi Agrawal vào năm 1993 khi phân tích cơ sở dữ liệu bán hàng của siêu thị [9] trong mô hình của bài toán khai phá luật kết hợp Khai phá luật kết hợp là phát hiện những mối quan hệ giữa các giá trị dữ liệu trong cơ sở dữ liệu, các mối quan hệ đó chính là các luật kết hợp
Khai phá luật kết hợp có hai bước: bước thứ nhất, tìm các tập mục thường xuyên thỏa mãn ngưỡng độ tối thiểu minsup cho trước, bước thứ hai, từ các tập mục thường xuyên tìm được, sinh ra các luật kết hợp thỏa mãn ngưỡng độ tin cậy minconf cho trước Mọi khó khăn của bài toán khai phá luật kết hợp tập trung ở bước thứ nhất, đó là khai phá tập mục thường xuyên thỏa mãn ngưỡng
độ hỗ trợ cho trước
Kể từ khi Agrawa đề xuất, khai phá tập mục thường xuyên đã thu hút được
sự quan tâm của nhiều nhà nghiên cứu, đã có hàng trăm kết quả nghiên cứu được công bố giới thiệu các thuật toán mới hay đề xuất các giải pháp nâng cao hiệu quả các thuật toán đã có Tập mục thường xuyên đã có vai trò quan trọng trong nhiều ứng dụng thực tế như quản lý quan hệ khách hàng, nâng cao hiệu quả của thương mại điện tử, trong lĩnh vực tin sinh học, phân tích cấu trúc Protein và DNA, mở rộng truy vấn, phát hiện xâm nhập mạng…[13, 14, 15, 16]
Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trong thực tế nhưng có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sử dụng Ràng buộc về độ hỗ trợ và độ tin cậy của luật kết hợp chỉ mang ngữ nghĩa thống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũng như đặc tính dữ liệu vốn có của chúng trong cơ sở dữ liệu
Trang 8Để đáp ứng yêu cầu của thực tiễn, khai phá tập mục thường xuyên đã có nhiều cách thức mở rộng và ứng dụng, từ thay đổi phương pháp luận đến thay đổi đa dạng các kiểu dữ liệu, mở rộng các nhiệm vụ khai phá và đa dạng các ứng dụng mới Trong những năm qua, đã có nhiều hướng mở rộng bài toán được quan tâm nghiên cứu
Chương một này sẽ trình bày các vấn đề cơ bản của bài toán khai pháp tập mục thường xuyên
I.2 Một số khái niệm cơ bản về tập mục
Định nghĩa 1.1: Cho tập mục (item) I={I1,I2,…,Im} Một giao tác (transaction) T là một tập con của I, T⊆ I Cơ sở dữ liệu giao tác là tập các giao tác DB={T1,T2, …, Tm} Mỗi giao tác được gán một định danh Tid. Một tập mục con X ⊆ I, gồm k mục phân biệt được gọi là k-tập mục Giao tác T gọi là chứa tập mục X nếu X ⊆ T
Biểu diễn cơ sở dữ liệu giao tác: Cơ sở dữ liệu giao tác thường được biểu
diễn ở dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác
Biểu diễn ngang: cơ sở dữ liệu là một danh sách các giao tác Mỗi giao tác
có một định danh Tid và một danh sách các mục dữ liệu trong giao tác đó
B ảng 1 Biểu diễn cơ sở dữ liệu giao tác ngang
Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục
dữ liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này
Trang 9B ảng 2 Biểu diễn cơ sở dữ liệu giao tác dọc
Biểu diễn ma trận nhị phân: Cơ sở dữ liệu giao tác trên tập mục (item)
được biểu diễn bởi ma trận nhị phân M = (mpq)mxn ở đó
B ảng 3 Biểu diễn cơ sở dữ liệu giao tác ma trận
I.3 Tập mục thường xuyên và luật kết hợp
Định nghĩa 1.2: Cho tập mục X ⊆ I Độ hỗ trợ (Support) của tập mục X
trong cơ sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm của các giao tác chứa tập mục X trên tổng số giao tác trong DB, tức là:
|
|
| }
| {
| )
sup(
DB
X T DB T
=
Định nghĩa 1.3: Cho tập mục X⊆I với ngưỡng hộ trợ tối thiểu (minimum
support) minsup ∈ [0,1] (được xác định trước bởi người sử dụng) X được gọi là
tập mục thường xuyên (frequent itemset hoặc large itemset) với độ hỗ trợ tối
Trang 10thiểu minsup nếu sup(X) ≥ minsup, ngược lại X gọi là tập mục không thường
xuyên
Định nghĩa 1.4: Một luật kết hợp là một biểu thức dạng X →Y, trong đó
X và Y là các tập con của I, X∩Y=∅; X gọi là tiên đề, Y gọi là kết luận của luật
Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy
Định nghĩa 1.5: Độ hỗ trợ (support) luật kết hợp, ký hiệu là sup(X →Y),
là độ hỗ trợ của tập mục X∪Y, sup(X →Y) = sup(X∪Y)
Như vậy độ hỗ trợ của luật kết hợp X →Y chính là xác suất P(X∪Y) của
sự xuất hiện đồng thời của X và Y trong một giao tác
) sup(
)
(
X
Y X Y
) sup(
| }
| {
|
| }
| {
|
| }
| {
|
| }
| {
| ) /
(
X
Y X T
X DB T
T Y X DB T T
X DB T
T Y T X DB T Y
I.3.1 Bài toán khai phá luật kết hợp
Xác định tất cả X⇒⇒Y thỏa mãn độ hỗ trợ và độ tin cậy tối thiểu thì luật X⇒⇒Y được gọi là luật kết hợp mạnh
Trang 11I.3.2 Một số tính chất của tập mục thường xuyên
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup Các tập mục thường xuyên có tính chất sau:
(1) Nếu X, Y là các tập mục và X ⊆ Y thì sup(X) ≥ sup(Y)
(2) Nếu một tập mục là không thường xuyên thì mọi tập cha của nó cũng là không thường xuyên
(3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nó cũng là tập mục thường xuyên
Tính chất (3) là tính chất quan trọng, nó được gọi là tính chất Apriori, tính chất này là cơ sở để rút gọn không gian tìm kiếm các tập mục thường xuyên
I.4 Mô tả bài toán khai phá luật kết hợp
Khai phá luật kết hợp là một kỹ thuật quan trọng của khai phá dữ liệu Vấn
đề này được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào năm 1993 [9] Sau đó năm 1996 được Rakesh Agrawal, Heikki Mannia, Ramakrishnan Srikant, Hannu Toivonen, A.Inkeri Verkamo tiếp tục cải tiến Ngày nay bài toán khai thác các luật kết hợp nhận được rất nhiều sự quan tâm của nhiều nhà khoa học Việc khai thác các luật như thế nào vẫn là một trong các phương pháp khai thác mẫu phổ biến nhất trong việc khám phá tri thức và khai thác dữ liệu (KDD – Knowledge Discovery and Data Minning)
Mục đích chính của khai phá dữ liệu là trích rút tri thức một cách tự động, hiệu quả và “thông minh” từ kho dữ liệu
Trong hoạt động sản xuất kinh doanh, ví dụ kinh doanh các mặt hàng tại siêu thị, các nhà quản lý rất thích có được những thông tin mang tính thống kê như: “90% phụ nữ có xe máy màu đỏ và đeo đồng hồ Thụy Sỹ thì dùng nước hoa hiệu Chanel” hoặc “70% khách hàng là công nhân thì mua TV thường mua loại 21 inches” Những thông tin như vậy rất hữu ích trong việc định hướng kinh doanh Vậy vấn đề đặt ra là liệu có tìm được các luật như vậy bằng các
Trang 12công cụ khai phá dữ liệu hay không? Câu trả lời là hoàn toàn có thể Đó chính là nhiệm vụ khai phá luật kết hợp
Giả sử chúng ta có một CSDL D Luật kết hợp cho biết phạm vi mà trong
đó sự xuất hiện của tập các thuộc tính S nào đó trong các bản ghi (records) của
D sẽ kéo theo sự xuất hiện của một tập những thuộc tính khác U cũng trong những bản ghi đó Mỗi luật kết hợp được đặc trưng bởi một cặp tỉ lệ hỗ trợ (support ration) Mỗi tỉ lệ hỗ trợ được biểu diễn bằng tỉ lệ % những bản ghi trong D chứa cả S và U
Vấn đề khám phá luật kết hợp được phát biểu như sau:
Cho trước tỉ lệ hỗ trợ (support ration) θ và độ tin cậy (confidence) β
Đánh số tất cả các luật trong D có các giá trị tỉ lệ hỗ trợ và tin cậy lớn hơn
θ và β tương ứng
Ví dụ: Gọi D là CSDL mua bán và với θ = 40%, β = 90%
Vấn đề phát hiện luật kết hợp được thực hiện như sau:
Liệt kê (đếm) tất cả những quy luật chỉ ra sự xuất hiện một số các mục kéo theo một số mục khác
Chỉ xét những quy luật mà tỉ lệ hỗ trợ lớn hơn 40% và độ tin cậy lớn hơn 90%
Hay chúng ta hãy tưởng tượng, một công ty bán hàng qua mạng Internet Các khách hàng được yêu cầu điền vào các mẫu bán hàng để công ty có một CSDL về các yêu cầu của khách hàng Giả sử công ty quan tâm đến mối quan
hệ “tuổi, giới tính, nghề nghiệp => sản phẩm” Khi đó có thể có rất nhiều câu hỏi tương ứng với luật trên Ví dụ: trong lứa tuổi nào thì những khách hàng nữ
là công nhân đặt mua mặt hàng gì đó, ví dụ áo dài chẳng hạn là nhiều nhất (thỏa mãn một ngưỡng nào đó)?
Cho cơ sở dữ liệu giao tác DB, ngưỡng độ hỗ trợ tối thiểu minsup và ngưỡng độ tin cậy minconf
Trang 13Yêu cầu: Tìm tất cả các luật kết hợp X Y trên cơ sở dữ liệu DB sao cho sup(XY) ≥ minsup và conf(XY) ≥ minconf
Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài toán nhị phân, vì ở đây, giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuất hiện hay không xuất hiện)
Bài toán khai phá lu ật kết hợp được chia thành 2 bài toán con
Bài toán th ứ nhất: Tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho
trước, tức là tìm tất cả các tập mục thường xuyên
Bài toán th ứ hai: Sinh ra các luật kết hợp từ các tập mục thường xuyên đã
tìm được thỏa mãn độ tin cậy tối thiểu cho trước
Bài toán thứ hai này đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên cứu về luật kết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các tập mục thường xuyên
Bài toán thứ hai có thể giải quyết như sau: Giả sử X là tập mục thường xuyên, ta sinh ra luật kết hợp bằng cách tìm mọi Y là tập con của X, kiểm tra độ tin cậy của X\Y ⇒⇒ Y có thỏa mãn độ tin cậy tối thiểu không
I.4.1 Một số tiếp cận khai phá tập mục thường xuyên
Các nghiên cứu về khai phá tập mục thường xuyên tập trung vào tìm các thuật toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có Phần này sẽ trình bày khái quát các kỹ thuật chính để khai phá tập mục thường xuyên
Bài toán khai phá tập mục thường xuyên: tìm các tập mục ứng viên và tìm các tập mục thường xuyên Tập mục ứng viên là tập mục mà ta hy vọng nó là tập mục thường xuyên, phải tính độ hỗ trợ của nó để kiểm tra Tập mục thường xuyên là tập mục có độ hỗ trợ lớn hơn hoặc bằng ngưỡng tối thiểu cho trước Đã
có rất nhiều thuật toán tìm tập mục thường xuyên được công bố, ta có thể phân chúng theo 2 tiêu chí:
Trang 14- Phương pháp duyệt qua không gian tìm kiếm
- Phương pháp xác định độ hỗ trợ của tập mục
Phương pháp duyệt qua không gian tìm kiếm được phân làm hai cách: duyệt theo chiều rộng (Breadth First Search - BFS) và duyệt theo chiều sâu (Depth First Search - DFS)
Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ của tất cả các tập mục ứng viên có (k-1) mục trước khi tính độ hỗ trợ của các tập mục ứng viên có k mục Với CSDL có n mục, lần lặp thứ k phải kiểm tra độ hỗ trợ của tất cả Ckn tập ứng viên có k mục
Duyệt theo chiều sâu là duyệt qua CSDL đã được chuyển thành cấu trúc dạng cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây Với cơ sở dữ liệu
có n mục dữ liệu, không gian tìm kiếm có 2n tập con, rõ ràng đây là bài toán NP khó, do đó cần phải có phương pháp duyệt thích hợp, tỉa nhanh các tập ứng viên
Phương pháp xác định độ hỗ trợ của tập mục X được chia làm 2 cách: cách thứ nhất là đếm số giao tác chứa X trong cơ sở dữ liệu và cách thứ 2 là tính phần giao của các tập chứa định danh của các giao tác chứa X
I.4.2 Một số tiếp cận khai phá luật kết hợp
Luật kết hợp nhị phân (binary association rule hoặc boolean associaiton rule): là hướng nghiên cứu đầu tiên của luật kết hợp Hầu hết các nghiên cứu ở thời kỳ đầu về luật kết hợp đều liên quan đến luật kết hợp nhị phân Trong dạng luật kết hợp này, các mục (thuộc tính) chỉ được quan tâm là có hay không xuất hiện trong giao tác của CSDL chứ không quan tâm về “mức độ” xuất hiện Ví dụ: Trong hệ thống tính cước điện thoại thì việc gọi 10 cuộc điện thoại và 1 cuộc được xem là giống nhau Thuật toán tiêu biểu nhất khai phá dạng luật này
là thuật toán Apriori và các biến thể của nó Đây là dạng luật đơn giản và các luật khác cũng có thể chuyển về dạng luật này nhờ một số phương pháp như rời rạc hóa, mờ hóa… Một ví dụ về dạng luật này: “gọi liên tỉnh = ‘yes’ AND gọi
Trang 15di động = ‘yes’ => gọi quốc tế =’yes’ AND gọi dịch vụ 108 = ‘yes’, với độ hỗ trợ 20% và độ tin cậy 80%
Luật kết hợp có thuộc tính số và thuộc tính hạng mục (quantitative and categorial association rule): Các thuộc tính của các CSDL thực tế có kiểu rất đa dạng (nhị phân – binary, số - quantitative, hạng mục – categorial,…) Để phát hiện luật kết hợp với các thuộc tính này, các nhà nghiên cứu đã đề xuất một số phương pháp rời rạc hóa nhằm chuyển dạng luật này về dạng nhị phân để có thể
áp dụng các thuật toán đã có Một ví dụ về dạng luật này “phương thức gọi” =
‘Tự động’ AND giờ gọi IN [’23:00:39 23:00:59’] AND thời gian đàm thoại IN [‘200 300’] => gọi liên tỉnh =’có’, với độ hỗ trợ là 23.53% và độ tin cậy là 80%”
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ô
Luật kết hợp nhiều (multi – level association rule): với cách tiếp cận theo luật này sẽ tìm kiếm thêm những luật dạng “mua máy tính PC => mua hệ điều hành AND mua phần mềm tiện ích văn phòng,…” thay vì chỉ những luật quá cụ thể như “mua máy tính IBM PC => mua hệ điều hành Microsoft Windows AND mua phần mềm tiện ích văn phòng Microsoft Office, ” Như vậy dạng luật đầu
là dạng luật tổng quát hóa của dạng luật sau và tổng quát theo nhiều mức khác nhau
Luật kết hợp mờ (fuzzy association rule): với những hạn chế còn gặp phải trong quá trình rời rạc hóa các thuộc tính số (quantitave attributes), các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục các hạn chế trên và chuyển luật kết hợp về dạng tự nhiên hơn, gần gũi hơn với người sử dụng Một
ví dụ của dạng này là: “thuê bao tư nhân =’yes’ AND thời gian đàm thoại lớn AND cước nội tỉnh = ‘yes’ => cước không hợp lệ =’yes’, với độ hỗ trợ là 4% và
độ tin cậy là 85%” Trong luật trên, điều kiện thời gian đàm thoại lớn ở về trái của luật là một thuộc tính đã được mờ hóa
Luật kết hợp với thuộc tính được đánh trọng số (association rule with weighted items): trong thực tế, các thuộc tính trong CSDL không phải lúc nào
Trang 16cũng có vai trò như nhau Có một số thuộc tính được chú trọng hơn và có mức
độ quan trọng cao hơn hơn các thuộc tính khác Ví dụ khi khảo sát về doanh thu hàng tháng, thông tin về thời gian đàm thoại, vùng cước là quan trọng nhiều hơn
so với thông tin về phương thức gọi… Trong quá trình tìm kiếm luật, chúng ta
sẽ gán thời gian gọi, vùng cước các trọng số lớn hơn thuộc tính phương thức gọi Đây là hướng nghiên cứu rất thú vị và đã được một số nhà nghiên cứu đề xuất cách giải quyết bài toán này Với luật kết hợp có thuộc tính được đánh trọng số, chúng ta sẽ khai thác được những luật “hiếm” (tức là có độ hỗ trợ thấp nhưng có ý nghĩa đặc biệt hoặc mang rất nhiều ý nghĩa)
Khai thác luật kết hợp song song (parallel mining of association rules): Bên cạnh khai thác luật kết hợp tuần tự, các nhà làm tin học cũng tập trung nghiên cứu các thuật giải song song cho quá trình phát hiện luật kết hợp Nhu cầu song song hóa và xử lý phân tán là cần thiết bởi kích thước dữ liệu ngày càng lớn đòi hỏi tốc độ xử lý cũng như dung lượng bộ nhớ của hệ thống phải được đảm bảo Có rất nhiều thuật toán song song khác nhau đã đề xuất để có thể không phụ thuộc vào phần cứng Bên cạnh những nghiên cứu về những biến thể của luật kết hợp, các nhà nghiên cứu còn chú trọng đề xuất những thuật toán nhằm tăng tốc độ quá trình tìm kiếm tập phổ biến từ CSDL
Ngoài ra, còn một số phương pháp nghiên cứu khác về khai thác luật kết hợp như: khai thác luật kết hợp trực tuyến, khai thác luật kết hợp được kết nối trực tiếp đến các kho dữ liệu đa chiều (Multidimensional data, data warehouse) thông qua công nghệ OLAP (Online Analysis Processing), MOLAP (Multidimensional OLAP), ROLAP (Relational OLAP), ADO (Active X Data Object) for OLAP…
I.5 Một số thuật toán khai phá tập mục thường xuyên và luật
kết hợp
I.5.1 Thuật toán AIS
Thuật toán hoàn toàn sử dụng chiến lược “vét cạn”, xem xét toàn bộ các tập mục thường xuyên bằng cách sinh tổ hợp tập các mục và chạy kiểm tra
Trang 17I.5.2 Thuật toán SETM
Được đề xuất do mong muốn dùng SQL để tìm các tập mục thường xuyên Cũng giống như thuật toán AIS, SETM cũng sinh ra các tập ứng viên dựa trên các giao dịch đọc được từ CSDL Vì thế, nó sinh ra và đếm mỗi tập mục ứng cử viên mà thuật toán AIS sinh ra Tuy nhiên để phép nối (JOIN) chuẩn của SQL, SETM chia sự phát sinh ứng cử viên từ việc đếm
I.5.3 Thuật toán CHARM
Thực hiện trên cả không gian các tập phổ biến và không gian các tập định danh CHARM không tìm tất cả các tập con có thể của tập mục mà thuật toán kết hợp tìm tập đóng hiệu quả hơn (bottom – up) Nếu CSDL của tập mục là lớn
và tập mục thường xuyên là dày thì CHARM duyệt cả không gian tập mục và tập định danh đồng thời sẽ bỏ qua nhiều mức để tìm tập phổ biến đóng thay cho việc tính toán nhiều tập con không đóng
I.5.4 Thuật toán APRIORI
Ý tưởng chính của thuật toán này là: sinh ra các tập mục ứng viên từ các tập mục thường xuyên ở bước trước, sử dụng kỹ thuật tỉa để bỏ bớt đi những tập mục ứng viên không thỏa mãn ngưỡng hỗ trợ tối thiểu (minsup) Cơ sở của
thuật toán này là tính chất Apriori “Bất kỳ tập con nào của tập mục thường
xuyên c ũng phải là tập mục thường xuyên” Thuật toán giúp tỉa bớt những tập
ứng viên có tập con không thường xuyên trước khi tính độ hỗ trợ Nhược điểm của thuật toán là chi phí sinh ra số lượng khổng lồ tập ứng viên và phải duyệt CSDL nhiều lần
I.5.5 Thuật toán FP-Growth
Phát triển từ thuật toán Apriori, J.Han, J Pei, Y.Yin và R.Mao đã đề xuất thuật toán FP-growth [14] nhằm khắc phục những hạn chế của thuật toán Apriori Thuật toán này được xây dựng với ba kỹ thuật chính là: Nén dữ liệu thích hợp vào một cấu trúc cây gọi là FP-tree Chỉ có 1–tập mục ở trong cây và các nút của cây được sắp xếp để các nút xuất hiện thường xuyên hơn có thể dễ dàn chia sẻ với các nút xuất hiện ít hơn; Thực hiện phương pháp khai phá phát
Trang 18triển (growth) từng đoạn dựa trên cây FP-tree gọi là phương pháp FP-growth;
Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia để trị”, phân
rã nhiệm vụ khai phá thành nhiệm vụ nhỏ hơn
I.6 Thuật toán Apriori
I.6.1 Ý tưởng thuật toán Apriori
Apriori là một giải thuật được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào năm 1993 [9] Thuật toán tìm giao dịch t có độ hỗ trợ và độ tin cậy thỏa mãn lớn hơn một ngưỡng giá trị nào đó
Thuật toán được tỉa bớt những tập ứng viên có tập con không thường xuyên trước khi tính độ hỗ trợ
Thuật toán Apriori tính tất cả các tập ứng cử của tập k trong một lần duyệt CSDL Apriori dựa vào cấu trúc cây băm (hashtree) Tìm kiếm đi xuống trên cấu trúc cây mỗi khi ta chạm vào lá, ta tìm được một tập ứng cử viên có tiền tố chung được bao gồm trong các giao dịch Sau đó các tập ứng cử này được tìm trong giao dịch đã được ánh xạ trước đó Trong trường hợp tìm thấy biến đếm được tăng lên 1
I.6.2 Thuật toán Apriori
Input: CSDL D, minsup
Output: T ập các tập mục thường xuyên
L1= {Các 1-t ập mục thường xuyên}
Trang 19//sinh t ập ứng viên mới (**)
void apriori_gen(L k-1 , minsup)
Trang 20if(s ∉Lk-1)return TRUE;
else return FALSE;
(L1(1)==L2(1)&&L1(2)==L2(2)&&…&&L1(k-2)==L2(k-2)&&L1(k-1)==L2(k-1)
Giai đoạn 2: Dựa vào CSDL, tính độ hỗ trợ của các tập ứng viên trong Ck Các ứng viên trong Ck mà được chứa trong giao dịch T có thể được xác định một cách hiệu quả bằng việc sử dụng cây băm được mô tả như sau:
Trong giai đoạn 2 (giai đoạn sửa, tỉa): xóa bỏ các tập c ∈ Ck sao cho một vài (k-1)–tập mục con của c không nằm trong Lk-1 Thủ tục này là đầy đủ đối với bất kỳ tập nào Lk với độ hỗ trợ tối thiểu thì các tập con kích cỡ (k-1) cũng
có độ hỗ trợ tối thiểu, do đó nếu ta mở rộng mỗi tập trong Lk-1 với tất cả các tập
Trang 21mục có thể và sau đó xóa tất cả các tập mà (k-1)–tập mục con của nó không nằm trong Lk-1, ta sẽ nhận được tập các tập trong Lk
Việc kết nối là tương đương với việc mở rộng Lk-1 với mỗi mục nằm trong CSDL và sau đó xóa bỏ các tập này mà đối với nó (k-1)–tập mục nhận được bằng việc xóa đi mục thứ (k-1) không nằm trong Lk-1 Ở giai đoạn này Ck ⊇ Lk Với lập luận như vậy, giai đoạn tỉa là giai đoạn người ta xóa khỏi Ck tất cả các tập mà các (k-1) tập con của nó không nằm trong Lk-1, cũng không xóa bất kỳ một tập nào có thể nằm trong Lk
Hàm Subset: các tập ứng viên Ck được lưu trữ trong một cây băm Một nút của cây này hoặc là chứa một danh sách của các tập (nút lá) hoặc bảng băm (một nút trong) Trong mỗi nút trong, mỗi bucket của bảng băm chỉ đến một nút khác Gốc của cây băm được xem ở độ sâu là 1 Một nút trong ở độ sâu d sẽ dẫn đến một nút ở độ sâu d+1 Các tập được lưu trữ trong các lá Khi ta bổ sung thêm một tập c, ta bắt đầu từ nút gốc và đi xuống cây cho đến khi ta chạm vào một lá Tại một nút ở độ sau d, ta quyết định sẽ đi theo cành nào bằng việc áp dụng hàm băm đối với mục thứ d của tập đó và theo con trỏ trong Bucket tương ứng Tất cả các nút ban đầu được tạo ra như là nút lá Khi số các tập trong một nút lá vượt quá ngưỡng được chọn, nút lá này được chuyển thành một nút trong
Bắt đầu từ nút gốc, hàm Subset tìm tất cả các ứng viên được chứa trong giao dịch t như sau: Nếu ta bắt đầu tại một nút lá, ta tìm những tập trong nút lá này được chứa trong giao dịch t và bổ sung các mối quan hệ với chúng đối với tập kết quả mong muốn Nếu ta đang ở một nút trong và đến được nó bằng việc băm mục I, ta băm trên mỗi mục đi sau i trong t và áp dụng một cách đệ quy thủ tục này đó đối với nút này trong Bucket tương ứng Đối với nút gốc, ta băm theo mỗi mục trong t
Để thấy được tại sao hàm Subset trả lại tập các tham khảo mong muốn hãy
để ý đến những gì sẽ xảy ra tại nút gốc Đối với bất kỳ tập c nào được chứa trong giao dịch t, mục đầu tiên cần phải có trong t Tại nút gốc, việc băm mọi mục trong t đảm bảo được rằng ta chỉ không biết các tập mà nó bắt đầu với một mục không nằm trong t Những lý luận tương tự áp dụng cho các mức sâu hơn
Vì các mục trong bất kỳ tập nào cũng được sắp xếp thứ tự, nếu ta đến được một
Trang 22nút hiện tại bằng việc băm mục I, ta chỉ cần quan tâm đến những mục nhỏ hơn trong t nó xuất hiện sau i
//Bước tỉa: Xóa bớt tất cả các tập mục c ∈ Ck mà (k-1) tập con của c không phụ thuộc Lk-1
for(∀ t ập mục c ∈ C k )
for(∀ (k-1 – t ập con s của c)
if(s ∉ L k-1 )
delete c kh ỏi C k ;
I.7 Thuật toán FP-Growth
Thuật toán Apriori gặp phải 2 chi phí lớn:
- Chi phí sinh ra số lượng khổng lồ các tập ứng viên Ví dụ, nếu có 104mục thường xuyên thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng viên 2-
tập mục và thực hiện kiểm tra độ hỗ trợ của chúng
- Lặp nhiều lần duyệt CSDL, số lần duyệt CSDL của thuật toán Apriori bằng độ dài của tập mục thường xuyên dài nhất tìm được Thuật toán Apriori chỉ phù hợp với CSDL thưa (sparse), với CSDL dày (dense) thì thuật toán thực
hiện kém hiệu quả
Để khắc phục nhược điểm trên của thuật toán Apriori, J Han, J Pei, Y Yin và R Mao đề xuất thuật toán FP-Growth [14] Thuật toán FP-Growth được
xây dựng với 3 kỹ thuật chính
- Nén dữ liệu thích hợp vào một cấu trúc cây gọi là cây FP-tree Chỉ có các 1-tập mục (1-itemset) ở trong cây và các nút của cây được sắp xếp để các nút
xuất hiện thường xuyên hơn có thể dễ dàng chia sẻ với các nút xuất hiện ít hơn
- Thực hiện phương pháp khai phá phát triển (growth) từng đoạn dựa trên
cây FP-tree gọi là phương pháp FP-growth
Trang 23- Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia để
trị”, phân rã nhiệm vụ khai phá thành các nhiệm vụ nhỏ hơn
Do nén CSDL lên cây nên tránh việc duyệt nhiều lần CSDL Phát triển dần các mẫu mà không sinh tập ứng viên tránh được khối lượng bộ nhớ lớn Tuy nhiên, thuật toán FP-growth khai phá cây FP-tree sử dụng phương pháp đệ quy nên đòi hỏi khối lượng tính toán lớn Năm 2003, nhóm tác giả Mohammad El-Hajj và Osmar R Zaiane ở đại học Alberta Edmonton, Canada đề xuất thuật toán không đệ quy khai phá cây FP-tree dựa trên cấu trúc cây COFI-tree [5]
Thuật toán COFI-tree có nhiều ưu điểm hơn thuật toán FP-growth
Thuật toán COFI-tree gồm 2 giai đoạn chính
- Giai đoạn thứ nhất: Xây dựng cây FP-tree
- Giai đoạn thứ hai: Khai phá cây FP-tree chia thành nhiều bước tương
ứng với các mục dữ liệu trong bảng đầu mục của cây FP-tree, mỗi bước sử dụng
một cấu trúc dữ liệu phụ trợ là cây COFI-tree của mục dữ liệu đó
Mỗi nút của cây FP-tree gồm 3 trường:
+ Tên mục dữ liệu
+ Độ hỗ trợ
+ Một con trỏ (Con trỏ này trỏ đến nút tiếp theo cùng tên trên cây hoặc là
null nếu không có)
Cây FP-tree có một bảng đầu mục (header table) Mỗi mục của bảng có 3 trường: tên mục dữ liệu, độ hỗ trợ và con trỏ, con trỏ này trỏ đến nút đầu tiên
biểu diễn mục dữ liệu này trong cây
Cây COFI-tree có bảng đầu mục giống cây FP-tree nhưng các mục dữ liệu
có thứ tự ngược lại Mỗi mục trong bảng đầu mục chứa 3 trường: tên mục dữ liệu, độ hỗ trợ địa phương (số lần xuất hiện trong cây COFI-tree) và con trỏ (trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trong cây) Một danh sách liên kết được duy trì giữa các nút cùng tên để thuận lợi cho quá trình khai phá Mỗi nút
Trang 24của cây COFI-tree có 4 trường: tên mục dữ liệu, hai biến s và p (biến s biểu diễn
độ hỗ trợ của nút, biến p cho biết số lần nút đó đã tham gia tạo mẫu), con trỏ
(trỏ đến nút tiếp theo cùng tên trên cây)
Minh họa thuật toán COFI-tree
Xét CSDL với ngưỡng minsup = 3
B ảng 4 Cơ sở dữ liệu minh họa thực hiện thuật toán COFI-tree
Giai đoạn 1 Xây dựng cây FP-tree
Duyệt CSDL lần thứ nhất tính được độ hỗ trợ của mỗi mục dữ liệu, loại bỏ các mục dữ liệu không thỏa mãn ngưỡng minsup = 3, sắp xếp giảm dần theo độ
Trang 25Duyệt cơ sở dữ liệu lần 2 Mỗi giao tác chọn ra các mục dữ liệu thường xuyên, sắp chúng theo thứ tự giảm dần của độ hỗ trợ và chèn lên cây
Giao tác TID Các mục dữ liệu
B ảng 7 Các mục dữ liệu trong giao tác sắp xếp giảm dần theo độ hỗ trợ
Từ bảng này ta có cây FP-tree
Hình 1 Hình cây FP-Growth Giai đoạn 2 Khai phá cây FP-tree
Xét lần lượt các mục dữ liệu từ dưới lên trong bảng đầu mục cây FP-tree, với mỗi mục xây dựng cây COFI-tree của nó, khai phá cây này tìm mẫu thường xuyên, sau khi khai phá xong, loai bỏ cây đó và xây dựng cây COFI-tree cho
mục dữ liệu tiếp theo Minh họa thuật toán qua xét mục dữ liệu đầu tiên D:
Mục
DL
Độ
hỗ trợ
Con trỏ
Trang 26- Xây dựng cây COFI-tree của mục D:
Hình 2 Cây COFI-tree c ủa mục D
Có 3 nút trên cây có nhãn D, từ các nút này đi lên gốc tìm được 3 đường đi: (D2, B2, C8), (D1, B2, A3), (D2, C8), các đường đi này xác định các mẫu dữ liệu với độ hỗ trợ bằng độ hỗ trợ của nút đầu D, tức là: DBC2, DBA1, DC2
Xây dựng cây COFI-tree từ các mẫu này
Khai phá cây D-COFI-tree: xét lần lượt các mục dữ liệu trong bảng đầu mục bắt đầu từ mục có độ hỗ trợ lớn nhất là C, cuối cùng đến độ hỗ trợ nhỏ nhất
là A Mục C có 2 nhánh trên cây là (C2, B3, D5) và (C2, D5) Nhánh thứ nhất tạo mẫu CBD2 với độ hỗ trợ là s-p = 2-0 = 2 (s và p là hai biến thuộc nút C) Thuật toán tăng giá trị của biến p của tất cả các nút trên đường đi này lên 2 Mẫu CBD2 và tất cả các mẫu con chứa D của nó được cất vào danh sách ứng
viên của mục D là {CBD2, CD2, BD2}
Nhánh thứ hai nhận được mẫu CD2 và kết nạp nó vào danh sách ứng viên Trong danh sách ứng viên đã có mẫu CD2 nên chỉ điều chỉnh độ hỗ trợ của mẫu này thành CD4 và danh sách ứng viên trở thành {CBD2, CD4, BD2} Tăng biến
p của các nút trên đường đi này lên 2 đơn vị
Con trỏ
B 3
A 1
C 4
Trang 27Hình 3 Các b ước khai phá cây D-COFI-tree
Xét tiếp mục B có một nhánh BD nên sinh ra mẫu BD1, kết nạp vào danh
sách ứng viên được {CBD2, CD4, BD3}
Mục A còn lại trong bảng đầu mục bỏ qua vì có độ hỗ trợ nhỏ hơn minsup
Thuật toán duyệt qua các mẫu trong danh sách ứng viên, loại các mẫu không thỏa mãn ngưỡng độ hỗ trợ và nhận được mẫu thường xuyên là CD4 và
D ( 5 2 )
B ( 3 2 )
C ( 2 2 ) Mẫu: CBD:2 Các ứng viên:
CBD:2, CD:2, BD:2
CBD:2, CD:4, BD:2
CBD:2, CD:2, BD:3
Trang 28BD3 Cây D-COFI-tree được loại bỏ và tiếp tục xây dựng cây COFI-tree cho
mục dữ liệu tiếp theo
Ngoài ra còn rất nhiều các thuật toán khai phá tập mục thường xuyên khác
có thể nêu tên như: Pincer-Search, Max-Miner, DepthProject, MAFIA, MFI, GenMax, v.v… mà trong khuôn khổ luận văn này chưa có điều kiện xem xét hết
Trang 29II CÁC BÀI TOÁN MỞ RỘNG KHAI PHÁ TẬP
MỤC THƯỜNG XUYÊN
II.1 Một số nghiên cứu chuyên sâu về khai phá luật kết hợp
Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trong thực tế nhưng nó có những hạn chế, không đáp ứng đầy đủ yêu cầu của người
sử dụng Ràng buộc về độ hỗ trợ của tập mục thường xuyên chủ yếu mang ngữ nghĩa thống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũng như đặc tính dữ liệu vốn có của chúng trong CSDL
Để đáp ứng yêu cầu của thực tiễn, bài toán khai phá tập mục thường xuyên
đã có nhiều cách thức mở rộng và ứng dụng
Một hướng mở rộng bài toán có nhiều ứng dụng là quan tâm đến cấu trúc
dữ liệu và mức độ quan trọng khác nhau của các mục dữ liệu, các thuộc tính trong cơ sở dữ liệu Một số mô hình mở rộng bài toán đã được nghiên cứu là:
- Quan tâm đến mức độ quan trọng khác nhau của các mục dữ liệu bằng cách gán cho mỗi mục một giá trị được gọi là trọng số Độ hỗ trợ và độ tin cậy của luật kết hợp khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy có trọng số Các thuật toán MINWAL(O) và MINWAL(W) giải quyết vấn đề này
- Quan tâm đến các kiểu thuộc tính khác nhau trong cơ sở dữ liệu như nhị phân, đa phân, định lượng Luật kết hợp khi đó được gọi là luật kết hợp định lượng Để tìm các luật kết hợp định lượng người ta đưa bài toán về dạng nhị phân bằng cách phân khoảng các giá trị thuộc tính, sau đó có thể sử dụng các thuật toán khai phá luật kết hợp nhị phân đã biết
- Chú ý đến cả cấu trúc dữ liệu và mức độ quan trọng khác nhau của các thuộc tính trong cơ sở dữ liệu Theo hướng này, nhiều nhà nghiên cứu đề xuất các mô hình mở rộng: khai phá tập mục cổ phần cao, đánh giá đóng góp của tập mục trong tổng số các mục dữ liệu của cơ sở dữ liệu; khai phá tập mục lợi ích cao, đánh giá lợi ích mà tập mục mang lại trong CSDL Một số tác giả đề xuất
Trang 30mô hình khai phá tập mục lợi ích cao và các thuật toán UMining, Umining-H để
khai phá [10, 11, 12]
II.2 Khai phá tập mục cổ phần cao
Bài toán cơ bản (hay còn gọi là bài toán nhị phân) khai phá luật kết hợp đề xuất và nghiên cứu lần đầu tiên vào năm 1993 [9], mục tiêu của bài toán này là tìm tập mục thường xuyên, từ đó tạo ra luật kết hợp Trong mô hình của bài toán nhị phân này, giá trị mỗi mục dữ liệu trong một giao tác là 0 hoặc 1, tức là chỉ quan tâm mục dữ liệu có xuất hiện trong giao tác hay không Bài toán cơ bản này có nhiều ứng dụng, tuy vậy, do tập mục thường xuyên chỉ mang ngữ nghĩa thống kê nên nó chỉ đáp ứng được phần nào nhu cầu của thực tiễn
Nhằm khắc phục hạn chế của bài toán cơ bản khai phá luật kết hợp, nhiều nhà nghiên cứu đã mở rộng bài táo theo nhiều hướng khác nhau Năm 1997, Hiderman và các cộng sự đề xuất bài toán khai phá tập mục cổ phần cao Trong
mô hình này, giá trị của mục dữ liệu trong giao tác là một số, số đó có thể là số nguyên (như số lượng đã bán của mặt hàng) Cổ phần của một tập mục là số đo
tỷ lệ đóng góp của tập mục trong CSDL Khai phá tập mục cổ phần cao là khám phá tất cả cac tập mục có cổ phần không nhỏ hơn ngưỡng quy định bởi người sử dụng
Trong bài toán cơ bản, các thuật toán khám phá được xây dựng theo phương pháp tìm kiếm từng bước Cơ sở của các thuật toán là tính chất Apriori của tập mục thường xuyên (hay còn gọi là tính chất phản đơn điệu – Anti monotone) Trong mô hình khai phá tập mục cổ phần cao, tính chất này không còn đúng nữa Vì vậy việc rút gọn không gian tìm kiếm không thể thực hiện được như đối với khai phá tập mục thường xuyên Có nhiều thuật toán khai phá tập mục cổ phần cao như ZP, ZSP, SIP, FSM,… trong đó thuật toán FSM [17]
là một thuật toán nhanh, cho phép khám phá tất cả các tập mục cổ phần cao trong CSDL giao tác cho trước
Trang 31II.2.1 Bài toán khai phá tập mục cổ phần cao
Trước hết ta nêu định nghĩa của một số thuật ngữ theo [17]
Cho tập các mục (item) I Một giao tác T là một tập con của I, T ⊆ I CSDL là một tập các giao tác DB Mỗi giao tác được gán một định danh TID Một tập mục con X ⊆ I, gồm k mục phân biệt được gọi là một k-tập mục Giao tác T gọi là chứa tập mục X nếu X ⊆T
Ta ký hiệu giá trị của mục ip (measure value) trong giao tác Tq là mv(ip,Tq)
có giá trị là số tự nhiên (như số lượng đã bán của một mặt hàng trong giao tác), tức là, mv(ip, Tq) = 0 nếu ip không thuộc Tq và mv(ip, Tq) ≥ 1 nếu ip thuộc Tq Giá trị của giao tác Tq (transaction measure value) là tổng giá trị các mục
dữ liệu trong giao tác, ký hiệu là tmv(Tq), tức là
Trang 32Ký hiệu dbX là tập các giao tác chứa tập mục X
Định nghĩa 2.1: Cho giao tác Tq chứa tập mục X Giá trị của tập mục X
(itemset measure value), ký hiệu imv(i p , T q ), là tổng giá trị các mục ip trong Tqthuộc X, X ⊆ Tq
݅݉ݒ൫ܺ, ܶ൯ = ݉ݒ(݅, ܶ)
∈
Định nghĩa 2.2: Cho tập mục X, dbX là tập các giao tác Giá trị của tập
mục X (local measure value), ký hiệu lmv(i p , T q ) là tổng giá trị các tập mục X tại các giao tác trong dbX, tức là
݈݉ݒ(ܺ) = ݅݉ݒ൫ܺ, ܶ൯ = ݉ݒ(݅, ܶ)
∈
் ∈ௗ
் ∈ௗ
Định nghĩa 2.3: Cổ phần (share value) hay đóng góp của tập mục X, ký
hiệu là Sh(X), là tỷ số giữa giá trị của tập mục X và tổng giá trị của tất cả các mục trong cơ sở dữ liệu, tức là ܵℎ(ܺ) = ௩()்௩
Sh(X) cho biết trong tổng giá trị của tất cả các mục dữ liệu trong cơ sở dữ liệu thì giá trị của tập X chiếm bao nhiêu phần trăm Ví dụ, với CSDL giao tác
bán hàng, Sh(X)=30% tức là trong tổng số lượng hàng đã bán được thì số lượng
các mặt hàng trong X chiếm 30%
Định nghĩa 2.4: Cho ngưỡng cổ phần (minimum share) minShare s% và
tập mục X X được gọi là tập mục cổ phần cao nếu Sh(X) ≥ minShare Trong
trường hợp ngược lại, X được gọi là tập mục cổ phần thấp
Ký hiệu giá trị cổ phần tối thiểu (minimum local measure value) là
min_lmv , min_lmv = minShare * Tmv, có thể thay điều kiện Sh(X) ≥ minShare trong định nghĩa bởi điều kiện lmv(X) ≥ min_lmv
B ảng 9 Xét CSDL Bảng 8 với minShare ≥ 30%
Trang 33B ảng 10 Biểu diễn tất cả tập mục cổ phần cao
Định nghĩa 2.5: Cho CSDL giao tác DB và ràng buộc cổ phần minShare,
khai phá tập mục cổ phần cao là tìm tập HS chứa tất cả các tập mục cổ phần cao, tức là tập HS = {X|X⊆I, Sh(X) ≥ minShare}
Nhận xét:
- Dữ liệu cho tập mục thường xuyên là trường hợp đặc biệt của dữ liệu cho khai phá cổ phần cao khi tất cả các mục dữ liệu trong các giao tác có giá trị 0 hoặc 1
- Tập mục cổ phần cao mang ý nghĩa khác với tập mục thường xuyên Tập mục thường xuyên chỉ quan tâm đến số lần xuất hiện của tập mục trong các giao tác, trong khi đó tập mục cổ phần cao quan tâm đến tổng giá trị các mục dữ liệu của tập mục trong các giao tác Tập mục thường xuyên quan tâm xem nhóm hàng X có bán được hay không mà bỏ qua các tham số quan trọng là tổng số
lượng hàng bán được hoặc tổng lợi nhuận mang lại… Với ngưỡng minShare
cho trước, một tập mục X có thể chỉ chứa trong một số ít giao tác của CSDL
nhưng lại là tập mục cổ phần cao nếu cổ phần Sh(X) của nó vượt ngưỡng
minShare Kể cả khi khai phá trên tập dữ liệu có giá trị nhị phân (0 hoặc 1) thì khai phá tập mục cổ phần cao cũng cho kết quả khác với khai phá tập mục thường xuyên Chẳng hạn với CSDL trên, tập mục X = ABCDGH chỉ xuất hiện
trong giao tác T01, có cổ phần Sh(X) = 6/12 = 50% và độ hỗ trợ sup(X) = 1/5 = 20% Nếu lấy ngưỡng cổ phần minShare = 30% thì X là tập mục cổ phần cao,