Tải bản đầy đủ (.pdf) (33 trang)

KHAI PHÁ DỮ LIỆU VỚI TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.11 MB, 33 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
_____  _____

BÀI THU HOẠCH MÔN HỌC
KHAI PHÁ DỮ LIỆU

Đề tài:
KHAI PHÁ DỮ LIỆU VỚI TẬP
PHỔ BIẾN VÀ LUẬT KẾT HỢP


Giao viên hƣớng dẫn : PGS.TS Đỗ Phúc
Học viên thực hiện: Nguyễn Thị Thu Thủy
Mã học viên: CH1101142




TP. Hồ Chí Minh, tháng 11 năm 2012
MỤC LỤC
CHƢƠNG 1 : TỔNG QUAN KHAI PHÁ DỮ LIỆU 4
1.1 Giới thiệu 4
1.2 Khá phá dữ liệu là gì? 4
1.3 Quá trình khai phá dữ liệu: 6
1.4 Nhiệm vụ của khai phá dữ liệu: 7
1.5 Các ứng dụng tiềm năng 9
CHƢƠNG 2 : TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP 10
2.1 Giới thiệu: 10
2.2 Các khái niệm cơ bản: 10
2.2.1 Độ hỗ trợ 10


2.2.2 Độ tin cậy 10
2.2.3 Tập phổ biến 11
2.2.4 Tập phổ biến tối đại 11
2.3 Khai phá luật kết hợp: 11
2.4 Phân loại luật kết hợp: 13
2.5 Thuật toán Apriori - ứng dụng theo phƣơng pháp luật kết hợp: 14
2.5.1 Ý tưởng chính của thuật toán Apriori: 14
2.5.2 Thuật toán Apriori Algorithm: 15
2.5.3 Mã giả: 21
2.5.4 Cải tiến thuật toán Apriori 23
CHƢƠNG 3 CÀI ĐẶT THỬ NGHIỆM APRIORI 26
3.1 Giao diện chƣơng trình: 26
3.2 Hƣớng dẫn sử dụng chƣơng trình 27
CHƢƠNG 4 NHẬN XÁT – ĐÁNH GIÁ 30
* * *
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
2
LỜI MỞ ĐẦU
Ngày nay, chúng ta đang sống trong thế kỷ bùng nổ về khoa học công nghệ
mà đặc biệt là sự phát triển vƣợt bậc về công nghệ tông tin. Công nghệ thông tin
và việc ứng dụng công nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế
xã hội trong nhiều năm qua cũng đồng nghĩa với lƣợng dữ liệu đã đƣợc các cơ
quan thu thập và lƣu trữ ngày một tích lũy nhiều lên. Bên cạnh đó, các thiết bị thu
thập dữ liệu tự động tƣơng đối phát triển đã tạo ra những kho dữ liệu khổng lồ,
nhƣ các dữ liệu ngân hàng, hàng không, giáo dục.…. Cùng với sự phát triển
mạnh mẽ của công nghệ, các thiết bị lƣu trữ và các thiết bị thu thập thông tin tự
động đã cho phép xây dựng đƣợc những hệ thống thông tin có khả năng tự động
hoá ngày càng cao. Vấn đề đặt ra là làm thế nào để xử lý khối lƣợng thông tin cực

lớn nhƣ vậy để phát hiện ra các tri thức tiềm ẩn trong núi dữ liệu khổng lồ này.
Những tri thức thu đƣợc nhƣ vậy chúng đƣợc chuyên môn hoá, phân chia theo các
lĩnh vực ứng dụng nhƣ sản xuất, kinh doanh, tài chính, nghiên cứu… Các cơ sở
dữ liệu cần phải đem lại tri thức hơn là chính dữ liệu đó.
Để hiểu hơn về vấn đề này em xin trình bày báo cáo khóa luận môn học với
đề tài “ Khai phá dữ liệu bằng luật kết hợp và ứng dụng”.
Em xin chân thành cảm ơn PGS.TS. Đỗ Phúc – Giảng viên môn học “Khai
phá dữ liệu” đã truyền đạt những kiến thức vô cùng quý báu, xin chân thành cám
ơn ban cố vấn học tập và ban quản trị chƣơng trình đào tạo thạc sĩ Công nghệ
thông tin qua mạng của Đại Học Quốc Gia TPHCM đã tạo điều kiện về tài liệu
tham khảo để em có thể hoàn thành môn học này.


Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
3
NHẬN XÉT CỦA GIẢNG VIÊN HƢỚNG DẪN





















Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
4
CHƢƠNG 1 : TỔNG QUAN KHAI PHÁ DỮ LIỆU
1.1 Giới thiệu
Khoảng hơn một thập kỷ trở lại đây, lƣợng thông tin đƣợc lƣu trữ trên các
thiết bị điện tử (đĩa cứng, CD-ROM, băng từ, .v.v.) không ngừng tăng lên. Sự tích
lũy dữ liệu này xảy ra với một tốc độ bùng nổ. Ngƣời ta ƣớc đoán rằng lƣợng
thông tin trên toàn cầu tăng gấp đôi sau khoảng hai năm và theo đó số lƣợng cũng
nhƣ kích cỡ của các cơ sở dữ liệu (CSDL) cũng tăng lên một cách nhanh chóng.
Nói một cách hình ảnh là chúng ta đang “ngập” trong dữ liệu nhƣng lại “đói” tri
thức. Câu hỏi đặt ra là liệu chúng ta có thể khai thác đƣợc gì từ những “núi” dữ
liệu tƣởng chừng nhƣ “bỏ đi” ấy không ?
Data Mining ra đời nhƣ một hƣớng giải quyết hữu hiệu cho câu hỏi vừa đặt
ra ở trên. Khá nhiều định nghĩa về Data Mining và sẽ đƣợc đề cập ở phần sau, tuy
nhiên có thể tạm hiểu rằng Data Mining nhƣ là một công nghệ tri thức giúp khai
thác những thông tin hữu ích từ những kho dữ liệu đƣợc tích trữ trong suốt quá
trình hoạt động của một công ty, tổ chức nào đó.
1.2 Khá phá dữ liệu là gì?
Khai phá dữ liệu (Data mining) là một khái niệm ra đời vào những năm
cuối của thập kỷ 80. Nó bao hàm một loạt các kỹ thuật nhằm phát hiện ra các

