YOMEDIA
ADSENSE
Thuận toán khai phá tập mục thường xuyên dựa trên ma trận nhị phân
72
lượt xem 5
download
lượt xem 5
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Trong báo cáo này chúng tôi đưa ra một thuật toán mới, gọi là thuật toán BMB, khai phá tập mục thường xuyên. Thuật toán gồm hai pha: * Chuyển đổi cơ sở dữ liệu giao tác ban đầu thành một ma trận nhị phân * Sử dụng các phép toán quan hệ trên các véc tơ của ma trận nhị phân phát hiện TMTX.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Thuận toán khai phá tập mục thường xuyên dựa trên ma trận nhị phân
T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008<br />
<br />
Thuật toán khai phá tập mục thường xuyên<br />
dựa trên ma trận nhị phân<br />
Nguyễn Thanh Tùng (Viện Công nghệ Thông tin - Viện KH&CN Việt Nam)<br />
Phạm Quang Trung ( Khoa Công nghệ thông tin – ĐH Thái Nguyên)<br />
<br />
1. Mở đầu<br />
Phát hiện tập mục thường xuyên (TMTX) trong cơ sở dữ liệu (CSDL) lớn là một kỹ<br />
thuật quan trọng của khai phá dữ liệu (KPDL). Ra đời vào năm 1993, xuất phát từ nhu cầu<br />
khai phá luật kết hợp trong các cơ sở dữ liệu giao tác của các siêu thị, ngày nay khai phá<br />
TMTX còn được sử dụng như là một công cụ hiệu quả để phát hiện các phụ thuộc hàm, các<br />
luật kết hợp đa mức (multi-level associa-tion rules), các mẫu hình liên tiếp (sequential<br />
patterns)...<br />
Nhiều thuật toán nhanh khai phá TMTX đã được đề xuất, nhưng cho đến nay thuật toán<br />
Apriori do R. Agrawal và R. Srikant [2] đưa ra vẫn là thuật toán cơ bản nhất, có sức thuyết<br />
phục và ảnh hưởng lớn đối với cộng đồng KPDL. Nhiều thuật toán sau này được xây dựng dựa<br />
trên lược đồ của thuật toán Apriori và được gọi là các thuật toán kiểu Apriori (Apriori-like)<br />
[3,5,9,10]. Sử dụng tính chất anti-monotone của TMTX, thuật toán kiểu Apriori thực hiện việc<br />
phát hiện các TMTX theo từng bước. Tại mỗi bước phải thực hiện hai thủ tục: kết nối các tập<br />
mục và tỉa các ứng viên. Hai thủ tục này đòi hỏi một khối lượng tính toán rất lớn và quá trình xử<br />
lý các giao tác rất phức tạp. Do đó, khi CSDL có kích thước rất lớn, các thuật toán kiểu Apriori<br />
thường không hiệu quả.<br />
Trong báo cáo này chúng tôi đưa ra một thuật toán mới, gọi là thuật toán BMB, khai phá<br />
tập mục thường xuyên. Thuật toán gồm hai pha:<br />
* Chuyển đổi cơ sở dữ liệu giao tác ban đầu thành một ma trận nhị phân<br />
* Sử dụng các phép toán quan hệ trên các véc tơ của ma trận nhị phân phát hiện TMTX.<br />
Đặc điểm của BMB là chỉ cần quét CSDL một lần, không sinh các ứng viên và chỉ sử<br />
dụng các phép toán đơn giản trên các véc tơ nhị phân. Hơn nữa, để lưu trữ ma trận nhị phân chỉ<br />
cần một dãy bit (mỗi bit cho một phần tử), do đó tiết kiệm được rất nhiều dung lượng bộ nhớ.<br />
BMB thích hợp cho việc khai phá các CSDL lớn.<br />
2. Bài toán khai phá tập mục thường xuyên<br />
Cho tập các mục I = { i1 , i2 ,..., in } . Mỗi giao tác t là một tập con của I, ( t ⊆ I ) . Tập<br />
<br />
T = { t1 , t2 ,..., tm } của m giao tác được gọi là một cơ sở dữ liệu các giao tác. Mỗi tập con gồm k<br />
mục phân biệt của I được gọi là một k-tập mục.<br />
Định nghĩa 2.1. Cho CSDL T và tập mục X ⊆ I . Ta gọi số các giao tác trong T chứa<br />
X là độ hỗ trợ của X. Ký hiệu độ hỗ trợ của X là sup(X), ta có:<br />
<br />
sup( X ) = card ({t ∈ T t ⊇ X } ) .<br />
X được gọi là tập mục thường xuyên (hay phổ biến) nếu sup(X) ≥ minsup, trong đó<br />
minsup là ngưỡng hỗ trợ tối thiểu cho trước bởi người sử dụng.<br />
<br />
15<br />
<br />
T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008<br />
<br />
Bài toán khai phá TMTX được phát biểu như sau: Cho CSDL giao tác T và ngưỡng hỗ<br />
trợ tối thiểu minsup. Tìm tất cả các TMTX theo ngưỡng minsup, nghĩa là tìm tập<br />
<br />
L = { X ⊆ I sup( X ) ≥ minsup} .<br />
3. Thuật toán dựa trên ma trận nhị phân BMB<br />
3.1. Cơ sở lý thuyết<br />
Định nghĩa 3.1.1. Ma trận nhị phân là ma trận mà mỗi phần tử của nó chỉ có thể nhận<br />
giá trị 0 hoặc 1.<br />
Định nghĩa 3.1.2. Cho cơ sở dữ liệu T gồm m giao tác và n mục, T = { t1 , t2 ,..., tm } ,<br />
<br />
I = { i1 , i2 ,..., in } . Ta xây dựng ma trận A = ( a pq ) cỡ m × n như sau:<br />
1 neu giao tac t p chua muc iq ,<br />
a pq = <br />
0 truong hop nguoc lai.<br />
<br />
(3.1)<br />
<br />
Khi đó, A được gọi là ma trận nhị phân tương ứng của T. Véc tơ cột Aq của A được gọi là<br />
véc tơ cột tương ứng với mục ip .<br />
Định nghĩa 3.1.3. [8]. Cho V1 , V2 ,..., Vk là k véc tơ nhị phân cỡ m. Ta gọi giao của<br />
V1 , V2 ,..., Vk ( ký hiệu V1 ∩ V2 ∩ ... ∩ Vk ) là véc tơ nhị phân P = (pi) cỡ m với:<br />
1 khi vi j = 1 ∀ j ∈ {1, 2,..., k } ,<br />
pi = vi1 ∧ vi 2 ∧ ... ∧ vik = <br />
0 truong hop nguoc lai,<br />
<br />
i = 1, 2,..., m.<br />
<br />
Định nghĩa 3.1.4. Xét cơ sở dữ liệu T với ma trận nhị phân tương ứng A;<br />
A q1 , A q2 ,..., A qk là k véc tơ cột nào đó của A, ( 1 ≤ k ≤ m ), P là giao của A q1 , A q2 ,..., A qk . Tổng<br />
tất cả các phần tử của P được gọi là độ hỗ trợ của A q1 , A q2 ,..., A qk . ( Trường hợp k = 1, độ hỗ<br />
trợ của véc tơ cột Aq bằng tổng tất cả các thành phần của nó).<br />
Dễ thấy độ hỗ trợ của tổ hợp véc tơ cột A q1 , A q2 ,..., A qk trong A cũng chính là độ hỗ trợ<br />
của tập mục tương ứng i q1 , i q2 ,..., i qk trong T. k-tập mục i q1 , i q2 ,..., i qk là thường xuyên khi và chỉ<br />
khi k-tổ hợp véc tơ cột A q1 , A q2 ,..., A qk có độ hỗ trợ không nhỏ hơn giá trị minsup. Do đó, bài<br />
toán khai phá TMTX trong T tương đương với bài toán tìm tất cả các tổ hợp véc tơ cột của A có<br />
độ hỗ trợ không nhỏ hơn giá trị minsup.<br />
Từ định nghĩa độ hỗ trợ của một tổ hợp véc tơ cột trong ma trận nhị phân A, dễ dàng suy<br />
ra các mệnh đề sau đây.<br />
<br />
Mệnh đề 3.1.1. Nếu tổng tất cả các phần tử của véc tơ dòng nào đó của A nhỏ hơn k thì<br />
có thể bỏ qua véc tơ dòng này khi tính độ hỗ trợ của các k-tổ hợp véc tơ cột trong A.<br />
Mệnh đề 3.1.2. (Tính chất anti-monotone). Nếu iq1 , iq2 , ... , iqk là k-tập mục thường<br />
xuyên thì mọi tập con của nó cũng là thường xuyên.<br />
Từ mệnh đề 3.1.2. suy ra, nếu véc tơ cột nào đó của A có độ hỗ trợ nhỏ hơn minsup thì ta<br />
có thể loại bỏ nó khỏi A trong quá trình tìm kiếm các TMTX dựa trên ma trận A.<br />
16<br />
<br />
T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008<br />
<br />
Mệnh đề 3.1.3. Ký hiệu Lk là tập tất cả các k-tập mục thường xuyên, L k (i q ) là tập các<br />
k-tập mục thường xuyên chứa i q . Nếu card ( L k (i q )) < k thì mọi (k+1)-tập mục chứa i q không<br />
thể là TMTX.<br />
Chứng minh. Thật vậy, giả sử X là (k+1)-tập mục thường xuyên, khi đó X sẽ có k tập<br />
mục con kích thước k chứa i q và tất cả các tập mục con này đều là thường xuyên (theo mệnh<br />
đề 3.1.2.). Điều này mâu thuẫn với giả thiết card ( L k (i q )) < k .<br />
Từ mệnh đề 3.1.3. suy ra, nếu card ( L k (i q )) < k thì trong quá trình phát hiện các TMTX<br />
có kích thước lớn hơn k ta không cần quan tâm đến mục i q . Véc tơ cột ứng với i q bị loại bỏ<br />
khỏi ma trận A .<br />
Mệnh đề 3.1.4.<br />
<br />
Ký hiệu L k là tập tất cả các k-tập mục thường xuyên, nếu<br />
<br />
card ( L k ) < k + 1 thì TMTX tối đại có kích thước bằng k.<br />
Chứng minh. Thật vậy, giả sử tồn tại tập mục thường xuyên X có kích thước lớn hơn k.<br />
Khi đó, X sẽ có nhiều hơn k tập mục con kích thước k và tất cả các tập mục con này đều là<br />
thường xuyên (theo mệnh đề 3.1.2.). Điều này mâu thuẫn với giả thiết card ( L k ) < k + 1 .<br />
Từ mệnh đề 3.1.4. suy ra quá trình từng bước phát hiện các TMTX trong T, (theo kích<br />
thước từ nhỏ đến lớn), sẽ dừng tại bước k khi card ( L k ) < k + 1 .<br />
<br />
3.2. Thuật toán<br />
Dựa trên các kết quả trong mục 3.1., chúng tôi đề nghị thuật toán sau đây, gọi là thuật<br />
toán BMB, phát hiện TMTX trong CSDL giao tác.<br />
Thuật toán BMB bao gồm hai pha:<br />
<br />
•<br />
<br />
Xây dựng ma trận nhị phân A tương ứng với cơ sở dữ liệu T.<br />
<br />
•<br />
<br />
Dựa trên ma trận A, phát hiện tập các tập mục thường xuyên L.<br />
<br />
3.2.1. Xây dựng ma trận nhị phân<br />
Giả sử cơ sở dữ liệu giao tác T có m giao tác và n mục:<br />
<br />
T = { t1 , t2 ,..., tm } ,<br />
<br />
I = { i1 , i2 ,..., in } . Để thu được ma trận nhị phân A, ta quét một lần cơ sở dữ liệu và tính các phần<br />
tử a pq của A theo (3.1).<br />
<br />
3.2.2. Phát hiện các tập mục thường xuyên<br />
Dựa vào ma trận nhị phân A thu được sau pha một, ta tiến hành phát hiện các TMTX<br />
theo phương pháp tiếp cận từng bước.<br />
Bước k = 1: Tính độ hỗ trợ của từng véc tơ cột của A, tức là tính các tổng sum(Aq), q =<br />
1, 2, ..., n. Nếu sum( Aq ) ≥ minsup thì mục i q tương ứng với Aq là mục thường xuyên. Nạp mục<br />
thường xuyên i q này vào tập các 1-tập mục thường xuyên L1 .<br />
<br />
17<br />
<br />
T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008<br />
<br />
Bước k = 2: a) Tỉa ma trận A : xóa tất cả các cột của A có độ hỗ trợ nhỏ hơn minsup (căn<br />
cứ vào nhận xét sau mệnh đề 3.1.2.); xóa tất cả các dòng của A có tổng các phần tử nhỏ hơn 2 ,<br />
(căn cứ vào mệnh đề 3.1.1.). Gọi ma trận thu được từ A sau khi xoá các cột và các dòng như trên<br />
là A 1 .<br />
b) Lập tập C 2 tất cả các tổ hợp chập 2 của các cột của A 1 . Tính độ hỗ trợ của mỗi tổ<br />
hợp c ∈ C 2 . Nếu c có độ hỗ trợ không nhỏ hơn minsup thì tập mục tương ứng là 2-tập mục<br />
thường xuyên. Nạp TMTX này vào tập các 2-tập mục thường xuyên L 2 .<br />
Bước k = 3: a) Tỉa ma trận A 1 như sau: xóa tất cả các cột của A 1 ứng với mục i q có<br />
card ( L 2 (i q )) < 3 (theo mệnh đề 3.1.3.); xóa tất cả các dòng của A 1 có tổng các phần tử nhỏ<br />
hơn 3. Gọi ma trận thu được từ A 1 sau khi xoá các cột và các dòng như trên là A 2 .<br />
b) Lập tập C 3 tất cả các tổ hợp chập 3 của các cột của A 2 . Tính độ hỗ trợ của mỗi tổ<br />
hợp c ∈ C 3 . Nếu c có độ hỗ trợ không nhỏ hơn minsup thì tập mục tương ứng là 3-tập mục<br />
thường xuyên. Nạp TMTX này vào tập các 3-tập mục thường xuyên L 3 .<br />
Các bước tiếp k = 4, 5, ... tiếp theo thực hiện tương tự.<br />
Quá trình tìm kiếm TMTX dừng tại bước k khi card ( L k ) < k + 1 hoặc C k = ∅ .<br />
Tựa code của thuật toán BMB là như sau.<br />
<br />
Input: Cơ sở dữ liệu T, độ hỗ trợ minsup<br />
Output: Tập các tập mục thường xuyên L.<br />
1.<br />
<br />
Xây dựng ma trận nhị phân A tương ứng với cơ sở dữ liệu T;<br />
<br />
2.<br />
<br />
for mỗi cột Ai của A<br />
if sum(Aq) >= minsup // sum(Aq) là tổng các thành phần của Aq<br />
<br />
3.<br />
<br />
L1 ← iq ;<br />
<br />
4.<br />
<br />
else xoá cột Aq khỏi A.<br />
<br />
5.<br />
6.<br />
<br />
for mỗi hàng Ap của A<br />
<br />
7.<br />
<br />
if sum(Ap) < 2<br />
Xoá hàng Ap khỏi A ;<br />
<br />
8.<br />
9.<br />
<br />
10.<br />
<br />
( k = 2 ; card (L<br />
<br />
k −1<br />
<br />
) > k − 1 ; k ++ )<br />
<br />
{<br />
<br />
11.<br />
<br />
Tìm tất cả tổ hợp châp k của các véc tơ cột của A ;<br />
<br />
12.<br />
<br />
for mỗi tổ hợp chập k các véc tơ cột A q1 , A q 2 ,..., A q k<br />
<br />
13.<br />
<br />
18<br />
<br />
for<br />
<br />
(<br />
<br />
{<br />
<br />
)<br />
<br />
T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008<br />
<br />
14.<br />
<br />
B = A q1 ∩ A q 2 ∩ ... ∩ A q k ;<br />
<br />
15.<br />
<br />
if sum(B) >= minsup<br />
<br />
{<br />
<br />
L k ← i q1 ,i q 2 ,...,i q k<br />
<br />
16.<br />
<br />
17.<br />
<br />
};<br />
<br />
}<br />
<br />
18.<br />
<br />
for mỗi mục iq thuộc Lk<br />
<br />
19.<br />
<br />
if card (L k (i q )) < k<br />
Xoá cột Aq tương ứng với mục iq khỏi A ;<br />
<br />
20.<br />
<br />
for mỗi hàng Ap của A<br />
<br />
21.<br />
<br />
if sum(Ap) < k+1<br />
<br />
22.<br />
<br />
Xoá dòng Ap khỏi A ;<br />
<br />
23.<br />
k=k+1<br />
<br />
24.<br />
25.<br />
<br />
}<br />
<br />
26. return L = A1 ∪ A 2 ∪ ... ∪ A k ;<br />
3.3.<br />
<br />
Ví dụ. Xét cơ sở dữ liệu giao tác T (bảng 1)<br />
Bảng 1: CSDL T<br />
Bảng 2: ma trận nhị phân A<br />
<br />
Giao tác<br />
t1<br />
t2<br />
t3<br />
t4<br />
t5<br />
t6<br />
t7<br />
t8<br />
t9<br />
t10<br />
<br />
Mục giao dịch<br />
i1, i2, i4, i5<br />
i2<br />
i2, i4, i5, i6<br />
i1, i3<br />
i1, i4, i5<br />
i2, i4, i5<br />
i1<br />
i2, i5<br />
i1, i2, i3, i4, i5<br />
i1, i2<br />
<br />
TID<br />
t1<br />
t2<br />
t3<br />
t4<br />
t5<br />
t6<br />
t7<br />
t8<br />
t9<br />
t10<br />
<br />
i1<br />
1<br />
0<br />
0<br />
1<br />
1<br />
0<br />
1<br />
0<br />
1<br />
1<br />
<br />
i2<br />
1<br />
1<br />
1<br />
0<br />
0<br />
1<br />
0<br />
1<br />
1<br />
1<br />
<br />
i3<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
<br />
i4<br />
1<br />
0<br />
1<br />
0<br />
1<br />
1<br />
0<br />
0<br />
1<br />
0<br />
<br />
i5<br />
1<br />
0<br />
1<br />
0<br />
1<br />
1<br />
0<br />
1<br />
1<br />
0<br />
<br />
i6<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
<br />
Giả sử minsup = 2. Quá trình phát hiện các TMTX trong T theo thuật toán BMB là như sau.<br />
<br />
Pha 1. Ta có ma trận nhị phân tương ứng với T là ma trận A cho trong bảng 2.<br />
Pha 2. Tìm các tập mục thường xuyên.<br />
Bước k = 1: Ta có L1 = { i1 , i2 , i3 , i4 , i5 } . Vì card ( L1 ) = 5 > 1 , quá trình tìm ki ếm ti ếp<br />
t ụ c.<br />
<br />
19<br />
<br />
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn