1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các tập mục thường xuyên trong khai phá dữ liệu và ứng dụng

67 863 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 676,69 KB

Nội dung

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 1

TRƯỜ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 2

TRƯỜ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 3

MỤ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 4

DANH 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 5

DANH 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 6

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

I 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 9

B ả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 10

thiể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 11

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

cô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 13

Yê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 15

di độ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 16

cũ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 17

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

triể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 20

if(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 21

mụ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 22

nú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 24

củ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 25

Duyệ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 27

Hì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 28

BD3 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 29

II 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 30

mô 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 31

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

Ký 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 33

B ả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,

Ngày đăng: 01/07/2015, 19:30

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w