Tiểu luận Công nghệ tri thức Tramg 1/40
A – LÝ THUYẾT
I. TÌM HIỂU TỔNG QUAN VỀ DATA MINING
II. CÁC PHƯƠNG PHÁP MÁY HỌC ỨNG DỤNG TRONG DATA MINING
1. Tìm luật kết hợp (Mining Association Rules)
2. Phân lớp (Classification)
3. Gom nhóm (Clustering)
III. THUẬT TOÁN TÌM LUẬT KẾT HỢP ỨNG DỤNG TRONG DATA MINING
1. Giới thiệu – các định nghĩa liên quan
Các vấn đề về luật kết hợp
Support
Confidence
2. Tổng quan về các thuật toán tìm luật kết hợp
2.1 Thuật toán cơ sở
2.2 Các thuật toán tuần tự (Sequential)
Thuật toán AIS
Thuật toán SETM
Thuật toán Apriori
Thuật toán Apriori-TID
Thuật toán Apriori-Hybrid
Một số thuật toán khác:
Off-line Candidate Determination (OCD)
Partitioning
Sampling
Dynamic Itemset Counting (Brin1997a)
CARMA (Continuous Association Rule Mining Algorithm)
2.2 Các thuật toán song song và phân tán
Các thuật toán song song dữ liệu (Data Parallelism)
CD
PDM
DMA
CCPD
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 2/40
Các thuật toán song song tác vụ (Task Parallelism)
DD
IDD
HPA
PAR
Các thuật toán khác
Candidate Disstribution
SH
HD
3. So sánh các thuật toán
IV. TỔNG KẾT
B – BÀI TẬP HỆ CHUYÊN GIA
XÂY DỰNG HỆ CHUYÊN GIA “HỆ HỖ TRỢ CHẨN ĐOÁN, PHÒNG
NGỪA, CHỮA TRỊ MỘT SỐ BỆNH THƯỜNG GẶP TỪ CÁC TRIỆU
CHỨNG LÂM SÀNG Ở TRẺ EM”
I. Xây dựng cơ sở trí thức cho bài toán
II. Cài đặt chương trình DEMO
Tài liệu tham khảo
LỜI CẢM ƠN
Nhóm học viên thực hiện xin gửi lời cảm ơn chân thành đến Thầy Phan Huy Khánh,
Thầy đã tận tình truyền đạt những kiến thức cần thiết cho chúng em trong suốt thời
gian môn học. Tuy đây là môn học mang tính trừu tượng cao nhưng qua các bài giảng
cụ thể và ví dụ thực tiễn sinh động của Thầy, chúng em đã nắm bắt được cơ bản nội
dung môn học và đã có những định hướng chính xác hơn.
Do thời gian và trình độ còn nhiều hạn chế cũng như số lượng lớn các thuật toán cần
trình bày, chắc chắn khóa luận còn có chỗ sai sót. Nhóm chúng em rất mong nhận
được ý kiến góp ý và động viên của Thầy cũng như tất cả các Anh/Chị và các bạn để
tiểu luận được hoàn thiện hơn nữa.
Chúng em xin chân thành cảm ơn!
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 3/40
A – LÝ THUYẾT
I. TÌM HIỂU TỔNG QUAN VỀ DATA MINING
1. Data Mining là gì?
Data Mining (khai phá dữ liệu) là việc sử dụng những công cụ phân tích dữ liệu phức
tạp để tìm ra những tri thức chưa được biết đến, những mô hình thích hợp, những
mối quan hệ trong những cơ sở dữ liệu lớn. 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. Vì vậy, Data Mining không những tập hợp,
quản lý dữ liệu mà còn phân tích, tiên đoán dữ liệu.
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 (pattern) (hay các mô hình) từ dữ liệu.
Data Mining có thể thao tác trên dữ liệu ở dạng định lượng, có cấu trúc hoặc đa
phương tiện. Những ứng dụng Data Mining có thể sử dụng các phương pháp khác
nhau để khảo sát dữ liệu như:
- Mô hình kết hợp: một sự kiện này được kết hợp với một sự kiện khác, ví dụ:
mua bút và mua giấy.
- Mô hình phân tích đường đi: một sự kiện này dẫn đến một sự kiện khác, ví dụ:
đứa trẻ ra đời dẫn đến việc mua tã lót.
- Mô hình phân lớp: xác định những mô hình mới.
- Mô hình gom nhóm: tìm kiếm và ghi lại thành nhóm những sự kiện chưa khám
phá trước đây, như vị trí địa lý, mức độ ưu tiên.
- Mô hình dự báo: khám phá những mô hình mà con người có thể tiên đoán
đúng về những sự kiện tương lai.
Data Mining được xem là một tiến trình của phát hiện tri thức (Knowledge
Discovery) trong cơ sở dữ liệu.
2. Hạn chế của Data Mining
Data Mining được xem là những công cụ rất mạnh nhưng bản thân nó cũng không
thể là ứng dụng độc lập. Data Mining đòi hỏi những chuyên gia phân tích và chuyên
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 4/40
gia kỹ thuật có kỹ năng để phân tích và minh họa đầu ra dữ liệu. Vì vậy, những hạn
chế của Data Mining liên quan đến dữ liệu hoặc con người hơn là về mặt công nghệ.
Mặc dầu Data Mining có thể khám phá ra những mô hình và quan hệ trong cơ sở dữ
liệu, nó không thể cho người dùng biết được giá trị và ý nghĩa của những mô hình đó,
mà đòi hỏi người sử dụng phải tự xác định nó. Tương tự, giá trị của những mô hình
được khám phá tùy thuộc vào nó được so sánh với “thế giới thực” như thế nào.
Một hạn chế khác của Data Mining là khi nó xác định sự liên quan giữa hành vi và
biến, nó không cần thiết phải xác định nguyên nhân của quan hệ.
3. Ứng dụng của Data Mining
Data Mining được ứng dụng cho nhiều mục đích khác nhau trong cả hai lĩnh vực
chung và riêng. Những ngành như ngân hàng, bảo hiểm, y tế và buôn bán lẻ, Data
Mining được sử dụng để giảm chi phí, nâng cao việc tìm kiếm thị trường và tăng
cường khả năng buôn bán. Ví dụ, ngành bảo hiểm và ngân hàng sử dụng Data Mining
để kiểm tra sự gian lận và giúp đỡ trong việc đánh giá những rủi ro. Sử dụng những
dữ liệu của khách hàng qua nhiều năm, công ty có thể phát triển những mô hình để
tiên đoán một khách hàng là có đáng tin cậy hay không hoặc một báo cáo về tai nạn
có thể là gian lận và nên được điều tra nghiên cứu lại
Trong lĩnh vực chung, những ứng dụng Data Mining không những được dùng như là
một phương tiện để kiểm tra sự gian lận và lãng phí mà còn được dùng cho những
mục đích như đo lường và cải tiến việc thực hiện chương trình. Data Mining cũng
giúp đỡ chính phủ liên bang thu hồi hàng triệu đôla bị gian lận trong quĩ hỗ trợ chăm
sóc người già, giúp đỡ bộ tư pháp đưa ra những mô hình tội phạm và phân phối
nguồn lực thích hợp, trợ giúp tiên đoán sự thay đổi nhân khẩu và ước lượng tốt hơn
về nhu cầu ngân sách,
Gần đây, Data Mining được xem là công cụ quan trọng trong vấn đề an ninh quốc gia.
Một số người đề nghị rằng Data Mining nên được sử dụng như là phương tiện xác
định những hoạt động khủng bố như chuyển tiền và thông tin, và xác định định, đánh
dấu những người khủng bố qua hồ sơ du lịch, di cư. Hai ứng dụng Data Mining đầu
tiên gây được sự chú ý mạnh mẽ là dự án nhận biết thông tin khủng bố (Terrorism
Information Awareness-TIA) và hệ quan sát hành khách trước màn hình được máy
tính trợ giúp (Computer Assisted-Passenger Prescreening System II-CAPPS II). Cả 2 hệ
thống này ra đời sau sự kiện 11-09-2001, ngày nước Mỹ bị bọn khủng bố tấn công,
nhằm đảm bảo an toàn cho các chuyến bay trước nguy cơ khủng bố. Hiện tại, dự án
TIA không được tiếp tục và CAPPS II được thay thế bởi hệ thống Chuyến bay an toàn
(Security Flight).
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 5/40
4. Một số vấn đề về Data Mining
a. Chất lượng dữ liệu
Chất lượng dữ liệu là một thách thức lớn đối với Data Mining. Chất lượng dữ liệu
được biết như là độ chính xác và toàn vẹn dữ liệu. Chất lượng dữ liệu cũng có thể bị
ảnh hưởng bởi cấu trúc và sự nhất quán của dữ liệu đang được phân tích.
Sự hiện diện của những bản ghi trùng nhau, sự thiếu dữ liệu chuẩn, dữ liệu được cập
nhật cùng một lúc và lỗi do con người có thể tác động đáng kể đến hiệu quả của
những kỹ thuật Data Mining, cụ thể là sự khác nhau tinh vi có thể tồn tại trên dữ liệu.
Để cải tiến chất lượng dữ liệu, đôi khi phải tinh chế dữ liệu như loại bỏ các bản ghi
trùng nhau, hình thức hóa các giá trị biểu diễn trong cơ sở dữ liệu (ví dụ: “no” được
thay thế thành 0 hay N ), tính toán những điểm dữ liệu bị thiếu, loại bỏ những
trường dữ liệu không cần thiết,
b. Tương tác giữa các thành phần
Đó là sự tương tác giữa các thành phần cơ sở dữ liệu và phần mềm Data Mining. Sự
tương tác ám chỉ khả năng của một hệ thống máy tính và/hoặc dữ liệu để làm việc
với những hệ thống khác, hoặc dữ liệu sử dụng những tiến trình hoặc tiêu chuẩn
chung.
Đối với Data Mining, sự tương tác giữa các thành phần cơ sở dữ liệu và phần mềm
Data Mining là quan trọng để cho phép việc tìm kiếm và phân tích nhiều cơ sở dữ liệu
cùng một lúc, và đảm bảo cho sự tương thích của Data Mining với các hoạt động của
những trạm làm việc khác nhau.
c. Sứ mệnh cao cả (Mission Creep)
Mission Creep là một trong những rủi ro hàng đầu của Data Mining. Mission creep
được biết như là việc sử dụng dữ liệu cho những mục đích khác hơn là thu thập dữ
liệu gốc, không quan tâm dữ liệu được cung cập là tùy chọn hay được thu thập qua
những phương tiện khác nhau.
d. Tính bảo mật (Privacy)
Khái niệm vấn đề bảo mật liên quan đến mục đích thực sự của dự án và tiềm năng
của ứng dụng Data Mining để phát triển xa hơn mục đích ban đầu của nó. Ví dụ, vài
chuyên gia đề nghị ứng dụng Data Mining chống khủng bố cũng có thể ứng dụng để
kết hợp với những loại tội phạm khác.
II. CÁC PHƯƠNG PHÁP MÁY HỌC
ỨNG DỤNG TRONG DATA MINING
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 6/40
1. Tìm luật kết hợp (Mining Association Rules)
Nhiệm vụ của tìm luật kết hợp là tìm các mối quan hệ giữa tập các đối tượng (còn gọi
là các phần tử ) trong một CSDL. Các mối quan hệ này được diễn tả bởi luật kết hợp
và mỗi luật có hai phép đo: độ hỗ trợ (support) và độ tin cậy (Confidence). Tìm luật
kết hợp rất thích hợp cho các các ứng dụng như crossing-marketing và attached
mailing. Ngoài ra nó còn được áp dụng trong thiết kế catalog, add-on sale, store layout
và phân đoạn khách hàng dựa trên đơn mua hàng. Bên cạnh lĩnh vực kinh doanh, tìm
luật kết hợp còn được áp dụng trong các lĩnh vực khác như chẩn đoán y học,
2. Phân lớp (Classification)
Phân lớp trong Data Mining đã được công nhận là một phương pháp máy học hiệu quả
hiện đang áp dụng trong nhiều mặt của khoa học thống kê, ghi nhận mẫu, lý thuết
quyết định, máy học, mạng nơ-ron,…
Ba bước xử lý chính của phân lớp:
» Bước 1: xây dựng một mô hình sử dụng tập dữ liệu đã biết, được gọi là dữ
liệu tập huấn (Training data) hay các mẫu (Sample).
» Bước 2: đánh giá độ chính xác ước đoán của mô hình sử dụng dữ liệu thử
(test data).
» Bước 3: sử dụng mô hình để dự đoán dữ liệu chưa biết (nếu độ chính xác đã
được chấp nhận).
Chuẩn bị dữ liệu để phân lớp:
» Làm sạch dữ liệu: xóa nhiễu và các giá trị thất lạc.
» Kiểm tra không thích hợp: loại bỏ các thuộc tính dư thừa hoặc không thích
hợp.
» Chuyển đổi dữ liệu: dữ liệu được tổng quát hóa lên mức khái niệm cao hơn
hoặc được chuẩn hóa.
3. Gom nhóm (Clustering)
Gom nhóm là nhóm tập các đối tượng vào những nhóm tương đồng nhau,đích nhắm
là lớp có tính tương tự cao ở ngoài lớp và có tính tương tự thấp ở trong lớp. Ví dụ
khám phá các nhóm khách hàng khác biệt, phân loại gen theo chức năng tương tự
nhau, nhận diện nhóm người mua bảo hiểm xe ô-tô có tỉ lệ yêu cầu trung bình cao,
Gom nhóm khác phân lớp (Classification) ở chỗ nó không xác định trước các lớp và
cũng không đánh nhãn lớp cho tập mẫu tập huấn.
Phân lớp là phương pháp học theo mẫu, học có giáo viên còn gom nhóm là học theo
sự quan sát, không có giáo viên.
III. THUẬT TOÁN TÌM LUẬT KẾT HỢP ỨNG DỤNG TRONG DATA MINING
III.1. Giới thiệu – các định nghĩa liên quan
Cho là tập của các phần tử.
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 7/40
Một tập X = {i
1
, i
2
,…,i
k
}
⊆
được gọi là một tập phần tử (itemset), hay tập k nếu nó
chứa k phần tử.
Một giao tác T trên là một bộ T có dạng T = (tid, I) trong đó tid là chỉ số định danh
của giao tác và I là một itemset.
Một cơ sở dữ liệu (CSDL) giao tác D trên là tập các giao tác trên .
Một luật kết hợp là một thể hiện có dạng X
⇒
Y, trong đó X,Y
⊆
I là itemset và X
∩
Y
=
∅
. X được gọi là số hạng đứng trước trong khi Y được gọi là vế thứ hai. Luật ở đây
nghĩa là X xác định Y.
Phủ của một tập X trong D gồm tập các định danh của giao tác trong D hố trợ X:
cover(X,D) := {tid | (tid,I)
∈
D, X
⊆
I}.
Độ hỗ trợ (support) của một tập X trong D là số giao tác có trong phủ của X trong D:
support(X,D) := | cover(X,D) |
Hay nói cách khác, độ hỗ trợ của X là tỷ số các giao tác T hỗ trợ tập phần tử X trong
cơ sở dữ liệu D:
support(X) = |{T
∈
D | X
⊆
T}| / |D|.
Trong [Agrawal1993] [Cheung1996c], support(s) của một luật kết hợp là tỉ số (tính
theo phần trăm) của các bản ghi có chứa X ∪ Y trên tổng số bản ghi của CSDL.
Như vậy nếu ta nói, độ hỗ trợ của một luật là 5% thì có nghĩa là có 5% trên tổng số
bản ghi có chứa X ∪ Y.
Độ hỗ trợ của luật X
⇒
Y được định nghĩa như sau: support(X
⇒
Y) = support(X
∪
Y).
Tính phổ biến của tập X trong D là khả năng xuất hiện của X trong một giao tác T ∈ D:
frequency(X,D) := P(X) = support(X,D) / |D|
Một tập phần tử được gọi là phổ biến nếu độ hỗ trợ của nó không nhỏ hơn trị tuyệt
đối ngưỡng hỗ trợ tối thiểu (minimal support threshold) σ
abs
với 0 ≤ σ
abs
≤ |D|.
Khi làm việc với các tập phổ biến, thay vì sử dụng support của chúng ta dùng một khái
niệm liên quan là ngưỡng phổ biến tối thiểu (minimal frequency threshold) σ
rel
với 0 ≤
σ
rel
≤ 1. Hiển nhiên σ
abs
= [σ
rel
. |D| ].
Độ tin cậy (confidence) hay độ chính xác (accuracy) của luật kết hợp X
⇒
Y trong D
được định nghĩa như sau:
confidence(X
⇒
Y ,D):=P(Y|X) = support(X
∪
Y,D) / support(X,D)
Một luật được gọi là tin cậy (confident) nếu P(Y|X) vượt quá ngưỡng tin cậy tối thiểu
γ với 0
≤
γ
≤
1.
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 8/40
Trong [Agrawal1993] [Cheung1996c], confidence(
α
) là tỉ số (tính theo phần trăm) của
số bản ghi có chứa X ∪ Y trên tổng số bản ghi của CSDL có chứa X.
Nghĩa là nếu nói độ tin cậy là 85% thì 85% số bản ghi chứa X cũng chứa Y.
Tiên đề:
Cho CSDL giao tác D trên , X,Y
⊆
là hai itemset, khi đó:
X
⊆
Y
⇒
support(Y) ≤ support(X)
Chứng minh:
Điều này có được ngay từ cover(Y)
⊆
cover(X). (ĐPCM)
III.2. Tổng quan về các thuật toán tìm luật kết hợp
1. Thuật toán cơ sở
Tìm các luật kết hợp từ một cơ sở dữ liệu bao gồm quá trình tìm tất cả các luật phù
hợp với ngưỡng support và confidence do người dùng ấn định. Vấn đề này có thể được
phân thành 2 vấn đề nhỏ hơn [Agrawal1994] như được trình bày trong thuật toán 1.
Thuật toán 1. Thuật toán cơ sở.
Input
I, D, s, α
Output
Các luật kết hợp thoả s và α
Thuật toán
Tìm mọi itemset xuất hiện có tần số lớn hơn hoặc
bằng support s do người dùng ấn định.
Phát sinh các luật thoả mãn độ tin cậy confidence α.
Bước thứ nhất của thuật toán sẽ tìm các mục dữ liệu thường xuyên xuất hiện trong cơ
sở dữ liệu thoả ngưỡng minsupp (các tập phổ biến). Các mục dữ liệu khác được gọi là
small itemset – không phổ biến.
Một nhận xét đáng chú ý là: nếu một tập các mục dữ liệu X không thoả support s thì
các tập lớn hơn của nó (superset) cũng sẽ không thoả s và ngược lại, nếu X thoả s thì
superset của X cũng thoả s.
Bước thứ hai của thuật toán 1 sẽ tìm các luật kết hợp sử dụng tập phổ biến đã tìm được
ở bước 1.
Xem xét ví dụ sau.
Ví dụ 1:
Giả sử có một cơ sở dữ liệu nhỏ với bốn mục dữ liệu I={Bánh mì, Bơ, Trứng, Sữa} và
có bốn giao dịch như trong bảng 1. Bảng 2 là các tập dữ liệu có thể có của I. Giả sử
rằng minsupp và minconf lần lượt là 40% và 60%. Hãy xem bảng 3: đầu tiên ta phải
tìm các luật thoả minsupp, sau đó phải xem xét các luật có độ tin cậy minconf tối thiểu
là 60%. Các mục dữ liệu thoả mãn hai điều kiện trên là {Bánh mì, Bơ} và {Bơ, Trứng}.
Minsupp cho mỗi mục dữ liệu đơn tối thiểu là 40% (xem bảng 2), vì thế các mục dữ
liệu này là phổ biến. Độ tin cậy của các luật được trình bày trong bảng 3, dễ dàng thấy
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 9/40
rằng luật (Bánh mì
→
Bơ) là hiển nhiên thoả. Tuy nhiên luật thứ hai (Bơ
→
Trứng) thì
không thoả vì có minconf nhỏ hơn 60%.
Bảng 1: cơ sở dữ liệu cho ví dụ 1
Transaction ID Mục dữ liệu
T1 Bánh mì, Bơ, Trứng
T2 Bơ, Trứng, Sữa
T3 Bơ
T4 Bánh mì, Bơ
Bảng 2: minsupp cho các tập phần tử của bảng 1
Ghi chú: Large: phổ biến
Small: không phổ biến
Mục dữ liệu Support, s (%) Large/Small
Bánh mì 50 Large
Bơ 100 Large
Trứng 50 Large
Sữa 25 Small
Bánh mì, Bơ 50 Large
Bánh mì, Trứng 25 Small
Bánh mì, Sữa 0 Small
Bơ, Trứng 50 Large
Bơ, Sữa 25 Small
Sữa, Trứng 25 Small
Bánh mì, Bơ, Trứng 25 Small
Bánh mì, Bơ, Sữa 0 Small
Bánh mì, Trứng, Sữa 0 Small
Bơ, Trứng, Sữa 25 Small
Bánh mì, Bơ, Trứng, Sữa 0 Small
Bảng 3: các luật thoả minconf ≥ 60%
Luật Độ tin cậy (%) Chọn luật
Bánh mì
→
Bơ
100 Có
Bơ
→
Bánh mì
50 Không
Bơ
→
Trứng
50 Không
Trứng
→
Bơ
100 Có
Việc tính toán các mục dữ liệu phổ biến rất tốn kém [Agrawal1994]. Tuy nhiên, có một
thuật toán trực tiếp tìm các luật kết hợp như thuật toán 2 sau đây (thuật toán này đã
được trình bày trong [Agrawal1994]).
Thuật toán 2 – Tìm các luật kết hợp dựa vào tập phổ biến
đã cho.
Input
I, D, s, α, L
Output
Các luật kết hợp thoả s và α
Thuật toán
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 10/40
Tìm tất cả các tập con x không rỗng của mỗi tập
phổ biến, l
∈
L
Đối với mỗi một tập x, xác định luật dạng x
⇒
(l-
x) nếu tỷ lệ tần số xuất hiện của l với tần số cuất
hiện của x lớn hơn hoặc bằng ngưỡng tin cậy.
Ví dụ, giả sử ta cần xác định luật (Bánh mì
→
Bơ) có được chọn trong ví dụ 1. Ở đây,
l={Bánh mì, Bơ} và x={Bánh mì}, như vậy (l-x)={Bơ}. Khi đó support(Bánh mì, Bơ)
với support(Bánh mì) là 100%, lớn hơn ngưỡng tin cậy đã cho, vậy luật này được
chọn. Để làm rõ thêm ta xét luật thứ 3 (Bơ
→
Trứng), trong đó x = {Bơ} và (l-x) =
{Trứng}. Tỷ lệ support(Bơ, Trứng) và support(Bơ) là 50%, nhỏ hơn ngưỡng tin cậy tối
thiểu là 60%. Như vậy ta nói không đủ cơ sở để kết luận rằng luật (Bơ
→
Trứng) đạt
độ tin cậy 60%.
Quá trình tìm các luật kết hợp trong các cơ sở dữ liệu cực lớn là rất tốn kém và đạt
hiệu suất thấp. Vì vậy hầu hết các cải tiến sau này đều theo hướng tìm những thuật
toán hiệu quả hơn cho bước thứ nhất [Algrawal1994] [Cheung1996c]
[Klemettien1994]. Phần tiếp theo sẽ trình bày các thuật toán này.
2. Các thuật toán tuần tự (Sequential Algorithm)
Phần này sẽ trình bày một cách tổng quát về các thuật toán đã có để tìm luật kết hợp.
Hầu hết các thuật toán được dùng để nhận dạng các tập phổ biến được phân thành 2
lớp: tuần tự và song song. Trong hầu hết các trường hợp, các thuật toán này giả thiết
rằng các tập phần tử được nhận dạng và sắp xếp theo thứ tự đồ thị lexico
(lexicographic – đồ thị dựa trên tên của mục dữ liệu). Kiểu sắp xếp này cung cấp một
cách quản lý logic mà theo đó các tập phần tử có thể được phát sinh và thống kê. Đây
là hướng tiếp cận tiêu chuẩn với các thuật toán tuần tự. On the other hand, các thuật
toán song song tập trung vào phương pháp sao cho xử lý song song tác vụ khi tìm
kiếm các tập phổ biến. Sau đây chúng ta sẽ thảo luận về các thuật toán loại này.
2.1 Thuật toán AIS
AIS là thuật toán được công bố đầu tiên để nhận dạng tất cả các tập phổ biến trong một
cơ sở dữ liệu giao tác [Agrawal1993]. Nó tập trung vào sự nâng cao các CSDL để xử
lý các câu hỏi hỗ trợ ra quyết định. Thuật toán này là đích nhắm để khám phá các luật
kết hợp chất lượng (qualitative rule).
Thuật toán AIS duyệt cơ sở dữ liệu đầu vào nhiều lần và ở mỗi lần duyệt, AIS quét qua
mọi giao tác. Trong lần duyệt đầu tiên, AIS đếm support của các mục dữ liệu riêng biệt
và xác định chúng thuộc tập phổ biến hay không. Tập phổ biến của mỗi lần duyệt được
mở rộng để phát sinh tổ hợp các tập phần tử. Sau khi quét một giao tác, các tập phần tử
chung của lần quét trước và các phần tử của giao tác hiện tại được xác định. Tập phần
tử chung này được mở rộng với những phần tử khác trong giao tác nhằm tạo ra tổ hợp
mới. Một tập mục dữ liệu phổ biến l được mở rộng chỉ với những mục dữ liệu là phổ
biến và xuất hiện trễ hơn trong thứ tự sắp xếp lexicographic của bất kỳ mục dữ liệu
nào có trong l. Để đạt được hiệu quả trong tác vụ này, AIS sử dụng công cụ ước lượng
và kỹ thuật cắt tỉa (pruning). Các kỹ thuật ước lượng và cắt tỉa xác định các tổ hợp
bằng cách bỏ qua các tập phần tử không cần thiết từ tập tổ hợp. Sau đó, support của
mỗi tổ hợp sẽ được tính toán. Các tổ hợp có support lớn hơn hoặc bằng minsupp được
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 11/40
chọn là tập phổ biến. Tập mục dữ liệu này được mở rộng để tạo các tổ hợp ở lần duyệt
kế tiếp. Quá trình này sẽ dừng khi không có tập mục dữ liệu nào được tìm thấy.
Thuật toán này bảo đảm rằng nếu tập phần tử nào không tồn tại trong toàn thể CSDL
thì nó không bao giờ trở thành một tổ hợp cho tập phổ biến trong lần duyệt tiếp theo.
Việc phát sinh số lượng lớn các tập tổ hợp thường là nguyên nhân dẫn đến tràn bộ nhớ
đệm. Bởi vậy một sự phối hợp việc quản lý bộ nhớ đệm là cần thiết. Thuật toán AIS đề
xuất hướng giải quyết rằng các tập phổ biến không cần thiết phải lưu trong bộ nhớ
trong suốt quá trình duyệt CSDL mà có thể được lưu trên đĩa. Thuật toán quản lý bộ
nhớ đệm cho các tập tổ hợp được cung cấp trong [Agrawal1993].
Vấn đề chính của AIS là nó phát sinh quá nhiều tổ hợp mà sau này sẽ không thoả
ngưỡng cho phép [Agrawal1994]. Nếu một cơ sở dữ liệu có m mục dữ liệu và mọi
mục dữ liệu đều xuất hiện trong mỗi giao tác thì sẽ có 2
m
trường hợp cần xét. Như
vậy,trong trường hợp xấu nhất, độ phức tạp của thuật toán này là hàm mũ theo m.
2.2 Thuật toán SETM
Thuật toán SETM được đề xuất trong [Houtsma1995] và thích hợp cho SQL nhằm tính
toán các tập phổ biến [Srikant1996]. Trong thuật toán này, mỗi thành phần của tập phổ
biến,
L
k
, đều có khuôn dạng <TID, itemset> trong đó TID là định danh duy nhất của
giao tác. Tương tự, mỗi thành phần của tập các tập tổ hợp,
C
k
, cũng có dạng <TID,
itemset>.
Tương tự như AIS, SETM tiến hành duyệt nhiều lần trên cơ sở dữ liệu. Trong lần
duyệt đầu tiên, nó đến support của các mục dữ liệu riêng lẻ và xác định xem chúng có
thoả ngưỡng đã đặt hay không. Sau đó SETM sẽ phát sinh các tổ hợp bằng cách mở
rộng tập phổ biến của lần duyệt trước. Thêm vào đo, SETM sẽ ghi nhớ các TID của
các giao tác đang phát sinh cùng các tập tổ hợp. Trong quá trình phát sinh tổ hợp,
SETM lưu một bản sao của tập phổ biến cùng với TID quá trình phát sinh giao tác theo
dạng tuần tự (sequential manner). Sau này, các tổ hợp sẽ được lưu dưới dạng các tập
phần tử và các tập không thoả ngưỡng sẽ bị xoá bằng hàm kết hợp (aggregation
function). Nếu cơ sở dữ liệu được sắp xếp theo TID, tập phổ biến chứa trong một giao
tác ở bước kế tiếp sẽ được thu nhận bằng cách sắp xếp
L
k
theo TID. Theo cách này,
có nhiều lần duyệt CSDL sẽ được tạo ra và khi không còn tập phổ biến nào được tìm
thấy, thuật toán sẽ dừng.
Điểm bất lợi chính của SETM là chi phí phải trả cho số lượng các tập tổ hợp
[Agrawal1994]. Vì mỗi tổ hợp có một TID tương ứng nên nó yêu cầu thêm không gian
nhằm có thể lưu trữ được một số lượng lớn các TID. Hơn nữa, khi support của một tổ
hợp được thống kê tại điểm cuối của lần duyệt,
C
k
lại không được sắp theo thứ tự, bởi
vậy cần phải có một lần sắp xếp nữa trên các tập phần tử. Sau đó, các tổ hợp được tách
(pruned) bằng cách loại bỏ các tập không thoả ngưỡng support. Có một cách sắp xếp
khác trên TID là cần thiết cho tập kết quả
L
k
. Sau này,
L
k
có thể được dùng để phát
sinh các tổ hợp cho lần duyệt kế tiếp. Trong thuật toán SETM [Agrawal1994], giả thiết
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 12/40
rằng
C
k
có thể chứa được trong bộ nhớ chính, vì vậy không cần phải quản lý bộ đệm.
Hơn nữa, theo [Sarawagi1998], SETM là không có hiệu quả và mỗi khi thực hiện trên
CSDL quan hệ sẽ không thấy phần báo cáo kết quả.
2.3 Thuật toán Apriori
Thuật toán Apriori được phát triển bởi [Agrawal1994] là thành tựu lớn nhất trong lịch
sử khi phá luật kết hợp [Cheung1996c]. Chi tiết của thuật toán sẽ được trình bày trong
[IV.1]. Điểm khác biệt cơ bản giữa Apriori với AIS và SETM là cách thức tạo và chọn
tổ hợp để thống kê thoả ngưỡng hay không. Như đã trình bày, cả trong AIS và SETM,
các tập phần tử chung giữa tập phổ biến của lần duyệt trước và các phần tử của giao
tác được xác định. Các tập chung này được mở rộng với các phần tử riêng biệt trong
giao tác để tạo các tổ hợp. Tuy nhiên, các phần tử riêng biệt này có thể là không phổ
biến. Ta đã biết rằng sự kết hợp của tập phổ biến và tập không phổ biến có thể lại tạo
ra tập không phổ biến nên kỹ thuật này phát sinh quá nhiều tổ hợp có thể không thoả
ngưỡng. Thuật toán Apriori tạo các tổ hợp bằng cách kết nối các tập phổ biến của lần
duyệt trước và xoá các tập con không thoả trong lần duyệt trước mà không xét đến các
giao tác trong CSDL. Bằng cách chỉ xét đến tập phổ biến của lần duyệt trước, số lượng
tổ hợp giảm đi dáng kể.
2.4 Thuật toán Apriori-TID
Apriori quét dữ liệu đầu vào cho mỗi lần duyệt nhằm thống kê support nhưng việc
quét dữ liệu đầu vào này không cần thiết phải thực hiện ở tất cả các lần duyệt. Dựa vào
điều này, [Agrawal1994] đề xuất thuật toán khác gọi là Apriori-TID. Tương tự như
Apriori, Apriori sử dụng hàm tạo tổ hợp của Apriori để xác định tập tổ hợp phần tử
trước mỗi lần duyệt. Sự khác biệt chính so với Apriori là thuật toán này không dùng
CSDL để thống kê support sau lần duyệt đầu tiên. Đúng hơn là nó dùng một bảng mã
của tập tổ hợp các phần tử, ký hiệu là
C
k
, đã dùng trong lần duyệt trước. Như trong
SETM, mỗi phần tử trong
C
k
có dạng <TID, X
k
> với X
k
là khả năng hiện diện của tập
k phần tử trong giao tác có định danh TID. Tại lần duyệt đầu tiên,
C
1
tương ứng với
CSDL, tuy nhiên mỗi phần tử được thay bằng tập phần tử. Trong các lần duyệt khác,
thành phần của
C
k
tương ứng với giao tác T là <TID, c> với c là một tổ hợp thuộc
C
k
chứa trong T. Bởi vậy kích thước của
C
k
có thể nhỏ hơn số lượng giao tác trong
CSDL. Hơn nữa, mỗi dòng vào trong
C
k
có thể nhỏ hơn giao tác tương ứng khi giá trị
k đủ lớn. Có điều này bởi vì rất ít tổ hợp có thể được chứa trong giao tác. Chi tiết thuật
toán được trình bày trong [IV.3].
Điểm tiện lợi khi sử dụng hàm mã hoá trên là trong các lần duyệt tiếp sau, kích thước
hàm sẽ trở nên nhỏ hơn so với CSDL, theo đó sẽ tiết kiệm được nhiều lần đọc dữ liệu.
Apriori-TID cũng thực hiện tốt hơn hai thuật toán AIS và SETM.
Trong Apriori-TID, tập tổ hợp các phần tử trong C
k
được lưu trữ trong một mảng sắp
xếp theo các TID. Mỗi C
k
lại được lưu theo cấu trúc tuần tự. Tại lần duyệt thứ k,
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 13/40
Apriori-TID cần có không gian bộ nhớ dành cho L
k-1
và C
k
trong quá trình tạo tổ hợp.
Không gian bộ nhớ là cần thiết cho C
k-1
, C
k
,
C
k
và
C
k -1
ở tại pha thống kê. Tại thời
điểm phát sinh tổ hợp, phân nửa bộ đệm được lấp đầy bằng các tổ hợp và điều này cho
phép các phần của C
k
và C
k-1
được lưu trong bộ nhớ suốt trong pha tính toán. Nếu bộ
nhớ không còn đủ để lưu trữ L
k
, thuật toán khuyến cáo nên sắp xếp L
k
ở thiết bị lưu trữ
ngoài.
Apriori-TID sử dụng
C
k
thay cho CSDL đầu vào sau lần duyệt đầu tiên nên nên nó đạt
hiệu quả cao ở các lần duyệt sau khi tập
C
k
đã trở nên nhỏ hơn. Tuy nhiên Apriori-TID
có cùng rắc rối với SETM khi
C
k
có khuynh hướng lớn dần, nhưng Apriori-TID thì
phát sinh tập tổ hợp ít hơn đáng kể so với SETM. Khi
k
lớn dần, một vấn đề nữa phát
sinh là việc quản lý bộ đệm (buffer management). Đây là căn cứ chứng tỏ Apriori –
TID thực hiện tốt hơn Apriori khi số tập
C
k
là đủ nhỏ để có thể đưa vào bộ nhớ và sự
phân bố các tập phổ biến là đủ lớn [Srikant1996b]. Sự phân bổ này sẽ trở nên nhỏ hơn
ngay sau khi vươn đến tột đỉnh và cứ tiếp tục trong một thời gian dài. Điều này cho
thấy hiệu suất của Apriori tốt hơn Apriori-TID đối với các tập dữ liệu lớn
[Agrawal1994] nhưng mặt khác Apriori-TID lại tốt hơn Apriori khi các tập
C
k
là
tương đối nhỏ (vừa đủ trong bộ nhớ). Vì vậy xuất hiện kỹ thuật “Apriori-Lai” được đề
cập bởi [Agrawal994].
2.5 Thuật toán Apriori-Hybrid
Tư tưởng của thuật toán này là không nhất thiết phải sử dụng cùng một thuật toán
trong tất cả các lần duyệt trên dữ liệu. Như đã được đề cập trong [Agrawal1994],
Apriori đạt hiệu suất tốt hơn trong những lần duyệt đầu tiên, và Apriori-TID thực hiện
tốt hơn Apriori ở những lần duyệt sau. Dựa trên những thí nghiệm quan sát được, kỹ
thuật Apriori-Hybrid đã được phát triển nhằm sử dụng Apriori ở những lần duyệt khởi
động và chuyển sang Apriori-TID một khi cho rằng tập
C
k
ở cuối lần duyệt sẽ lấp vừa
bộ nhớ. Bởi vậy, sự tính toán
C
k
khi nào đạt được trạng thái trên là cần thiết. Mặt
khác, việc chuyển từ Apriori sang Apriori-TID cũng phải mất một lượng chí phí nhất
định. Hiệu năng của kỹ thuật này có thể đánh giá được bằng các thí nghiệm trên các
tập dữ liệu lớn. Thuật toán này là tốt hơn Apriori ngoại trừ trường hợp việc chuyển
trạng thái (từ thuật toán này sang thuật toán kia) xảy ra tại thời điểm cuối cùng của
mỗi lần duyệt [Srikant1996b].
2.6 Một số thuật toán khác
Off-line Candidate Determination (OCD)
Kỹ thuật này được đề xuất trong [Mannila1994] dựa trên ý tưởng là các mẫu không
phổ biến thường rất tốt để tìm các tập phổ biến. Kỹ thuật OCD sử dụng kết quả phân
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 14/40
tích tổ hợp các thông tin nhận được từ lần duyệt trước nhằm loại ra các tập không
cần thiết. Nếu một tập Y
⊆
l là không phổ biến, có ít nhất (1-s) giao tác phải được
duyệt với s là ngưỡng support. Bởi vậy khi s đủ nhỏ, gần như toàn bộ quan hệ đưa
vào được đọc. Rõ ràng là đối với các CSDL rất lớn, điều này rất quan trọng để có thể
tiến hành duyệt CSDL ít hơn.
OCD là một cách tiếp cận khác từ AIS để xác định các tổ hợp. OCD sử dụng tất cả các
thông tin sẵn có từ lần duyệt trước để chia tách các tập tổ hợp giữa các lần duyệt
bằng cách giữ lại lần duyệt đơn giản nhất có thể. Kết quả của OCD là tập L
k
, là tập các
phần tử phổ biến có độ lớn k. Tập tổ hợp C
k+1
, chứa các tập có độ lớn (k+1), có thể có
mặt trong L
k+1
, nhận được từ tập L
k
. Chú ý rằng nếu X
∈
L
k+e
với e≥0 thì X bao gồm
+ek
k
tập từ L
k
. Điều này có nghĩa rằng nếu e=1, k=2 và X
∈
L
3
thì X gồm có
3
2
hay 3
tập từ L
2
. Tương tự, mỗi mục của L
4
gồm 4 tập của L
3
và cứ thế tiếp tục.
Ví dụ, với L
2
={Táo, Chuối}, {Chuối, Cải bắp}, {Táo, Cải bắp}, {Táo, Trứng}, {Chuối,
Trứng}, {Táo, Kem}, {Cải bắp, Sirô}} ta kết luận rằng {Táo, Chuối, Cải bắp} và {Táo,
Chuối, Trứng} chỉ có thể là các thành phần thuộc L
3
. Bởi vì chúng là các tập có kích
thước 3 của tất cả các tập con có kích thước 2 trong L
2
. L
4
là rỗng vì bất kỳ thành phần
nào của L
4
đều phải có 4 phần tử thuộc L
3
, nhưng trong L
3
chỉ có 2 phần tử.
Từ đó C
k+1
được tính theo công thức sau:
C
k+1
= {Y
∈
I với |Y|=k+1 và Y bao gồm (k+1) phần tử của L
k
} (1)
Để tìm C
k+1
ta cần phải xét đến mọi khía cạnh, ở đó mọi tập con có kích thước k+1 đều
phải được xét đến. Thủ tục này xét một tập rất lớn các tổ hợp không cần thiết, vì thế
rất lãng phí. Để giải quyết, OCD đề nghị hai hướng đi khác thay thế. Một trong số đó
là tính tập C’
k+1
bằng cách tạo các hợp của L
k
có (k-1) phần tử theo công thức sau:
C’
k+1
= {Y
∪
Y’ với Y, Y’
∈
L
k
và |Y
∪
Y’|=k+1} (2)
Như vậy C
k+1
∈
C’
k+1
và C
k+1
có thể được tính bằng cách kiểm tra mỗi một tập trong
C’
k+1
mà các điều kiện định nghĩa C
k+1
thoả mãn.
Hướng đi thứ hai là xây dựng hợp của các tập từ L
k
và L
1
như trong (3)
C’’
k+1
= {Y
∪
Y’ với Y
∈
L
k
, Y
∈
L
1
và Y’
⊄
Y} (3)
Sau đó tính C
k+1
bằng cách kiểm tra cả những điều kiện nằm trong công thức (1).
Ở đây, độ phức tạp tính toán C
k+1
không phụ thuộc vào kích thước của CSDL, hay đúng
hơn là không phụ thuộc vào kích thước của L
k
. Ngoài ra có thể tính được C
k+1
, C
k+2
,
…,C
k+e
với e>1 trực tiếp từ L
k
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 15/40
Độ phức tạp thời gian tính C
k+1
từ C’
k+1
là O(k|L
k
|
3
). Nói cách khác, thời gian tính C
k+1
từ
C’’
k+1
là tuyến tính theo kích thước của cơ sở dữ liệu (n) và hàm mũ theo kích thước
của tập phổ biến lớn nhất. Bởi vậy thuật toán có thể rất chậm với giá trị n rất lớn. Tập
phổ biến có thể được tính xấp xỉ bằng cách phân tích các mẫu nhỏ hơn của một CSDL
lớn [Lee1998; Mannila1994]. Lý thuyết phân tích này đã được [Mannila1994] trình
bày và chứng tỏ rằng các mẫu nhỏ này rất tốt để tìm các tập phổ biến. Theo
[Mannila1994], thậm chí khi ấn định giá trị thấp cho support, một cơ sở dữ liệu mẫu
gồm 3000 dòng vẫn có thể tìm xấp xỉ rất tốt các tập thỏ ngưỡng.
Hiệu suất của thuật toán này đã được đánh giá trong [Mannila1994] bằng cách sử
dụng hai tập dữ liệu. Tập dữ liệu thứ nhất gồm dữ liệu về 4734 sinh viên, tập thứ hai
là cơ sở dữ liệu quản lý lỗi hệ thống của công ty với 30 000 bản ghi. Thực nghiệm đã
chỉ ra rằng thời gian thực hiện OCD chuẩn hơn 10%-20% so với AIS. Điểm tiện lợi mà
OCD mang lại là khả năng ấn định ngưỡng support thấp [Mannila1994]. Các tổ hợp
được phát sinh trong AIS là cao hơn đáng kể so với OCD. AIS có thể tạo ra các tổ hợp
trùng lặp trong khi duyệt, còn OCD phát sinh bất kỳ tổ hợp nào cũng chỉ một lần và
kiểm tra nếu các tập con của nó là phổ biến hay không trước khi đánh giá trong cơ sở
dữ liệu.
Partitioning
Kỹ thuật này [Savasere1995] quy số lượng cơ sở dữ liệu cần phải duyệt chỉ còn 2. Nó
chia CSDL thành những phần nhỏ hơn sao cho mỗi phần chia có thể lưu vừa đủ trong
bộ nhớ chính.
Giả sử có một CSDL được chia thành các phần nhỏ như sau: D
1
, D
2
,…, D
p
. Trong lần
duyệt đầu tiên, thuật toán tìm các tập phổ biến cục bộ L
i
(local large itemset) trong mỗi
phần chia D
i
(1 ≤ i ≤ p) nghĩa là {X | X.count ≥ s x |D
i
|}.
Duyệt D
1
và D
2
để tìm các Local Large Itemset.
T1 = Bánh mỳ, Bơ, Trứng.
T2 = Bơ, Trứng, Sữa.
T3 = Bơ.
T4 = Bánh mỳ, Bơ.
L
1
={{Bánh mỳ}.{Bơ},{Trứng}.{Bánh mỳ, Bơ},
{Bánh mỳ, Trứng},{Bơ, Trứng},{Bánh mỳ, Bơ, Trứng}, {Sữa},{Bơ, Sữa}, {Trứng, Sữa},{Bơ, Trứng, Sữa}}
L
2
={{Bơ}, {Bánh mỳ}, {Bơ}, {Bánh mỳ, Bơ}}
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 16/40
C ={{Bánh mỳ}.{Bơ},{Trứng}. {Bánh mỳ, Bơ},
{Bánh mỳ, Trứng},{Bơ, Trứng},{Bánh mỳ, Bơ, Trứng}, {Sữa},{Bơ, Sữa}, {Trứng, Sữa},{Bơ, Trứng, Sữa}}
L ={{Bánh mỳ}, {Bơ},{Trứng}, {Bánh mỳ, Bơ},{Bơ, Trứng}}
Duyệt D để thống kê support
Hình 1: Tìm các tập phổ biến dùng thuật toán PARTITION
Tập phổ biến cục bộ, L
i
, có thể được xác định bằng thuật toán level-wise như Apriori.
Một khi mỗi phần chia đều được lưu trữ vừa đủ trong bộ nhớ thì không cần thiết cần
thêm đọc/ghi đĩa cho nó sau khi nạp phần chia vào bộ nhớ chính. Ở lần quét thứ hai,
thuật toán sử dụng một đặc tính là một tập phổ biến trên toàn bộ CSDL thì cũng phải
phổ biến cục bộ trên ít nhất một phân vùng của CSDL. Khi đó hợp của các tập phần tử
phổ biến cục bộ tìm thấy trên mỗi phần chia được dùng như là các tổ hợp và được
thống kê trên toàn CSDL nhằm tìm tất cả các tập phổ biến.
Nếu CSDL được chia thành hai phần, phần thứ nhất chứa hai giao dich đầu tiên và
phần thứ hai là hai giao dịch còn lại. Khi minsupp là 40% và chỉ có hai giao tác trong
mỗi phần chia thì một tập phần tử xuất hiện chỉ một lần sẽ thỏa ngưỡng. Khi đó các
tập phổ biến cục bộ trên hai phân vùng vừa đúng bằng tất cả các tập con của các giao
tác. Hợp của chúng là tập tổ hợp các phần tử cho lần duyệt thứ hai.
Thuật toán Partition làm đồng nhất dữ liệu phân tán. Có nghĩa rằng, thậm chí nếu sự
xuất hiện của một tập phần tử bị phân bố trên mỗi phân vùng thì hầu hết các tập phần
tử được thống kê ở lần quét thứ hai là phổ biến. Tuy nhiên, đối với dữ liệu phân tán
lệch (skewed data distribution), hầu hết các tập phần tử trong lần quét thứ hai có thể
thành không phổ biến, do đó sẽ hao tổn rất nhiều thời gian của CPU để thống kê các
tập trên. AS-CPA (Anti-Skew Counting Partition Algorithm) [Lin1998] là dòng thuật
toán anti-skew, đề xuất phương pháp cải tiển Partition khi dữ liệu là phân tán như sau:
trong lần duyệt đầu tiên, số lượng các tập phần tử được tìm thấy trong các phần chia
trước đó sẽ được tích luỹ lại và được tăng lên ở phần chia tiếp theo. Số tích luỹ này
được dùng để lược bớt những tập phần tử không phổ biến. Nhờ sử dụng kỹ thuật lược
bỏ những tập phần tử không phổ biến trước mà số lượng các tập không thoả được đếm
sẽ giảm đi trong những lần duyệt tiếp theo.
Sampling
Sampling[Toivonen1996] giảm thiểu số lượng CSDL cần được duyệt trong trường hợp
tốt nhất còn một và xấu nhất là hai CSDL. Đầu tiên, một phần cơ sở dữ liệu có thể lưu
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 17/40
trữ vừa đủ trong bộ nhớ chính được trích ra. Sử dụng các thuật toán level-wise như
Apriori để tìm tập phổ biến PL của phần mẫu này. Tập PL này được xem như là một
tập phổ biến và được dùng để phát sinh các tổ hợp mà chúng sẽ được kiểm tra lại trên
toàn CSDL.
Các tổ hợp được phát sinh bằng hàm phủ định biên BD
¯
(Negative Border Function)
trên PL. Như vậy các tổ hợp là BD
¯
(PL)
∪
PL. Phủ định biên của tập các phần tử PL
là tập tối thiểu của tập các phần tử không chứa trong PL nhưng mọi tập con của chúng
lại thuộc PL. Hàm phủ định biên là sự tổng quát hoá của hàm apriori_gen trong
Apriori. Khi mọi tập phần tử trong PL có cùng kích thước, BD
¯
(PL)
=Apriori_gen(PL). Sự khác biệt ở đây là phủ định biên có thể được áp dụng cho các
tập phần tử có kích thước khác nhau, trong khi hàm apriori_gen () chỉ áp dụng khi kích
thước tập phần tử là một.
Sau khi các tổ hợp được phát sinh, toàn bộ CSDL được quét một lần để xác định số
lượng các tổ hợp. Nếu tất cả các tập phổ biến đều nằm trong PL, nghĩa là không có tập
phần tử nào trong BD
¯
(PL) trở thành phổ biến, thì mọi tập phổ biến đã được tìm thấy
và thuật toán dừng. Điều này được đảm bảo bởi vì BD
¯
(PL)
∪
PL thực tế chứa mọi tổ
hợp các tập phần tử của Apriori nếu PL bao hàm tất cả tập các phần tử L, nghĩa là L
⊆
PL.
Dynamic Itemset Counting (Brin1997a)
DIC sẽ phát sinh và thống kê các tập phần tử trước, như vậy số lần duyệt CSDL sẽ
giảm xuống. DIC xem CSDL là các khoảng phân biệt (interval) của các giao tác, và
các interval này được duyệt lần lượt. Khi duyệt interval đầu tiên, các tập có 1 phần tử
được phát sinh và thống kê. Tại điểm cuối của lần duyệt này, các tập có 2 phần tử có
khả năng thành tập phổ biến được phát sinh. Khi duyệt interval thứ hai, tất cả tập gồm
một và hai phần tử đã được phát sinh được thống kê. Tại điểm cuối của interval thứ
hai, các tập có ba phần tử có tiềm năng lại được phát sinh, và chúng được thống kê
trong suốt quá trình duyệt interval thứ ba cùng với các tập gồm một và hai phần tử.
Tống quát, tại thời điểm kết thúc của interval thứ k, các tập (k-1) phần tử có tiềm năng
thành phổ biến được phát sinh và được thống kê cùng với các tập phần tử trước đó tai
các interval sau này. Khi đạt đến giới hạn của CSDL, DIC quay lại đầu CSDL và
thống kê các tập phần tử chưa được kiểm đầy đủ. Số lần duyệt CSDL thực tế phụ
thuộc vào kích thước của các interval. Nếu kích thước này là đủ nhỏ, mọi tập phần tử
sẽ được phát sinh trong lần duyệt đầu tiên và được thống kê đầy đủ trong lần duyệt thứ
hai. DIC cũng sẽ đồng nhất dữ liệu như thuật toán Partition.
CARMA (Continuous Association Rule Mining Algorithm)
Với thuật toán CARMA [Hidb1999], việc tính toán các tập phổ biến được thực hiện
trực tuyến (online). Khi đó, CARMA hiển thị các luật kết hợp và cho phép người dùng
thay đổi các tham số (parameter), minsupp và minconf tại bất kỳ giao tác nào trong
suốt lần duyệt CSDL đầu tiên. Thuật toán này cần nhiều nhất hai CSDL. Tương tự
như DIC, CARMA phát sinh các tập phần tử trong lần duyệt đầu tiên và kết thúc thống
kê mọi tập phần tử ở lần duyệt thứ hai. Nhưng khác với DIC, CARMA phát sinh các
tập phần tử trực tuyến từ các giao tác. Sau khi đọc một giao tác, đầu tiên thuật toán
tăng số lượng tập các phần tử là các tập con của giao tác. Nếu mọi tập con trực tiếp
của các tập phần tử hiện tại là phổ biến và phần CSDL đang được đọc, CARMA phát
sinh các tập phần tử mới từ giao tác. Để có những dự báo chính xác một tập phần tử có
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 18/40
khả năng là phổ biến, thuật toán tính giới hạn trên số lượng của tập phần tử. Giới hạn
trên của tổng các tập phần tử là tổng số lượng thống kê hiện tại với ước lượng số lượng
xuất hiện của nó trước khi tập phần tử được phát sinh. Ước lượng số lượng xuất hiện
(gọi là lượng mất mát tối đa) tính được khi tập phần tử được phát sinh lần đầu tiên.
3. Các thuật toán song song và phân tán
Các thuật toán loại này đều dựa trên thuật toán tuần tự Apriori. Sự khác nhau giữa hai
mô hình thuật toán này là tập tổ hợp được phân bổ xử lý chéo (across the processors)
hay không. Trong mô hình Data Parallelism, mỗi nút (note) đếm cùng một số lượng
tập tổ hợp; trong mô hình Task Parallelism, một tập tổ hợp được phân chia và phân bố
xử lý chéo, và mỗi nút sẽ đếm một tập khác nhau của các tổ hợp. Về lý thuyết, CSDL
có thể được phân chia theo mô hình hay không nhưng để đạt được hiệu quả hơn trong
thao tác I/O, trong thực tiễn người ta thường giả thiết rằng CSDL bị phân chia và phân
bố xử lý chéo.
Trong mô hình Data Parallelism, các tổ hợp bị trùng lặp trên mọi bộ xử lý và CSDL
được phân bổ xử lý chéo. Mỗi quá trình xử lý chịu trách nhiệm tính số hỗ trợ cục bộ
(local support count) của mọi tổ hợp, đây là các support count của phần chia tương
ứng. Tiếp đó mọi quá trình xử lý tính số hỗ trợ toàn cục (global support count) của các
tổ hợp (là tổng các support count của các tổ hợp trên toàn CSDL) bằng cách trao đổi
các local support count. Rồi sau đó, các tập phổ biến được tính toán bởi mỗi bộ xử lý
một cách độc lập. Mô hình Data Parallelism sử dụng dữ liệu trong bảng 1 được cung
cấp trong [hình 2]: bốn giao tác được phân phối qua ba bộ xử lý với bộ thứ ba có hai
giao tác T3 và T4, bộ 1 có T1 và bộ 2 có T2. Ba tổ hợp trong lần duyệt thứ hai bị lặp
lại trên mỗi bộ xử lý. Các local support count có được sau khi duyệt các CSDL cục bộ.
Bánh mỳ, Bơ 1
Bánh mỳ, Trứng 1
Bơ, Trứng 1
T1
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 19/40
Processor 1
D
1
C
2
Count
Bánh mỳ, Bơ 0
Bánh mỳ, Trứng 0
Bơ, Trứng 1
T2
Processor 2
D
2
C
2
Count
Bánh mỳ, Bơ 1
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 20/40
Bánh mỳ, Trứng 0
Bơ, Trứng 0
T3
T4
Processor 3
D
3
C
2
Count
Global Redution
Hình 2: Mô hình Data Parallelism
Trong mô hình Task Parallelism, tập tổ hợp được phân chia và phân bố xử lý chéo như
trong CSDL. Mỗi bộ xử lý chịu trách nhiệm giữ các global support count của chỉ một
tập con của các tổ hợp. Hướng tiếp cận này yêu cầu phải có hai vòng giao tiếp tại mỗi
lần lặp: vòng thứ nhất, mỗi bộ xử lý gửi phần chia dữ liệu của nó cho các bộ xử lý
khác; ở vòng thứ hai, mỗi bộ xử lý phát các tập phổ biến được tìm thấy đến mọi bộ xử
lý khác để tính toán các tổ hợp cho lần lặp kế tiếp. Với dữ liệu trong bảng 1, mô hình
này được diễn tả như sau: bốn giao tác vẫn được phân chia như mô hình Data
Paralleism. Ba tập tôe hợp được phân bố xử lý chéo với mỗi bộ xử lý sẽ có một tổ hợp.
Sau khi quét CSDL cục bộ và các phân khu CSDL xuất phát từ các bộ xử lý khác,
global count của mỗi tổ hợp được tìm thấy.
3.1 Các thuật toán song song dữ liệu (Data Parallelism)
Các thuật toán xét đến là CD [Agrawal1996], PDM [Park1995], DMA [Cheung1996]
và CCPD [Zaki1996].
CD [Agrawal1996]
Trong CD, CSDL D được phân chia thành {D
1
, D
2
, ,D
p
} và phân bố qua n bộ xử lý.
Thuật toán này có ba bước cơ bản:
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 21/40
Bước 1: các local support count của các tổ hợp C
k
trong phân vùng CSDL
cục bộ D
i
sẽ được tìm thấy.
Bước 2: mỗi bộ xử lý trao đổi các local support count của mọi tổ hợp để lấy
được global support count của tất cả các tổ hợp.
Bước 3: tập phổ biến L
k
được nhận dạng và các tổ hợp kích thước (k+1)
phần tử được tạo bằng cách áp dụng thủ tục Apriori_gen() với L
k
trên mỗi bộ xử
lý một cách độc lập.
Bánh mỳ, Bơ 2
T1
Processor 1
D
1
C
2
1
Count
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 22/40
Bánh mỳ, Trứng 1
T2
Processor 2
D
2
C
2
2
Count
Bơ, Trứng 2
T3
T4
Processor 3
D
3
C
2
3
Count
Itemset broadcast
Database broadcast
Hình 3: Mô hình Task Parallelism
CD sẽ lặp lại bước 1 đến 3 cho đến khi không tìm thấy thêm tổ hợp nào nữa.
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 23/40
PDM [Park1995a]
PDM (Parallel Data Mining) là một sửa đổi của thuật toán CD sử dụng kỹ thuật băm
trực tiếp (direct hashing) được đề xuất tại [Park1995a]. Kỹ thuật này được dùng để
tách bớt một số tổ hợp trong lần duyệt tiếp theo. Nó đặc biệt hữu dụng cho lần duyệt
thứ hai, như Apriori không có bất kỳ sự rút tỉa nào trong quá trình tạo C
2
từ L
1
.
Trong lần duyệt đầu tiên, để thống kê tất cả các tập có một phần tử, PDM duy trì một
bảng băm nhằm lưu trữ số thống kê của các tập có 2 phần tử. Tại lần duyệt thứ k, PDM
cần đổi các local count trong bảng băm có số phần tử (k+1) với các local count của tập
có k phần tử.
DMA [Cheung1996]
DMA (Distributed Mining Algorithm) [Cheung1996] cũng dựa trên mô hình Data
Parallelism với sự bổ sung là kỹ thuật tách tổ hợp và kỹ thuật giảm bớt thông điệp giao
tiếp (communication message reduction technique). Nó sử dụng các local count của
các tập phổ biến trên mỗi bộ xử lý để quyết định tính heavy (vừa phổ biến trên một
phần chia vừa phổ biến trên toàn bộ CSDL) của một tập phần tử rồi sau đó tạo các tổ
hợp từ các tập phần tử heavy trên.
Ví dụ, giả sử A và B là hai mục dữ liệu heavy trên bộ xử lý 1 và 2 tách biệt nhau.
Nghĩa là, A phổ biến cục bộ và toàn cục chỉ trên bộ xử lý 1, B phổ biến trên bộ xử lý 2.
DMA sẽ không tạo AB như một tổ hợp 2 phần tử trong khi thuật toán Apriori sẽ tạo
AB như các local count trên mỗi bộ xử lý. Để giao tiếp, thay vì phân phát các local
count của mọi tổ hợp như trong thuật toán CD, DMA chỉ gửi các local count đến một
vị trí, vì vậy sẽ làm giảm lượng giao tiếp từ O(p
2
) xuống còn O(p).
CCPD (Common Candidate Partitioned Database)
CCPD [Zaki1996] thực thi CD trên shared-memory SGI Power Challenge với một vài
sự cải tiến. CCPD đề xuất các kỹ thuật nhằm tăng hiệu năng phát sinh và tổng hợp các
tổ hợp trong môi trường bộ nhớ dùng chung. Nó nhóm các tập tổ hợp vào các lớp
tương đương nhau dựa trên các tiền tố chung (thông thường là mục đầu tiên) và phát
sinh các tổ hợp từ mỗi lớp này.
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 24/40
Việc lập thành nhóm sẽ không làm giảm bớt số lượng nhưng sẽ giảm bớt thời gian
phát sinh các tổ hợp. Thuật toán này cũng giới thiệu một phương pháp kiểm tra tập con
ngắn mạch (short-circuited subset checking) nhằm tăng hiệu quả tính toán các tổ hợp
cho mỗi giao tác.
3.2 Các thuật toán song song tác vụ (Task Parallelism)
Các thuật toán loại này khác Data Parallelism ở phương thức các tổ hợp và CSDL
được phân chia như thế nào. Đại diện cho lớp thuật toán này là DD [Agrawal1996],
IDD [Han1997], HPA [Shintani1996], PAR [Zaki1997].
DD (Data Distribution)
Trong DD [Agrawal1996], các tổ hợp được phân chia và phân bố trên khắp các bộ xử
lý theo mô hình vòng robin (round-robin).
Có ba bước tất cả.
Tại bước 1, mỗi bộ xử lý duyệt phân vùng dữ liệu cục bộ nhằm thu nhận các local
count của tất cả các tổ hợp được phân bố trên đó. Bước hai, mỗi bộ xử lý phân phát
phân vùng dữ liệu của mình và nhận các phân vùng dữ liệu đến từ các bộ xử lý khác.
Sau đó nó sẽ duyệt các phân vùng dữ liệu nhận được để lấy global support count trên
toàn bộ CSDL. Ở bước cuối cùng, mỗi bộ xử lý tính toán các tập phổ biến trong phân
vùng tổ hợp của nó, rồi trao đổi với tất cả để nhận được mọi tập phổ biến. Tiếp đó sẽ
tiến hành phát sinh các tổ hợp, các phân vùng và phân bố các tổ hợp này đến tất cả các
bộ xử lý. Bước này được lặp lại cho đến khi không còn tổ hợp nào được sinh ra nữa.
Lưu ý rằng hiện tượng tràn giao tiếp của việc loan truyền các phân vùng dữ liệu có thể
được giảm bớt bằng giao tiếp không đồng bộ [Agrawal1996].
IDD (Intelligent Data Distribution)
IDD là một thuật toán cải tiến từ DD [Han1997]: phân chia các tổ hợp xử lý chéo dựa
trên phần tử đầu tiên của các tổ hợp đó. Điều này có nghĩa là các tổ hợp có cùng phần
tử đầu tiên sẽ được phân chia vào cùng một phân vùng. Bởi vậy mỗi một bộ xử lý chỉ
cần kiểm tra các tập con có phần tử đầu tiên tương ứng đúng với chúng. Điều này làm
giảm thiểu sự dư thừa tính toán trong DD: thay vì mỗi bộ xử lý cần phải kiểm tra tất cả
các tập con của mỗi giao tác thì chỉ cần tiến hành kiểm tra như trên.
Để sự phân tán của các tổ hợp cân bằng, thuật toán sử dụng kỹ thuật nén nhị phân
(bin-packing technique) nhằm phân phối các tổ hợp. Đầu tiên, IDD tính số tổ hợp bắt
đầu bằng một phần tử đặc biệt, sau đó sử dụng thuật toán nén nhị phân để chỉ định các
phần tử cho các vùng tổ hợp sao cho số lượng các tổ hợp là như nhau.
Thuật toán này cũng sử dụng kiến trúc vòng để làm giảm tràn giao tiếp, tức là nó dùng
giao tiếp điểm-điểm không đồng bộ giữa các phần tử cạnh nhau trong vòng thay cho
việc loan truyền giữa các phần tử.
HPA (Hash-based Parallel mining of Association rules)
HPA sử dụng kỹ thuật băm để phân phối các tổ hợp vào các bộ xử lý khác nhau
[Shintani1996], nghĩa là mỗi bộ xử lý sử dụng cùng một hàm băm (hash function) để
tính toán các tổ hợp được phân bố trên nó. Trong quá trình thống kê, thuật toán di
chuyển tập con các phần tử của các giao tác (thay cho việc phải dịch chuyển các phân
vùng dữ liệu) đến bộ xử lý đích của chúng bằng cùng kỹ thuật băm. Vì vậy, thay vì
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT
Tiểu luận Công nghệ tri thức Tramg 25/40
phải đến n bộ xử lý, một tập mục dữ liệu của một giao tác chỉ đến một bộ xử lý mà
thôi.
HPA được cải tiến hơn nữa bằng cách dùng kỹ thuật skew handling [Shintani1996].
Đây là kỹ thuật sao lại một vài tổ hợp nếu có đủ bộ nhớ trên mỗi bộ xử lý, vì vậy tải
trọng làm việc của mỗi bộ xử lý được cân bằng hơn.
PAR (Parallel Association Rules)
PAR (Zaki1997] gồm có tập các thuật toán sử dụng việc phân chia và thống kê tổ hợp
khác nhau. Tất cả đều giả sử rằng CSDL phân chia dọc (liệt kê tid cho mỗi phần tử -
biến nhận dạng) tương phản với phân chia ngang tự nhiên (liệt kê các giao tác).
Bằng cách tổ chức chia dọc CSDL, việc thống kê một tập phần tử đơn giản chỉ là tìm
giao của các liệt kê tid trong tập phần tử. Tuy nhiên đòi hỏi phải có một sự biến đổi
CSDL sang phân tách dọc nếu CSDL nguyên thủy là phân tách ngang. CSDL có thể
được sao lại một cách chọn lọc nhằm giảm bớt tính đồng bộ.
Hai thuật toán dạng này (Par-Eclat và Par-MaxEclat) sử dụng lớp tương đương dựa
trên phần tử đâu tiên của các tổ hợp trong khi hai thuật toán khác (Par-Clique và Par-
MaxClique, cũng nằm trong lớp thuật toán PAR) lại dùng siêu đồ thị cực đại
(maximum hypergraph) để phân phối các tổ hợp.
3.3 Lớp các thuật toán khác
Một số thuật toán song song khác không thể xếp vào hai mô hình trên, mặc dù có cùng
ý tưởng nhưng chúng lại có những đặc tính khác biệt. Ta xem xét qua các thuật toán
sau.
Candidate Distribution
Thuật toán Candidate Distribution (tạm dịch là phân phối tổ hợp) [Agrawal1996] cố
gắng làm giảm sự đồng bộ và tràn giao tiếp trong hai thuật toán CD và DD.
Tại lần duyệt l, nó chia các tập phổ biến L
l-1
giữa các bộ xử lý theo cách mà một bộ xử
lý có thể phát sinh một tập duy nhất của các tổ hợp độc lập với các bộ xử lý khác. Tại
cùng thời điểm, CSDL được phân chia lại vì vậy một bộ xử lý có thể thống kê được
các tổ hợp đã được phát sinh độc lập. Tùy thuộc vào đặc tính của sự phân chia tổ hợp
mà các phần CSDL có thể được tái tạo lại trên một số bộ xử lý.
Sự phân chia các tập phần tử được tiếp tục bằng cách nhóm lại dựa trên các tiền tố.
Sau khi phân chia tổ hợp, mỗi bộ xử lý một cách độc lập chỉ thống kê các tổ hợp thuộc
phần chia của nó bằng cách chỉ dùng phân vùng CSDL cục bộ. Không có sự giao tiếp
(thống kê hoặc dữ liệu) nào được yêu cầu. Ngay trước khi phân chia tổ hợp có thể
dùng hoặc là thuật toán phân chia số đếm hoặc thuật toán phân chia dữ liệu hoặc thuật
toán phân chia tổ hợp, nên thuật toán này là một kiểu lai giữa hai mô hình trên.
SH
Trong SH [Harada1998], các tổ hợp không được phát sinh từ các tập phổ biến trước
đó, điều này dường như khác với thuật toán tuần tự Apriori.
Thay vì các tổ hợp được tạo độc lập bởi mỗi bộ xử lý trong suốt quá trình duyệt phân
vùng CSDL, tại bước lặp k, mỗi bộ xử lý phát sinh và thống kê các tập k phần tử từ
các giao tác có trong phân vùng dữ liệu của chúng. Chỉ mọi tập k phần tử của các tập
Trần Thanh Liêm – Nguyễn Trọng Nguyên – Nguyễn Minh Quỳnh _ K26.KMT