thông tin có giá trị tiềm ẩn trong các tập dữ liệu lớn (các kho dữ liệu). Về bản
chất, khai phá dữ liệu liên quan đến việc phân tích các dữ liệu và sử dụng các kỹ
thuật để tìm ra các mẫu hình có tính chính quy (regularities) trong tập dữ liệu.
Khái niệm về khai phá dữ liệu (Data Mining) hay phát hiện tri thức
(Knowledge Discovery) có rất nhiều cách diễn đạt khác nhau nhƣng về bản chất
đó là quá trình tự động trích xuất thông tin có giá trị (thông tin dự đoán –
Predictive Information) ẩn chứa trong khối lƣợng dữ liệu khổng lồ trong thực tế.
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
5
Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã dùng khái niệm Phát
hiện tri thức trong cơ sở dữ liệu (Knowledge Discovery in Database – KDD) để
chỉ toàn bộ quá trình phát hiện các tri thức có ích từ các tập dữ liệu lớn. Trong đó,
khai phá dữ liệu là một bƣớc đặc biệt trong toàn bộ quá trình, sử dụng các giải
thuật đặc biệt để chiết xuất ra các mẫu từ dữ liệu.
Quá trình xử lý khai phá dữ liệu bắt đầu bằng cách xác định chính xác vấn
đề cần giải quyết. Sau đó sẽ xác định các dữ liệu liên quan dùng để xây dựng
giải pháp. Bƣớc tiếp theo là thu thập các dữ liệu có liên quan và xử lý chúng
thành dạng sao cho giải thuật khai phá dữ liệu có thể hiểu đƣợc. Về lý thuyết thì
có vẻ rất đơn giản nhƣng khi thực hiện thì đây thực sự là một quá trình rất khó
khăn, gặp phải nhiều vƣớng mắc nhƣ: các dữ liệu phải đƣợc sao ra nhiều bản (nếu
đƣợc chiết xuất vào các tệp), quản lý các tệp dữ liệu, phải lặp đi lặp lại nhiều lần
toàn bộ quá trình (nếu mô hình dữ liệu thay đổi),…
Bƣớc tiếp theo là chọn thuật toán khai phá dữ liệu thích hợp và thực hiện
việc khai phá dữ liệu để tìm đƣợc các mẫu (pattern) có ý nghĩa dƣới dạng biểu
diễn tƣơng ứng với các ý nghĩa đó (thƣờng thì đƣợc biểu diễn dƣới dạng các luật
xếp loại, cây quyết định, phát sinh luật, biểu thức hồi quy,…).
Định nghĩa: Khai phá dữ liệu là một tập hợp các kỹ thuật được sử dụng để
tự động khai thác và tìm ra các mối quan hệ lẫn nhau của dữ liệu trong một tập

hợp dữ liệu khổng lồ và phức tạp, đồng thời cũng tìm ra các mẫu tiềm ẩn trong
tập dữ liệu đó.
Data mining nhấn mạnh 2 khía cạnh chính đó là khả năng trích xuất thông
tin có ích Tự động (Automated) và thông tin mang tính dự đoán (Predictive).
Data Mining liên quan chặt chẽ đến các lĩnh vực sau:
- Statistics (Thống kê): Kiểm định model và đánh giá tri thức phát hiện
đƣợc.
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
6
- Machine Learning (Máy học): Nghiên cứu xây dựng các giải thuật trên
nền tảng của trí tuệ nhân tạo giúp cho máy tính có thể suy luận (dự đoán) kết quả
tƣơng lai thông qua quá trình huấn luyện (học) từ dữ liệu lịch sử.
- Databases (Cơ sở dữ liệu): Công nghệ quản trị dữ liệu nhất là kho dữ liệu
1.3 Quá trình khai phá dữ liệu:
Từ dữ liệu ban đầu, qua quá trình khai phá và xử lý dữ liệu, con ngƣời đã chọn
lọc ra những tri thức và đƣa đến quyết định đúng đắn.

Khai phá dữ liệu là một bƣớc trong bảy bƣớc của quá trình KDD (Knowleadge
Discovery in Database) và KDD đƣợc xem nhƣ 7 quá trình khác nhau theo thứ tự sau:
1. Làm sạch dữ liệu (data cleaning & preprocessing)s: Loại bỏ nhiễu và các dữ
liệu không cần thiết.
2. Tích hợp dữ liệu: (data integration): quá trình hợp nhất dữ liệu thành những
kho dữ liệu (data warehouses & data marts) sau khi đã làm sạch và tiền xử lý (data
cleaning & preprocessing).
3. Trích chọn dữ liệu (data selection): trích chọn dữ liệu từ những kho dữ liệu và
sau đó chuyển đổi về dạng thích hợp cho quá trình khai thác tri thức. Quá trình này bao
gồm cả việc xử lý với dữ liệu nhiễu (noisy data), dữ liệu không đầy đủ (incomplete
data), .v.v.

Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
7
4. Chuyển đổi dữ liệu: Các dữ liệu đƣợc chuyển đổi sang các dạng phù hợp cho
quá trình xử lý.
5. Khai phá dữ liệu(data mining): Là một trong các bƣớc quan trọng nhất, trong
đó sử dụng những phƣơng pháp thông minh để chắt lọc ra những mẫu dữ liệu.
6. Ƣớc lƣợng mẫu (knowledge evaluation): Quá trình đánh giá các kết quả tìm
đƣợc thông qua các độ đo nào đó.
7. Biểu diễn tri thức (knowledge presentation): Quá trình này sử dụng các kỹ
thuật để biểu diễn và thể hiện trực quan cho ngƣời dùng.

1.4 Nhiệm vụ của khai phá dữ liệu:
Khai phá dữ liệu có thể chia thành một số hƣớng chính nhƣ sau:
Mô tả khái niệm (concept description): thiên về mô tả, tổng hợp và tóm
tắt khái niệm.
Ví dụ: tóm tắt văn bản.
Luật kết hợp (association rules): là dạng luật biểu diễn tri thứ ở dạng
khá đơn giản.
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
8
Ví dụ: “60 % nam giới vào siêu thị nếu mua bia thì có tới 80% trong số họ
sẽ mua thêm thịt bò khô”.
Luật kết hợp đƣợc ứng dụng nhiều trong lĩnh vực kính doanh, y học, tin-
sinh, tài chính & thị trƣờng chứng khoán, .v.v.
Phân lớp và dự toán (classification & prediction): xếp một đối tƣợng
vào một trong những lớp đã biết trƣớc.

Ví dụ: phân lớp vùng địa lý theo dữ liệu thời tiết. Hƣớng tiếp cận này
thƣờng sử dụng một số kỹ thuật của machine learning nhƣ cây quyết định
(decision tree), mạng nơ ron nhân tạo (neural network), .v.v.
Phân cụm (clustering): xếp các đối tƣợng theo từng cụm (số lƣợng cũng
nhƣ tên của cụm chƣa đƣợc biết trƣớc.
Khai phá chuỗi (seuqential/temporal patterns): tƣơng tự nhƣ khai phá
luật kết hợp nhƣng có thêm tính thứ tự và tính thời gian. Hƣớng tiếp cận
này đƣợc ứng dụng nhiều trong lĩnh vực tài chính và thị trƣờng chứng
khoán vì nó có tính dự báo cao.

Dƣới đây là một số thuật toán phổ biến đƣợc dùng trong Khai phá dữ liệu:
1. Decision tree: Cây quyết định (Classification Task)
2. Nearest Neighbor: Láng giềng gần nhất (Classification Task)
3. Neural Network: Mạng Neural (Classification and Clustering Task)
4. Rule Induction: Luật qui nạp (Classification Task)
5. K-Means: Thuật toán K-Means ( Clustering Task)

Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
9
1.5 Các ứng dụng tiềm năng




P
P
h
h

â
â
n
n


t
t
í
í
c
c
h
h


d
d




l
l
i
i


u
u

,
,


h
h




t
t
r
r




r
r
a
a


q
q
u
u
y
y

ế
ế
t
t


đ
đ


n
n
h
h


(
(
d
d
a
a
t
t
a
a


a
a

n
n
a
a
l
l
y
y
s
s
i
i
s
s


&
&


d
d
e
e
c
c
i
i
s
s

i
i
o
o
n
n


s
s
u
u
p
p
p
p
o
o
r
r
t
t
)
)


– Phân tích và quản lý thị trƣờng
– Quản lý và phân tích rủi ro
– Quản lý và phân tích các sai hỏng





Đ
Đ
i
i


u
u


t
t
r
r




y
y


h
h


c

c


(
(
m
m
e
e
d
d
i
i
c
c
a
a
l
l


t
t
r
r
e
e
a
a
t

t
m
m
e
e
n
n
t
t
)
)




• Text mining & Web mining
• Tin-sinh (bio-informatics)
• Tài chính và thị trƣờng chứng khoán (finance & stock market), Phân
tích cổ phiếu
• Bảo hiểm (insurance)
• Nhận dạng (pattern recognition)
• Bán lẻ, siêu thị
• Ngân hàng
• Khai thác gen
• Phân tích cổ phiếu
• Khai thác dữ liệu Web
• Phân tích dữ liệu
• …




Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
10
CHƢƠNG 2 : TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP
2.1 Giới thiệu:
Hiện nay các công ty, doanh nghiệp đang lƣu trữ một lƣợng thông tin lớn
về bán hàng. Một bản ghi trong cơ sở dữ liệu này chứa các thông tin về ngày mua
bán,số lƣợng hàng bán, Từ cơ sở dữ liệu bán hàng, chúng ta có
thể tìm ra các mốiquan hệ giữa các cặp thuộc tính- giá trị thuộc tính.
Đó là luật kết hợp tiêu biểu: Vídụ có 80% khách hàng mua sách ngoại ngữ thì
sẽ mua đĩa CD hoặc VCD.
2.2 Các khái niệm cơ bản:
2.2.1 Độ hỗ trợ
Độ hỗ trợ của một tập mục X trong cơ sở dữ liệu D là tỉ số giữa các giao
tác T ⊂ D có chứa tập X là tổng số giao tác trong D (hay là phần trăm của các
giao tác trong D có chứa tập mục X), kí hiệu là Supp (X).

Ta có 0 < supp(X) với mọi tập X.
Hay có thể n ói support chỉ mức độ “thƣờng xuyên xảy ra” của mẫu.
Độ hỗ trợ của luật X -> Y là tỉ số giao tác có chứa X U Y và số giao tác
trong cơ sở dữ liệu D, kí hiệu là Supp(X -> Y).

Nhƣ vậy độ hỗ trợ của một luật bằng 50% nghĩa là có 50% giao tác có chứa
tập mục X U Y. Độ hỗ trợ có ý nghĩa thống kê của luật kết hợp.
2.2.2 Độ tin cậy
Độ tin cậy của một luật r = X -> Y là tỉ số (phần trăm) của số giao tác trong D
chứa X U Y với số giao tác trong D có chứa tập mục X. Kí hiệu độ tin cậy của một
luật là Conf(r). Ta có 0 ≤ conf ≤ 1.

Độ hỗ trợ và độ tin cậy đƣợc biểu diễn bởi công thức sau:

Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
11
Nếu ta nói độ tin cậy là 80% thì có nghĩa là 80% các giao tác có chứa X thì cũng
chứa Y. Độ tin cậy của một luật là thể hiện mức độ trƣờng quan trong dữ liệu giữa
hai tập X và Y. Độ tin cậy là độ đo mức độ tin cậy của một luật.
2.2.3 Tập phổ biến
Cho cơ sở dữ liệu giao dịch (O,I,R) và minsup € (0,1] là ngƣỡng phổ biến tối thiểu.
Cho S I, độ phổ biến của S ký hiệu là sp(S) là tỉ số giữa số các giao tác có chứa S và
số lƣợng giao tác trong O. Nói cách khác SP(S)=|p(S)| / |O|.
Cho S I, S là một tập các mặt hàng phổ biến theo ngƣỡng minsupp nếu và chỉ nếu
SP(S) ≥ minsupp. Trong các phần sau tập mặt hàng phổ biến sẽ đƣợc gọi tắt là tập phổ
biến. Ký hiệu FS(O,I,R, minsupp) = {S € P(I) | SP(S) ≥ minsup}.
2.2.4 Tập phổ biến tối đại
M là tập phổ biến tối đại nếu M là tập phổ biến và không tồn tại tập phổ biến S khác
M mà M S.
2.3 Khai phá luật kết hợp:
Trong lĩnh vực Data Mining, mục đích của luật kết hợp (Association Rule -
AR) là tìm ra các mối quan hệ giữa các đối tƣợng trong khối lƣợng lớn dữ liệu.
Nội dung cơ bản của luật kết hợp đƣợc tóm tắt nhƣ dƣới đây.
Cho cơ sở dữ liệu gồm các giao dịch T là tập các giao dịch t1, t2, …, tn.
T = {t1, t2, …, tn}. T gọi là cơ sở dữ liệu giao dịch (Transaction Database)
Mỗi giao dịch ti bao gồm tập các đối tƣợng I (gọi là itemset)
I = {i1, i2, …, im}. Một itemset gồm k items gọi là k-itemset
Mục đích của luật kết hợp là tìm ra sự kết hợp (association) hay tƣơng quan
(correlation) giữa các items. Những luật kết hợp này có dạng X =>Y
Trong Basket Analysis, luật kết hợp X =>Y có thể hiểu rằng những ngƣời

mua các mặt hàng trong tập X cũng thƣờng mua các mặt hàng trong tập Y. (X và
Y gọi là itemset).
Ví dụ, nếu X = {Apple, Banana} và Y = {Cherry, Durian} và ta có luật kết
hợp X =>Y thì chúng ta có thể nói rằng những ngƣời mua Apple và Banana thì
cũng thƣờng mua Cherry và Durian.
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
12
Theo quan điểm thống kê, X đƣợc xem là biến độc
lập (Independent variable) còn Y đƣợc xem là biến phụ thuộc (Dependent
variable)
Độ hỗ trợ (Support) và độ tin cây (Confidence) là 2 tham số dùng để đo
lƣờng luật kết hợp.
Độ hỗ trợ (Support) của luật kết hợp X =>Y là tần suất của giao dịch chứa
tất cả các items trong cả hai tập X và Y. Ví dụ, support của luật X =>Y là 5% có
nghĩa là 5% các giao dịch X và Y đƣợc mua cùng nhau.
Công thức để tính support của luật X =>Y nhƣ sau:

Trong đó: N là tổng số giao dịch.
Độ tin cậy (Confidence) của luật kết hợp X =>Y là xác suất xảy ra Y khi đã
biết X. Ví dụ độ tin cậy của luật kết hợp {Apple} =>Banana} là 80% có nghĩa
là 80% khách hàng mua Apple cũng mua Banana.
Công thức để tính độ tin cậy của luật kết hợp X =>là xác suất có điều kiện Y khi
đã biết X nhƣ sau :

Trong đó: n(X) là số giao dịch chứa X
Để thu đƣợc các luật kết hợp, ta thƣờng áp dụng 2 tiêu chí: minimum
support (min_sup) và minimum confidence (min_conf)
Các luật thỏa mãn có support và confidence thỏa mãn (lớn hơn hoặc bằng)

cả Minimum support và Minimum confidence gọi là các luật mạnh (Strong Rle).
Minimum support và Minimum confidence gọi là các giá trị ngƣỡng (threshold)
và phải xác định trƣớc khi sinh các luật kết hợp.
Một itemsets mà tần suất xuất hiện của nó >= min_sup gọi là frequent
itemsets.

Một số loại luật kết hợp
- Binary association rules (luật kết hợp nhị phân): Apple => Banana
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
13
- Quantitative association rules (luật kết hợp định lƣợng):
weight in [70kg – 90kg] => height in [170cm – 190cm]
- Fuzzy association rules (Luật kết hợp mờ): weight in HEAVY => height
in TALL
Thuật toán phổ biến nhất tìm các luật kết hợp là Apriori sử dụng Binary
association rules.
2.4 Phân loại luật kết hợp:
- Boolean association rule (luậtkếthợpluận Boolean association rule (luật kết hợp
luận lý)/quantitative association rule (luật kết hợp lƣợng số).
- Single-dimensional association rule (luậtkếthợp Single-dimensional association
rule (luật kết hợp đơn chiều)/ multidimensional association rule (luật đơn chiều)/
multidimensional association rule (luật kết hợp đa chiều).
- Single-level association rule (luậtkếthợp đơn mức)/multilevel association rule
(luậtkếthợp đa mức).
- Association rule (luậtkếthợp)/correlation rule (luật tƣơng quan thống kê).
- Boolean association rule (luật kết hợpluận lý)/quantitative association rule (luật
kết hợp lƣợng số): Boolean association rule luật mô tả sự kết hợp giữa sự hiện
diện/vắng mặt của các phần tử; Quantitative association rule luật mô tả sự kết hợp giữa

các phần tử/thuộc tính định lƣợng.
- Single-dimensional association rule (luật kết hợp đơn chiều)/multidimensional
association rule (luật kết hợp đa chiều): Single-dimensional association rule luật chỉ liên
quan đến các phần tử/thuộc tính của một chiều dữ liệu; Multidimensional association
rule luật liên quan đến các phần tử/thuộc tính của nhiều hơn một chiều.
- Single-level association rule (luật kết hợp đơn mức) /multilevel association rule
(luật kết hợp đa mức): Single-level association rule luậtchỉ liên quan đến các phần
tử/thuộc tính ở một mức trừu tƣợng; Multilevel association rule luật liên quan đến các
phần tử/thuộc tính ở các mức trừu tƣợng khác nhau.
- Association rule (luật kết hợp)/correlation rule (luật tƣơng quan thống kê):
Association rule strong association rules A->B (association rules đáp ứng yêu cầu
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
14
minimum support threshold và minimum confidence threshold); Correlation rule strong
association rules A -> B đáp ứng yêu cầu về sự tƣơng quan thống kê giữa A và B.
2.5 Thuật toán Apriori - ứng dụng theo phƣơng pháp luật kết hợp:
2.5.1 Ý tưởng chính của thuật toán Apriori:

- Tìm tất cả frequent itemsets:
k-itemset (itemsets gồm k items) đƣợc dùng để tìm (k+1)- itemset.
Đầu tiên tìm 1-itemset (ký hiệu L1). L1 đƣợc dùng để tìm L2 (2-itemsets).
L2 đƣợc dùng để tìm L3 (3-itemset) và tiếp tục cho đến khi không có k-itemset
đƣợc tìm thấy.
- Từ frequent itemsets sinh ra các luật kết hợp mạnh (các luật kết hợp thỏa
mãn 2 tham số min_sup và min_conf).
Các bƣớc cụ thể đƣợc mô tả nhƣ hình dƣới đây:
Bài thu hoạch môn học “Khai phá dữ liệu”


GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
15

Bƣớc 1: duyệt toàn bộ transaction database để có đƣợc support S của 1-
itemset, so sánh S với minsup, để có đƣợc 1-itemset (F
1
)
Bƣớc 2: sử dụng F
k-1
nối (join) F
k-1
để sinh ra các k-itemset. Loại bỏ các k-
itemset không có đủ tập con.
Bƣớc 3: duyệt cơ sở dữ liệu giao dịch để có đƣợc support của mỗi k-
itemset, so sánh S với minsup để thu đƣợc frequent k-itemset(F
k
)
Bƣớc 4: nếu còn tìm thấy frequent itemsets thì quay lại bƣớc 2, nếu không
tìm thấy frequent itemsets thì sang bƣớc 5.
Bƣớc 5: với mỗi frequent itemset I có số lƣợng item k >= 2, sinh tất cả các
tập con s không rỗng của I.
Bƣớc 6: với mỗi tập con s không rỗng của I, sinh ra các luật s -> (I-s) nếu
độ tin cậy (confidence) của nó >= minconf.
2.5.2 Thuật toán Apriori Algorithm:
1. Duyệt (Scan) toàn bộ transaction database để có đƣợc support S của 1-
itemset, so sánh S với min_sup, để có đƣợc 1-itemset (L1)
2. Sử dụng Lk-1 nối (join) Lk-1 để sinh ra candidate k-itemset. Loại bỏ
các itemsets không phải là frequent itemsets thu đƣợc k-itemset
3. Scan transaction database để có đƣợc support của mỗi candidate k-
itemset, so sánh S với min_sup để thu đƣợc frequent k –itemset (Lk)

4. Lặp lại từ bƣớc 2 cho đến khi Candidate set (C) trống (không tìm thấy
frequent itemsets)
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
16
5. Với mỗi frequent itemset I, sinh tất cả các tập con s không rỗng của I
6. Với mỗi tập con s không rỗng của I, sinh ra các luật s => (I-s) nếu độ
tin cậy (Confidence) của nó > =min_conf

Chẳn hạn với I= {A1,A2,A5},các tập con của I:
{A1}, {A2}, {A5}, {A1,A2},{A1,A5},{A2,A5}
sẽ có các luật sau
{A1} => {A2,A5},{A2} =>{A1,A5},{A5} =>{A1,A2}
{A1,A2} =>{A5},{A1,A5} =>{A2},{A2,A5} => {A1}

Ví dụ 1: Giả sử ta có có sở dữ liệu giao dịch (Transaction Database -TDB) nhƣ
sau :
CSDL giao dịch
TransID
Items
100
A,B
200
A,B,C
300
B,C,D,E
400
D,E
500

A,B,C,D
Với minsupp=40%, minconf=60%
Thuật toán Apriori khai phá luật kết hợp đƣợc mô tả qua các bƣớc sau:
Bƣớc 1: tìm các tập phổ biến
minsupp=0.4














CSDL giao dịch

Tập ứng cử viên C1
Tập phổ biến L1
TransID
Items

Intems
sup

Intems

sup
100
A,B



A
3

A
3
200
A,B,C

B
4



B
4
300
B,C,D,E

C
3

C
3
400

D,E

D
3

D
3
500
A,B,C,D

E
2

E
2








Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
17

C2


C2


L2


Intems

Intems
sup

Intems
sup

{A,B}

{A,B}
3

{A,B}
3

{A,C}



{A,C}
2
{A,C}
2


{A,D}

{A,D}
1
{B,C}
3

{A,E}

{A,E}
0

{B,D}
2

{B,C}

{B,C}
3

{C,D}
2

{B,D}

{B,D}
2





{B,E}

{B,E}
1




{C,D}

{C,D}
2




{C,E}

{C,E}
1




{D,E}

{D,E}
1













C3

C3


L3


{A,B,C}



{A,B,C}
2

{A,B,C}
2


{A,B,D}

{A,B,D}
1
{B,C,D}
2

{A,C,D}

{A,C,D}
1



{B,C,D}

{B,C,D}
2













C4



C4




L4


{A,B,C,D}

{A,B,C,D}
0

{}

Kết quả: tập phổ biến bao gồm L1, L2, L3
Bƣớc 2: tìm luật từ tập phổ biến
Xét các tập phổ biến từ L2 trở lên : bao gồm L2, L3
Xét tập phổ biến L2
minconf=60%











L2





Intems
Rule
sup(A,B)
sup(A)
Conf
Ghi
chú
{A,B}
A => B
3
3
100%


B => A
3
4
75%

{A,C}

A => C
2
3
67%


C => A
2
3
67%

{B,C}
B => C
3
4
75%


C => B
3
3
100%

{B,D}
B => D
2
4
50%
Loại
Bài thu hoạch môn học “Khai phá dữ liệu”


GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
18

D => B
2
3
67%

{C,D}
C => D
2
3
67%


D => C
2
3
67%


Xét tập phổ biến L3
minconf=60%











L3





Intems
Rule
sup(A,B)
sup(A)
Conf

{A,B,C}
A => B,C
2
3
67%


B,C => A
2
3
67%


B => A,C

2
4
50%
Loại

A,C => B
2
2
100%


C => A,B
2
3
67%


A,B => C
2
3
67%

{B,C,D}
B => C,D
3
4
75%


C,D => B

2
2
100%


C => B,D
2
3
67%


B,D => C
2
2
100%


D => B,C
2
3
67%


B,C => D
2
3
67%

Kết quả: tìm đƣợc các luật sau
R1

A => B
R2
B => A
R3
A => C
R4
C => A
R5
B => C
R6
C => B
R7
D => B
R8
C => D
R9
D => C
R10
A => B,C
R11
B,C => A
R12
A,C => B
R13
C => A,B
R14
A,B => C
R15
B => C,D
R16

C,D => B
R17
C => B,D
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
19
R18
B,D => C
R19
D => B,C
R20
B,C => D
Ví dụ 2 :
CSDL giao dịch
TransID
Items
1
Beer, Diaper, Baby Powder, Bread, Umbrella
2
Diaper, Baby Powder
3
Beer, Diaper, Milk
4
Diaper, Beer, Detergent
5
Beer, Milk, Coca-cola

Với minsupp=40%, minconf=70%
Thuật toán Apriori khai phá luật kết hợp đƣợc mô tả qua các bƣớc sau:

Bƣớc 1: tìm các tập phổ biến
minsupp=0.4 (2/5)









Tập ứng cử viên C1


Tập phổ biến L1

Intems
sup

Intems
sup
Beer
4

Beer
4
Diaper
4



Diaper
4
Baby Powder
2

Baby Powder
2
Bread
1

Milk
2
Umbrella
1



Milk
2



Detergent
1



Coca-cola
1









C2


L2

Intems
sup

Intems
sup
Beer, Diaper
3

Beer, Diaper
3
Beer, Baby Powder
0
Beer, Milk
2
Beer, Milk
2
Diaper, Baby
Powder

2
Diaper, Baby Powder
2



Diaper, Milk
0



Baby Powder, Milk
0








C3


L3

Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
20

Beer, Diaper, Milk
2



Beer, Diaper, Milk
2
Beer, Diaper, Baby
Powder
1



Bƣớc 2: tìm luật từ tập phổ biến
Xét các tập phổ biến từ L2 trở lên : bao gồm L2, L3
Xét tập phổ biến L2
minconf=70%











L2






Intems
Rule
sup(A,B)
sup(A)
Conf
Ghi chú
Beer, Diaper
Beer => Diaper
3
4
75%


Diaper => Beer
3
4
75%

Beer, Milk
Beer => Milk
2
4
50%
Loại

Milk => Beer

2
2
100%

Diaper, Baby Powder
Diaper => Baby Powder
2
4
50%
Loại

Baby Powder => Diaper
2
2
100%


Xét tập phổ biến L3
minconf=70%












L3





Intems
Rule
sup(A,B)
sup(A)
Conf
Ghi chú
Beer, Diaper, Milk
Beer => Diaper, Milk
2
4
50%
Loại

Diaper, Milk => Beer
2
0
0%
Loại

Diaper => Beer, Milk
2
4
50%
Loại


Beer, Milk => Diaper
2
2
100%


Milk => Beer, Diaper
2
2
100%


Beer, Diaper => Milk
2
3
67%
Loại
Kết quả: tìm đƣợc các luật sau
R1
Beer => Diaper
R2
Diaper => Beer
R3
Milk => Beer
R4
Baby Powder => Diaper
R5
Beer, Milk => Diaper
R6

Milk => Beer, Diaper
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
21
Từ kết quả các luật đƣợc sinh ra bởi giao dịch bán hàng trên, ta thấy rằng
có luật có thể tin đƣợc (hợp lý) nhƣ Baby Powder => Diaper, có luật cần phải
phân tích thêm nhƣ Milk =>Beer và có luật có vẻ khó tin nhƣ Diaper =>Beer.Ví
dụ này sinh ra các luật có thể không thực tế vì dữ liệu dùng để phân tích
(transaction database) hay còn gọi là tranining data rất nhỏ.
Thuật toán Apriori đƣợc dùng để phát hiện các luật kết hợp dạng khẳng
định (Positive Rule X=>Y) nhị phân (Binary Association Rules) chứ không thể
phát hiện các luật kết hợp ở dạng phủ định (Negative Association Rule) chẳng
hạn nhƣ các kết hợp dạng “Khách hàng mua mặt hàng A thƣờng KHÔNG mua
mặt hàng B” hoặc “Nếu ủng hộ quan điểm A thƣờng KHÔNG ủng hộ quan điểm
B”. Khai phá các luật kết hợp dạng phủ định (Mining Negative Association
Rules) có phạm vi ứng dụng rất rộng và thú vị nhất là trong Marketing, Health
Care và Social Network Analysis.
2.5.3 Mã giả:
- Mục đích của thuật toán: Tìm các tập mục phổ biến dựa trên cơ sở sinh các
ứng cử.
- Đầu vào:
o Cơ sở dữ liệu D.
o Ngƣỡng độ hỗ trợ cực tiểu của các tác vụ hay minsupp.
- Đầu ra: Tập các tập mục phổ biến.
- Nội dung của thuật toán:
(1) Quét cơ sở dữ liệu để tìm các tập 1 mục phổ biến L
1
.
(2) For (k=2; L

k-1
; k++) {
(3) C
k
=apriori_gen(L
k-1
, minsupp); // Sinh các ứng cử từ L
k-1

(4) For ( mỗi tác vụ t trong D) {// Quét D để đếm
(5) C
t
=subset(C
k
,t);// lấy tập con của t mà là các ứng cử trong C
k

(6) for ( mỗi ứng cử c C
t

(7) c.count ++; // Tăng đếm cho c một đơn vị
(8) }
(9) L
k
= {c C
k
sao cho: c.count minsupp}
(10) }
(11) Return L=
k

L
k

Thủ tục apriori_gen :
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
22
- Mục đích của thủ tục: Tìm C
k
– Tức sinh các ứng cử và tỉa các tập mục không
phổ biến.
- Đầu vào:
o Tập phổ biến (k-1)- mục L
k-1.

o Ngƣỡng độ hỗ trợ cực tiểu của các tác vụ hay minsupp.
- Đầu ra: C
k

- Nội dung của thủ tục:
Procedure apriori_gen(L
k-1
: tập phổ biến
(k-1)
mục; minsupp)
(1) For mỗi mục l
1
L
k-1


(2) For mỗi mục l
2
L
k-1
{
(3) If(l
1
[1]=l
2
[1]) (l
1
[2]=l
2
[2]) (l
1
[k-2]=l
2
[k-2]) (l
1
[k-1]<l
2
[k-1])
(4) then c=l
1
l
2
; // bƣớc kết nối để sinh các ứng cử c
(5) if has_infrequent_subset(c, L
k-1

) then
(6) Xóa c; // Bƣớc tỉa
(7) else thêm c vào C
k
;
(8) }
(9) Return C
k
;
Thủ tục has_infrequent_subset:
- Mục đích của thủ tục: Kiểm tra các tập con (k-1) mục của ứng cử k mục có là
phổ biến không?
- Đầu vào:
o ứng cử k mục c.
o Tập phổ biến (k-1)- mục L
k-1
.
- Đầu ra: Khẳng định c có là phổ biến hay không.
- Nội dung của thủ tục:
Procedure has_infrequent_subset(c: ứng cử k mục; L
k-1
)
(1) For mỗi tập con (k-1) mục s của c
(2) if s L
k-1
then
(3) return TRUE;
(4) Return FALSE;
Bài thu hoạch môn học “Khai phá dữ liệu”


GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
23
2.5.4 Cải tiến thuật toán Apriori
 Đối với tiếp cận Apriori căn bản thì số lƣợng thuộc tính trên dòng thƣờng khó
hơn nhiều so với số lƣợng dòng giao tác.
Ví dụ:
o 50 thuộc tính mỗi cái có 1-3 giá trị, 100.000 dòng (không quá tệ)
o 50 thuộc tính mỗi cái có 10-100 giá trị, 100.000 dòng (hơi tệ)
o 10.000 thuộc tính mỗi cái có 5-10 giá trị, 100 dòng (quá tệ )
Lƣu ý:
o Một thuộc tính có thể có một vài giá trị khác nhau
o Các thuật toán luật kết hợp có đặc trƣng là xem một cặp thuộc tính-giá trị
là một thuộc tính (2 thuộc tính mỗi cái có 5 giá trị => "10 thuộc tính")
Vì vậy, ngƣời ta đã khắc phục tình trạng nghẽn cổ chai của thuật toán Apriori trong
việc tao ứng cử viên bằng cách dùng một số kỹ thuật sau:
Dựa vào kỹ thuật băm (hash-based technique):
Bƣớc tỉa của thuật toán Apriori đòi hỏi kiểm tra tất cả các tập con (k-1) mục ứng cử
có phải là tập phổ biến không, tức là có mặt trong tập phổ biến đã tìm đƣợc ở bƣớc
trƣớc là L
k-1
không. Để có thể kiểm tra nhanh chóng, ngƣời ta lƣu các tập phổ biến trong
các bảng băm (hash table) tức lƣu L
k-1
trong bảng băm.
Ta minh họa kỹ thuật này nhƣ sau: Cho tập các ứng cử C
k
và một tác vụ T, chúng ta
cần tìm tất cả các ứng cử đƣợc chứa trong T. Sau đây ta miêu tả một cấu trúc dữ liệu
cho phép thực hiênh điều đó một cách hiệu quả.
Các tập mục ứng cử C

k
đƣợc nêu trong một cây băm. Một nút của cây băm hoặc là
chứa một danh sách các tập mục (nút lá) hoặc là một bảng băm (nút trong). Trong nút
trong, mỗi cụm (bucket) của bẳng băm chỉ tới một nút khác. Gốc của cây băm đƣợc xác
định có độ sâu 1. Một nút trong ở độ sâu d chỉ tới các nút ở độ sâu d+1. Các tập mục
đƣợc nêu trong các nút lá. Khi ta thêm một tập mục c, ta bắt đầu từ gốc và đi xuống trên
cây đến khi gặp một nút lá. Tại một nút trong ở độ sâu d, ta quyết định theo nhánh tiếp
theo bằng cách dùng một hàm băm tới mục thứ d của tập mục. Tất cả các nút đƣợc tạo
Bài thu hoạch môn học “Khai phá dữ liệu”

GVHD: PGS.TS Đỗ Phúc SVTH: Nguyễn Thị Thu Thủy
24
ra ban đầu là các nút lá. Khi số các tập mục trong nút lá vƣợt quá ngƣỡng nào đó, nút lá
chuyển thành nút trong.
Bắt đầu từ nút gốc, hàm tập con tìm tất cả các ứng cử đƣợc chia trong tác vụ T nhƣ
sau: Nếu ta ở nút lá, ta xem các tập mục trong nút lá có đƣợc chứa trong T không để trả
lời. Nếu ta ở nút trong và ta đi đến nút đó bởi băm mục thứ i, ta băm trên mỗi mục ở sau
i trong T và áp dụng đệ quy thủ tục này cho nút ở trong cụm tƣơng ứng. Với nút gốc, ta
băm trên mỗi mục trong T.
Để xem tại sao hàm tập con trả về tập mong muốn, ta xét xem điều gì xảy ra tại nút
gốc. Với mọi tập mục c chứa trong tác vụ T, ta bảo đảm rằng chỉ bỏ qua các tập mục mà
bắt đầu với một mục không ở trong T. Thực hiện tƣơng tự cho độ sâu thấp hơn. Thêm
vào đó, vì các mục trong một tập mục bất kỳ là có trật tự (trật tự từ điển), nếu ta đi đến
nút hiện thời bởi băm mục i, ta chỉ cần xét các mục trong T mà nó xuất hiện sau i.
Nếu k là kích thƣớc của tập mục ứng cử trong cây băm, ta có thể tìm thấy trong thời
gian O(k) một tập mục có chứa trong tác vụ không bằng cách dùng dãy bít để miêu tả
tác vụ. Mỗi bít của dãy bít tƣơng ứng với một mục và trạng thái của bít cho biết tác vụ
có chứa mục này hay không. Do đó ta kiểm tra một cách rõ ràng bít tƣơng ứng với mỗi
mục trong ứng cử viên để kiểm tra ứng cử đó có chứa trong tác vụ không. Dãy bít đó
đƣợc tạo cùng với cây băm, khởi tạo và lập lại trạng thái cho mỗi tác vụ.

Giảm giao dịch (transaction reduction) tức rút gọn số các tác vụ cần quét trong
các lần lặp sau:
Một tác vụ không chứa bất kỳ tập k mục phổ biến nào thì cũng không thể chứa bất
kỳ tập (k+1) mục phổ biến. Do đó, tác vụ đó có thể đánh dấu hoặc loại bỏ khỏi lần xét
sau.
Phân hoạch (partitioning) tức phân chia dữ liệu để tìm tập mục ứng cử:
Kĩ thuật phân hoạch có thể sử dụng bởi nó chỉ đòi hỏi quét cơ sở dữ liệu 2 lần để
khai phá tập mục phổ biến. Việc khai phá bằng phân hoạch dữ liệu gồm 2 giai đoạn.
trong giao đoạn 1, thuật toán chia các tác vụ D thành n vùng. Nếu ngƣỡng hỗ trợ cực
tiểu của D là minsupp thì ngƣỡng hỗ trợ cực tiểu cần tính cho một vùng là tích của
minsupp với số các tác vụ trong vùng đó. Với mỗi vùng, tập mục phổ biến cho vùng đó

×