Upload
trinh-dinh-yen
View
94
Download
1
Embed Size (px)
Citation preview
DANH MỤC CÁC HÌNH
Hình 1 - Một ví dụ về bộ dữ liệu
Hình 2 – Ma trận bit của tập dữ liệu
Hình 3 - Ma trận bit rút gọn với minsup =2
Hình 4 - Một cell của mảng tâm thu
Hình 5 – Chức năng của một cell trong mảng tâm thu 1 chiều
Hình 6 – Ma trận bit chuyển đổi từ tập phần tử tương ứng với hình 1
Hình 7 – khởi tạo ban đầu của mảng tâm thu
Hình 8 – Lần input đầu tiên của mảng tâm thu
Hình 9 – Lần di chuyển thứ hai của mảng tâm thu.
Hình 10 – Lần input thứ 3 của mảng tâm thu
Hình 11 - Khởi tạo ban đầu của mảng tâm thu để khai thác tập phần tử có chứa “a”
Hình 12 - Mảng tâm thu hai chiều khai thác tập dữ liệu phổ biến.
Hình 13 - Thuật toán SABMA
Hình 14 - Đặc điểm bộ dữ liệu test
Hình 15 - Tập dữ liệu moshroom
Hình 16 – Tập dữ liệu Pumsb
Hình 17 – Tập dữ liệu accident
Hình 18 – Tập dữ liệu retail
Hình 19 – Tập Dữ liệu Kosarak
1
MỤC LỤC
TÓM TẮT.........................................................................................................................................3
CHƯƠNG 1: GIỚI THIỆU...............................................................................................................4
1.1 Phạm vi vấn đề......................................................................................................................4
1.2 Mở đầu và định nghĩa............................................................................................................5
CHƯƠNG 2: NHỮNG NGHIÊN CỨU LIÊN QUAN....................................................................10
2.1 Những phương pháp khai thác mẫu bit................................................................................10
2.2 Phương pháp khai thác mẫu song song................................................................................11
CHƯƠNG 3: MÔ HÌNH VẤN ĐỀ.................................................................................................13
3.1 Mảng tâm thu......................................................................................................................13
3.2 Vấn đề khai thác mẫu phần tử sử dụng mảng tâm thu.........................................................14
CHƯƠNG 4: PHƯƠNG PHÁP KHAI THÁC SONG SONG.........................................................21
4.1 Chia để trị............................................................................................................................21
4.2 Mảng tâm thu 2 chiều..........................................................................................................22
Vì chúng tôi tiếp tục tính toán mỗi lần hoàn thành từng dòng của mảng trong khi input tiến đến phía bên trái “1” của mảng tâm thu, thời gian thực thi được cải thiện nhiều. Hơn nữa chúng ta biết rằng nếu số số “1” trong y (array) nhỏ hơn minsup tiến trình của y sẽ dừng lại. Vì vậy chúng ta có thể sắp xếp các phần tử theo độ phổ biến của nó và xác suất dừng tiến trình tăng lên ở các hàng cao hơn, nhiều cells hơn và do đó thuật toán của chúng tôi được cải thiện. Kết quả thực nghiệm của chúng tôi cho thấy thời gian thực thi của thuật toán khai thác dữ liệu giảm rất nhiều.....................23
4.3 Thuật toán khai thác dựa trên mảng tâm thu........................................................................23
CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM.....................................................................................27
TÀI LIỆU THAM KHẢO...............................................................................................................32
2
TÓM TẮT
Khai thác tập phần tử phổ biến là một trong những khái niệm quan trọng nhất
trong khai thác dữ liệu. Một trong những vấn đề lớn trong khai thác tập phần tử phổ
biến là sự bùng nổ của số lượng kết quả.ảnh hưởng trực tiếp đến thời gian thực thi
của thuật toán khai thác, đặc biệt là khi xử lý các bộ dữ liệu quá lớn. Để giải quyết
vấn đề này, tập phần tử phổ biến đóng đã được đề xuất, tập đóng này đã được rút
gọn tương đương với tập phần tử phổ biến gốc. Từ đó, các tập phần tử phổ biến
trong các tập ban đầu có thể được xây dựng lại từ tập này.Tuy nhiên, phương pháp
này vẫn chưa giải quyết được vấn đề bùng nổ mô hình, chủ yếu là do các bộ dữ liệu
lớn có quá nhiều phần tử trong mỗi giao dịch. Khai thác tập phần tử phổ biến khổng
lồ là một giải pháp khác để giảm kích thước đầu ra sẽ không thể hữu ích nếu tập tất
cả các tập phổ biến đã được yêu cầu. Bằng cách mở rộng phương pháp khai thác
song song có thể đạt được hiệu suất cao hơn.
Trong bài viết này, chúng tôi giới thiệu một thuật toán song song mở rộng hiệu quả
sử dụng mảng tâm thu để tiến hành khai thác các tập phần tử phổ biến rất lớn. Trong
thuật toán của chúng tôi, chúng tôi sử dụng một ma trận bit để nén các số liệu và
ánh xạ các thuật toán khai thác về kiến trúc mảng tâm thu. Với mục đích này, mỗi
giao dịch của bộ dữ liệu đại diện cho một hàng trong ma trận bit. Chúng tôi sử dụng
cấu trúc ma trận bit này để mô hình hóa mẫu khai phá như một mảng tâm thu. Kết
quả thực nghiệm cho thấy thuật toán này nhanh hơn so với các thuật toán song song
tốt nhất trước đây.
3
CHƯƠNG 1: GIỚI THIỆU
Một trong những vấn đề quan trọng trong việc khai thác dữ liệu là phát hiện mẫu
phổ biến từ cơ sở dữ liệu giao dịch, mà mỗi giao dịch có chứa một tập hợp các phần
tử. Khai thác các mẫu phổ biến đóng vai trò quan trọng trong quá trình khai thác
luật kết hợp được sử dụng trong nhiều ứng dụng, bao gồm phân tích mẫu mua hàng
của khách hàng, phân tích mẫu truy cập web, điều tra các quy trình khoa học, y tế,
và các phân tích chuỗi DNA. Trong phần này, đầu tiên chúng tôi chỉ ra phạm vi vấn
đề của chúng tôi và sau đó chúng tôi trình bày sơ bộ và mô tả một cấu trúc ma trận
bit được sử dụng để xây dựng các phương pháp song song trong bài viết này.
1.1 Phạm vi vấn đề
Có một số phương pháp khai thác mẫu phổ biến: khai thác tập phần tử phổ biến,
khai thác mẫu tuần tự, và khai thác đồ thị. Trong bài báo này, chúng tôi tập trung
vào tập các phần tử, chúng tôi sử dụng thuật ngữ “mẫu” và “tập phần tử” thay thế
cho nhau.
Nhiều thuật toán khai thác mẫu phổ biến có hiệu quả đã được đề xuất trong các tài
liệu [2-9]. Các thuật toán như Apriori, khai thác theo thứ bậc quan trọng nhất, bị hai
vấn đề chính: số lượng lớn các bộ ứng viên, và phải liên tục quét lại các số liệu để
kiểm tra độ phổ biến của mỗi ứng viên [2-4]. FP- Growth kế thừa nó [5-8] là thế hệ
thứ hai của thuật toán khai thác mẫu, khai thác mẫu phổ biến của bộ dữ liệu bằng
phương pháp tìm kiếm theo chiều sâu đầu tiên mà không sử dụng ứng viên và
không cần quét nhiều lần trên tập dữ liệu. Những thuật toán tính toán theo chiều dọc
xử lý những bộ dữ liệu theo chiều dọc, là những bộ dữ liệu có số giao tác nhỏ
nhưng có số lượng các phần tử quá lớn trong mỗi giao dịch [9]. Trong định dạng dữ
liệu theo chiều dọc, mỗi hàng của dữ liệu có một phần tử và một tập các id giao tác
chứa phần này.
4
Thách thức lớn trong khai thác mẫu phổ biến là tất cả mẫu con của một mẫu phổ
biến là phổ biến, số tập con này tăng theo số mũ, kết quả thu được là một số lượng
quá lớn các mẫu phổ biến. Để khắc phục vấn đề này, khai thác mẫu phổ biến đóng
[10-15] được đề xuất. Mẫu đóng là một tập hợp nhỏ gọn của mẫu phổ biến mà vẫn
giữ đầy đủ các thông tin của bộ mẫu. Một mẫu là đóng trong một bộ dữ liệu nếu nó
là phổ biến trong các bộ dữ liệu và không tồn tại siêu mẫu có cùng độ support với
nó trong bộ dữ liệu.
Mặc dù khai thác mẫu đóng đã giảm số lượng tính toán và khối lượng đầu ra của
quá trình khai thác, nhưng có một vấn đề là tốn rất nhiều thời gian và không gian bộ
nhớ khi bộ dữ liệu quá lớn. Khai thác mẫu khổng lồ là một giải pháp thay thế tốt
cho vấn đề bùng nổ mẫu [1,16,17]. Ý tưởng chính của khai thác mẫu khổng lồ là
tìm phương pháp khai thác mà chỉ trích xuất các mẫu quy mô lớn mà không khai
thác các mẫu quy mô nhỏ và vừa. Ý tưởng này thích hợp cho các trường hợp mà
không cần tới tất cả các mẫu phổ biến và chỉ thích hợp cho mẫu quy mô lớn.
Thuật toán khai thác mẫu song song dự kiến sẽ đạt được mức hiệu suất cao hơn .
Bài báo này nghiên cứu giải pháp song song để tìm tất cả các mẫu phổ biến (đóng)
của cơ sở dữ liệu (mảng lớn).
1.2 Mở đầu và định nghĩa
Cho I ={i1,i2,....in} là một tập hợp các phần tử (gọi là cột). Tập dữ liệu D chứa
tập hợp các hàng (gọi là giao dịch) R={r1,r2,...rrn}, ở đây mỗi dòng ri là 1 tập của
những phần tử với id gọi là rid hoặc tid. Cho 1 tập của những phần tử X thuộc I
chúng ta định nghĩa tập support, chỉ rõ D(X) € R như tập giá trị lớn nhất của dòng
mà nó chứa X. Số hàng trong bộ dữ liệu có chứa X được gọi là support của X. Theo
định nghĩa support của X là Sup(X) = |D(X)|. Một tập phổ biến X được gọi là tập
phổ biến hoặc mẫu phổ biến nếu Sup(X) >= minsup, minsup là ngưỡng support
5
được người dùng quy định. Nói cách khác, một mẫu là phổ biến nếu số lượng giao
dịch mà có chứa mẫu đó không nhỏ hơn so với ngưỡng người dùng quy định
Một tập các phần tử X € I gọi là mẫu đóng nếu không tồn tại Y mà Y € X và
Sup(X) = Sup(Y), Ví dụ: không có tập cha của X với cùng support. Nói một cách
khác, tập các dòng mà chứa tập cha Y, phải không cùng số dòng chứa X. Một tập
phần tử X gọi là mẫu đóng phổ biến, nếu nó đóng và phổ biến.
Hình 1 là một ví dụ về bộ dữ liệu có các phần tử được ký hiệu theo alphabets.
Hình 1. Một ví dụ về bộ dữ liệu
Tập các item được sử dụng trong cơ sở dữ liệu này là I={a, b, c, d, e, f, h, k, m, p}.
Trong bộ dữ liệu này, X={b, e, f} là tập phẩn tử phổ biến với support=2 bởi vì nó là
tập con của 2 giao dịch 6 và 7. Để đơn giản hơn, chúng tôi viết lại tập X=bef. “bef”
không phải là một tập đóng bởi vì tồn tại một tập cha “bdef” trong bộ dữ liệu có
cùng support. Tuy nhiên “bdef” là một tập đóng bởi vì chỉ có một tập cha của nó
“bcdef” có độ support là 1.
6
Với tập dữ liệu D và một ngưỡng minsup, vấn đề của việc khai thác mẫu phổ biến là
tìm tất cả mẫu phổ biến tương ứng với ngưỡng minsup, tương tự với vấn để của việc
khai thác mẫu phổ biến đóng là tìm mẫu phổ biến đóng tương ứng với ngưỡng
minsup.
Chúng ta có thể biểu diễn một bộ dữ liệu thành một ma trận bit [1] với m
hàng và n cột sao cho mỗi hàng tương ứng với một giao dịch của tập dữ liệu và mỗi
cột tương ứng với một phần tử trong tập I. Mỗi hàng của tập dữ liệu là một chuỗi n
bit, nếu một hàng dữ liệu có chứa phần tử i thì bit thứ i của chuỗi tương ứng là 1 và
ngược lại là 0. Do đó bộ dữ liệu được nén thành một ma trận bit. Ví dụ như ma trận
bit tương ứng với dữ liệu của hình 1 là hình 2.
Hình 2 –Ma trận bit của tập dữ liệu
Hai mảng của ma trận bit: colSum là một mảng n-phần tử chỉ ra cho biết độ
phổ biến (support) của từng phần tử và rowSum là một mảng có m phần tử chỉ ra số
lượng các phần tử trong mỗi hàng. Chúng ta có thể lượt bớt cột của ma trận bit theo
minsup, loại bỏ tất cả các cột tương ứng với colsum có giá trị nhỏ hơn minsup.Cột
thứ 3 của hình 1 cho thấy dữ liệu được cắt bớt dựa trên ngưỡng minsup = 2. Hình 3
7
là một ma trận bit đã được rút gọn sau khi loại bỏ các cột tương ứng với colSum có
giá trị nhỏ hơn minsup = 2.
Hình 3. Ma trận bit rút gọn với minsup =2
Để xác định xem một tập phẩn tử phổ biến X là thường xuyên hay không,
chúng ta xây dựng ColAndVector của nó bằng cách thực hiện toán tử “And” trên
các cột tương ứng với tất cả các phần tử của X. Nếu tổng của các giá trị trong một
ColAndVector không nhỏ hơn minsup thì tập phần tử phổ biến của ColAndVector
đó là thường xuyên. Ví dụ, ColAndVector (ab) chỉ có một bit với giá trị 1 ( bit thứ
3) và do đó ab là không thường xuyên.
Để chỉ ra tập phổ biến X là đóng từ ma trận bit, chúng ta nên xây dựng
ColAndVector của X và toán hạng And trên ColAndVector với cột của từng phần tử
không tồn tại trong X. Nếu kết quả cuối cùng của toán hạng AND là bằng với
colAndVector của X thì X không đóng. Ví dụ, chúng ta có thể nhìn thấy trong hình
3, colAndVector ((bef)=00000110 và colAndVector(bdef)=00000110 và vì thế bef
không phải là mẫu đóng.
8
Trong bài báo này, chúng tôi sử dụng các ma trận bit tương ứng với bộ dữ
liệu để trích xuất hoàn chỉnh tập phần tử phổ biến của bộ dữ liệu, sử dụng thuật toán
song song dựa trên mảng tâm thu.
Những đóng góp chính của bài báo này:
- Một phương pháp khai thác mới được phát triển theo hướng tiếp cận
chia để trị để giảm kích thước của ma trận bit. Vì vậy nó giải quyết
các vần đề khai thác của bộ dữ liệu hiệu quả.
- Một hướng tiếp cận mới nhằm mô hình hóa các vấn đề khai thác mẫu
thường xuyên thành mảng tâm thu.
- Một mảng tâm thu dựa trên phương pháp song song được thiết kế
nhằm khai thác tập phần tử phổ biến của bộ dữ liệu bằng cách sử
dụng bit để khai thác các mẫu phổ biến từ bộ dữ liệu lớn.
Trong phần 2, chúng tôi thảo luận các nghiên cứu hiện có, có liên quan đến
việc xử lý song song trong khai thác mẫu phổ biến. Chúng tôi cũng mô tả các thuật
toán khai thác mẫu phổ biến hiện nay dựa trên cách biến đổi về bit. Phần 3 bao gồm
các định nghĩa và mô tả sơ bộ các mảng tâm thu và trình bày mô hình chính của
khai thác dữ liệu phổ biến song song như vấn đề của mảng tâm thu. Chúng tôi trình
bày phương pháp song song mới của chúng tôi và thuật toán trong phần 4 và tiến
hành nghiên cứu thực nghiệm trong phần 5. Cuối cùng chúng tôi kết luận phần
nghiên cứu trong phần 6.
9
CHƯƠNG 2: NHỮNG NGHIÊN CỨU LIÊN QUAN
2.1 Những phương pháp khai thác mẫu bit
Gần đây, có nhiều nỗ lực áp dụng kỹ thuật bitmap trong các thuật toán khai
thác mẫu phổ biến [18-21]. BitTableFI[18] là thuật toán dựa trên BitTable, khai thác
theo cả chiều ngang và chiều dọc. BitTable là một cấu trúc dữ liệu đặc biệt sử dụng
cả chiều dọc và ngang để nén cơ sở dữ liệu thành tập ứng viên nhanh chóng và tính
toán độ support.
Mặc dù việc thực hiện các phép tính toán trên bit hiệu quả, BitTableFI phát
sinh và kiểm tra quá nhiều ứng viên. Để giải quyết vấn đề này, một thuật toán mới
Index-BitTableFI đã được đưa ra [19]. Index-BitTableFI cũng sử dụng BitTable
theo chiều dọc và ngang. Sử dụng bitTable theo chiều ngang, một chỉ số của mảng
và phương pháp tính toán tương đương đã được đề xuất. Bằng cách tính toán các
chỉ số phụ, những tập phần tử xuất hiện đồng thời với phần tử đang xét đến được
xác định một cách nhanh chóng bằng cách tìm kiếm chính xác theo bề rộng cùng
một lúc.
Trong [20] một thuật toán khai thác nhanh đã được trình bày, tích hợp
những giá trị của thuật toán ma trận và thuật toán Index-BitTableFI, và tạo ra một
thuật toán khai thác hiệu quả tập phần tử phổ biến. Trong thuật toán này, nó có thể
sinh ra trực tiếp vài tập phần tử phổ biến mà không sinh ra trong Index-BitTableFI.
Mặt khác, thuật toán không sử dụng phương pháp đệ quy, không mất thời gian tính
toán các tập phổ biến khác trong thuật toán index-BitTableFI, và sử dụng chiến lược
tìm kiếm theo chiều rộng để tạo ra tất cả các tập phổ biến.
CFP-tree and CFP-array [21] là hai cấu trúc dữ liệu mới sử dụng kỹ thuật nén
nhẹ để giảm tiêu tốn bộ nhớ của FP-tree bằng một thuật toán theo thứ bậc. CFP-tree
là một sự kết hợp của 2 kỹ thuật FP-tree và bitmap.
10
2.2 Phương pháp khai thác mẫu song song
Nhiều thuật toán song song và phân tán đã được đề xuất để khai thác tất cả
các tập phần tử phổ biến trong một cơ sở dữ liệu giao dịch [22-27]. Vào năm 1999
một cuộc khảo sát được tiến hành để khai thác luật kết hợp và các sơ đồ song song
của nó[22]. Trong cuộc khảo sát này, hầu hết các thế hệ đầu tiên của thuật toán khai
thác mẫu song song và phân tán được nghiên cứu dựa trên Apropri. Tất cả những
thuật toán đều có những điểm hạn chế giống Apriori vì chúng đều dựa trên nguyên
tắc Apriori.
Lấy cảm hứng từ thuật toán FP-growth dựa trên kỹ thuật Apriori, một số
lượng lớn các nghiên cứu tìm hiểu kỹ thuật khai thác FP-tree theo mô hình khai thác
song song và phân tán [23-27]. Những công trình này phân vùng dữ liệu thành
nhiều phần và sau đó xây dựng FP-tree riêng cho từng phần song song [23,24]. Mặt
khác, có một số thuật toán khác xây dựng cây FP-tree cho toàn bộ cơ sở dữ liệu,
bằng kỹ thuật cây song song. [25,26].
Một thuật toán song song hiệu quả khai thác mẫu phổ biến dựa trên nền tảng
song song không chia sẻ đã được trình bày trong [23]. Bằng cách phân vùng hiệu
quả danh sách các phần tử phổ biến trên bộ xử lý, thuật toán PFP-tree cố gắng giảm
tối thiểu chi phí kết nối và chi phí đồng bộ hóa. Cân bằng tải FP-tree (LFP-tree) là
một thuật toán khai thác phân tán và song song khác dựa trên cấu trúc FP-tree[24].
Thuật toán phân chia các tập phần tử cần khai thác theo chiều rộng và chiều sâu của
cây. Hơn nữa, một công thức tính toán đơn giản và đáng tin cậy để cân bằng tải đã
được đề xuất trong [24]. Thời gian kết nối trong LFP-tree đã giảm bớt bằng cách
giữ các phần tử nặng trong các nút máy tính cục bộ của nó, vì vậy LFP-tree giảm
được chút thời gian tính toán so với PFP-tree. Ngoài ra, nó có tốc độ tốt hơn so với
PFP-tree khi số lượng bộ vi xử lý tăng lên.
11
Cả 2 hướng tiếp cận LFP-tree và PFP-tree phát triển các tập phổ biến dựa
trên tiền tố cây. Thay vì xây dựng một số FP-tree cục bộ, Chen và các cộng sự.[26]
đề xuất một kỹ thuật cây phân vùng mà chỉ có một FP-tree và phân vùng nó thành
nhiều phần độc lập để khai thác mẫu phổ biến bằng cách chỉ định từng phần đến
một bộ xử lý. Tuy nhiên, phương pháp này vẫn còn bị hạn chế là tiêu tốn bộ nhớ và
chi phí kết nối giữa các bộ vi xử lý. DFP là một chiến lược khai thác tập phổ biến từ
dữ liệu terabyte trên hệ thống cụm được trình bày trong [25]. Trong chiến lược này,
thiết kế được tối ưu hóa để giảm chi phí giao tiếp bằng cách nén cấu trúc dữ liệu và
sử dụng phương pháp mã hóa. Tối ưu hóa để cải thiện bộ nhớ cache, bộ nhớ và I/O
bằng kỹ thuật rút gọn, và chiến lược sắp xếp dữ liệu thông minh cũng được sử dụng
trong chiến lược này.
PP-tree( Parallel pattern tree) là một cấu trúc cây mới được đề xuất ở [27].
PP-tree giảm chi phí I/O bằng cách nắm các nội dung cơ sở dữ liệu trong một lần
quét và FP-growth khai thác trên nó.
Mặc dù các phương pháp FP-tree cục bộ hoặc toàn cục có thể được xây
dựng mà chỉ tốn ít chi phí giao tiếp giữa các bộ vi xử lý, nhưng hầu như tất cả các
phương pháp tiếp cận đều tốn quá nhiều chi phí giao tiếp, trong quá trình khai thác
dữ liệu. Tất cả các phương pháp khai thác mẫu song song được phát triển trước đây
cũng có một vấn đề chung là “làm thế nào chúng ta có thể chia các bộ dữ liệu giữa
các máy tính và khai thác độc lập mà không cần phải chia sẻ thông tin và kết quả”.
Chúng tôi sử dụng mảng tâm thu để giải quyết vấn đề này. Kỹ thuật mảng
tâm thu cho phép chúng tôi khai thác mẫu phổ biến song song mà không cần phải
chia sẻ thông tin và kết quả và không làm I/O quá tải.
12
CHƯƠNG 3: MÔ HÌNH VẤN ĐỀ
Trong phần này, chúng tôi giới thiệu mảng tâm thu và những vấn đề trong khai thác
tập phần tử phổ biến song song bằng cách sử dụng phương pháp biến đổi bit.
3.1 Mảng tâm thu
Một mảng tâm thu là sự sắp xếp từng vi xử lý trong một mảng, dòng chảy dữ
liệu đồng bộ chảy qua từng tế bào trong mảng, thông thường các dòng dữ liệu khác
nhau chảy theo hướng khác nhau. Mỗi bộ xử lý tại mỗi bước lấy dữ liệu từ những
bộ xử lý kế nó (ví dụ bắc và tây), xử lý nó, và kết quả đi ra theo hướng ngược lại.
Kung và Leiserson là những người đầu tiên viết một bài báo về mảng tâm thu [29].
Đây là một dạng đặc biệt của tính toán song song. Cell (bộ xử lý), tính toán dữ liệu
và lưu trữ nó độc lập. Trong loại song song này, không giống như nhiều hình thức
song song song khác, chúng tôi không bị mất tốc độ vì kết nối giữa các bộ xử lý.
Hình 4 cho thấy ví dụ của một Cell mảng tâm thu. Cell này có 2 đầu vào “a” và “b”’
và 1 bộ nhớ “m” để lưu dữ liệu. Sau đó mỗi lần tính toán, cell trả về 2 giá trị đầu ra
x và y. Công thức tính toán được xác định cho bộ xử lý.
Hình 4- Một cell của mảng tâm thu
13
3.2 Vấn đề khai thác mẫu phần tử sử dụng mảng tâm thu.
Để sử dụng mảng tâm thu như là môi trường cho các thuật toán song song
của chúng tôi, đầu tiên chúng tôi xác định giá trị đầu vào, đầu ra và bộ nhớ trong
cell. Vì mục đích này, trước tiên chúng tôi sử dụng một mảng tâm thu có khả năng
xây dựng tất cả các tập phổ biến của một bộ dữ liệu và vector bit tương ứng của nó
để cho biết là nó thường xuyên hay không. Ý tưởng chính là:” xác định những phần
tử phổ biến trong tập dữ liệu, nếu có tồn tại “n” phần tử phổ biến trong tập dữ liệu,
sẽ có 2n-1 tập phần tử có khả năng phổ biến, kết quả là có 1 đến 2n-1 chuỗi nhị phân
của tập phần tử, và mỗi phần tử tương ứng với với 1 bit của trong từng chuỗi.” Để
thực hiện ý tưởng này, chúng ta hãy xem xét một mảng tâm thu một chiều với các
cell như hình 5.
Hình 5 – Chức năng của một cell trong mảng tâm thu 1 chiều
Sau đây là thông tin và luật từng cell của mảng tâm thu:.
- Mỗi cell có một bộ nhớ (x) lưu trữ vector bit của một phần tử.
- Mỗi cell có một bộ nhớ (m) lưu trữ tên của một phần tử.
- Mỗi cell có một bộ nhớ (z) lưu trữ một bit. Nếu có phần tử của cell
tương ứng trong tập phần tử thì z là 1, ngược lại z là 0.
Mỗi cell có đầu vào (y) gồm 3 phần: y(IS) là một tập phần tử, y(array) là
vector bit tương ứng của tập phần tử. Và y(sw) để xác định xem tiến trình xử lý đã
hoàn thành hay không.
14
Mỗi cell có 2 đầu ra “a” và “b”.
Đầu tiên, giả sử chúng ta có một mảng một chiều với n cell (n là số lượng
các phần tử phổ biến trong các bộ dữ liệu) sao cho output “a” của cell “i” là input
“y” của cell “i+1” ( cho mỗi 0<i<n). Input ban đầu cho cell đầu tiên trong từng tiến
trình là y, với y(IS) có giá trị là rỗng, y(array) là một vector n bit có giá trị là 1, và
y(sw) là 1.
Ví dụ, xét 8 dòng dữ liệu của hình 1. Nếu minsup là 2 thì kết quả là cột 3 của
hình 2. Do đó tập các phần tử phổ biến là {a,b,c,d,e,f} tương ứng ma trận bit Hình
3. Vì mỗi cell của mảng tâm thu lưu trữ các bit đại diện cho một phần tử, vì vậy
chúng tôi chuyển bộ dữ liệu sang chiều dọc. Các bộ dữ liệu theo chiều dọc có thể
được tạo ra bởi chuyển đổi ma trận bit tương ứng. Trong hình 6 cho thấy ma trân bit
chuyển đổi tương ứng hình 3.
Hình 6 – Ma trận bit chuyển đổi từ tập phần tử tương ứng với hình 1
Mỗi dòng của ma trận bit chuyển đổi tương ứng với một vector bit của một
phần tử và được lưu trong cell của mảng tâm thu. Hình 7 là ví dụ cho thấy giá trị
input của mảng tâm thu khi được khởi tạo lần đầu.
15
Hình 7 – khởi tạo ban đầu của mảng tâm thu
Để cho đơn giản, trong mảng tâm thu của hình 7. Chúng tôi không trình bày
vector bit của những phần tử của mỗi cell. Hình 7 chỉ chỉ ra tên từng phần tử, vị trí
của nó trong cell và vector bit chuyển đổi tương ứng của nó.
Ý tưởng khai thác là xây dựng tất cả các tập phần tử có thể có và vector bit
tương ứng của nó, và kiểm tra độ phổ biến của nó bằng cách đếm số lượng các bit
có giá trị “1” trong vector bit tương ứng. Vì mỗi cột của ma trận bit chuyển đổi
tương ứng với một hàng của các tập dữ liệu, nên nếu số bit có giá trị 1 trong vector
bit tương ứng của tập phần tử lớn hơn “minsup” ( hay chính xác “minsup” bit(s)),
thì tập đó sẽ là một tập phổ biến.
Mảng tâm thu của hình 7 cho thấy biểu diễn nhị phân của các con số từ 1 đến
63 ( 26 – 1 cho 6 phần tử) mà mỗi bit của số được lưu trữ trong một cell của mảng
và sau đó sử dụng các bit này để tạo ra một mẫu. Mẫu này và vector bit tương ứng
của nó di chuyển giữa các cell và có một cờ kiểm tra quá trình tạo mẫu kết thúc
trong từng bước.
Quá trình tính toán của mỗi cell trong qua từng bước được dựa trên các quy
tắc sau:
16
Quá trình tính toán này tạo ra tất cả các số từ 1 đến 2n -1 trong các cell của
mảng tâm thu mà mỗi bit của số được lưu trữ trong một cell của mảng. Ví dụ: dãy
nhị phân 6 bit của 31 là 011111 và dãy này được lưu trữ trong cell mảng tâm thu từ
trái sang phải ( 0 cho cell bên trái và 1 cho các cell khác).
Bạn có thể nhìn thấy quá trình lưu trữ trong hình 8-10
Hình 8 chỉ ra tập phần tử {f} là phổ biến vì số bit 1(output) của y(array) là 7
và lớn hơn minsup (minsup = 2).
17
Hình 8 – Lần input đầu tiên của mảng tâm thu
Hình 9 cho thấy lần input thứ 2 của mảng tâm thu.
18
Hình 9 – Lần di chuyển thứ hai của mảng tâm thu.
Bạn có thể nhìn thấy rằng sau lần input đầu tiên các cell của mảng xây dựng
dạng nhị phân của 2 và sau lần input thứ hai nó xây dựng các dạng nhị phân của 3.
Cần chú ý rằng, quá trình input diễn ra liên tục, ngay sau khi lần input đầu tiên vào
cell đầu tiên xong, sẽ input ngay lập tức vào cell thứ 2, và input lại vào cell đầu tiên,
cứ như thế tiếp tục.
Hình 10 cho thấy quá trình input của y vào mảng tâm thu trong lần thứ 3.
19
Hình 10 – Lần input thứ 3 của mảng tâm thu
Những hình trên trên cho thấy chức năng của mảng tâm thu.
Nhìn vào hình trên, ta thấy rằng sau tiến trình đầu, bit “1” bên trái của mảng
không thay đổi. Vì chỉ có logk+1( cho mỗi k) bit bên phải của k được sử dụng vì vậy
chúng tôi sử dụng một counter và ngừng sự dịch chuyển sau khi kết thúc input vào
cell bên trái là “1” của mảng tâm thu.
20
CHƯƠNG 4: PHƯƠNG PHÁP KHAI THÁC SONG SONG
Trong phần này chúng tôi trình bày một phương pháp khai thác song song.
Trước tiên chúng tôi mô tả làm cách nào chúng ta có thể khai thác tập dữ liệu theo
phương pháp chia để trị và sau đó chúng tôi trình bày thuật toán song song của
chúng tôi.
4.1 Chia để trị
Chúng tôi sử dụng cách tiếp cận chia để trị để cải thiện phương pháp song
song. Trong cách tiếp cận này chúng tôi phân chia tập dữ liệu dựa trên các mẫu phổ
biến tối thiểu. Nói chung, chúng tôi chia các mẫu khai thác của mỗi bộ dữ liệu thành
các loại khác nhau dựa trên các phần tử. Vì mục tiêu này, trước tiên chúng tôi sắp
xếp các phần tử trong mỗi giao dịch về cùng một cấp độ (được gọi là cấp độ chung
trong bài báo này) và sau đó phân loại ra những mẫu phổ biến theo cấp độ như sau:
Những mẫu có chứa những phần tử đầu tiên (cùng cấp) sẽ là thành viên của nhóm
thứ 1, những mẫu có chứa các phần tử thứ hai và không có chứa phần tử đầu tiên sẽ
là thành viên của nhóm thứ 2, mẫu có chứa các phần tử thứ ba và không phần tử đầu
tiên và thứ hai sẽ là thành viên của nhóm thứ ba và vân vân.
Ví dụ như xem xét các ma trận bit của hình 8. Ma trận bit này có 6 phần tử
mà được sắp xếp theo thứ tự alphabets (ở đây thứ tự sắp xếp chung là dựa vào
alphabets). Chúng tôi phân chia mẫu rút trích của ma trận bit này thành 6 loại khác
nhau như sau:
(1) Những mẫu chứa a.
(2) Những mẫu chứa b và không chứa a.
(3) Những mẫu chứa c và không chứa a và b
(4) Những mẫu chứa d và không chứa a và b và c
21
(5) Những mẫu chứa e và không chứa a và b và c,d
(6) Những mẫu chứa f.
Chúng tôi sử dụng hướng tiếp cận này trong khai thác mẫu phổ biến song
song để giảm thời gian thực thi. Vì mục tiêu này, chúng tôi chia mỗi nhóm thành
mảng tâm thu và sử dụng mảng để xây dựng mẫu của từng nhóm. Vì vậy, phương
pháp của chúng tôi tăng mức độ song song.
4.2 Mảng tâm thu 2 chiều
Dựa trên hướng tiếp cận chia để trị, chúng tôi sử dụng một mảng tâm thu với
n-1 cell để khai thác loại thứ nhất của tập dữ liệu (tập phổ biến có chứa a). Hình 11
cho thấy cấu trúc của mảng này.
Hình 11- Khởi tạo ban đầu của mảng tâm thu để khai thác tập phần tử có
chứa “a”
Trong mảng này, chúng tôi sử dụng cấu trúc giống như mảng trong phần 4
nhưng input bao gồm phần tử “a” và mảng không có cell tương ứng với phần tử “a”.
Giá trị input di chuyển trong mảng và cell giống như mảng trong phần 4. Chúng tôi
phát triển n-1 mảng cho n–1 phần tử ( tất cả nhưng trừ phần tử cuối cùng) của tập
dữ liệu. Vì thế chúng ta có mảng hai chiều như hình 12 giảm được thời gian thực thi
rất nhiều.
22
Hình 12- Mảng tâm thu hai chiều khai thác tập dữ liệu phổ biến.
Vì chúng tôi tiếp tục tính toán mỗi lần hoàn thành từng dòng của mảng trong khi
input tiến đến phía bên trái “1” của mảng tâm thu, thời gian thực thi được cải thiện
nhiều. Hơn nữa chúng ta biết rằng nếu số số “1” trong y (array) nhỏ hơn minsup
tiến trình của y sẽ dừng lại. Vì vậy chúng ta có thể sắp xếp các phần tử theo độ phổ
biến của nó và xác suất dừng tiến trình tăng lên ở các hàng cao hơn, nhiều cells hơn
và do đó thuật toán của chúng tôi được cải thiện. Kết quả thực nghiệm của chúng tôi
cho thấy thời gian thực thi của thuật toán khai thác dữ liệu giảm rất nhiều.
4.3 Thuật toán khai thác dựa trên mảng tâm thu
Thông qua cách tiếp cận chia để trị, chúng tôi trình bày một thuật toán song
song mới, SABMA (Systolic Array Based Mining Algorithm), khai thác các mẫu
23
phổ biến của bộ dữ liệu hiệu quả. SABMA dùng 1 mảng tâm thu 2 chiều có n-1
dòng, với mỗi dòng “k” (mọi 1<=k<=n-1) chứa “n-k” cell. Hình 13 cho thấy thuật
toán khai thác dữ liệu dựa trên mảng tâm thu (SABMA).
Hình 13- Thuật toán SABMA
Tham số đầu vào của thuật toán này bao gồm m, số dòng của tập dữ liệu (là
số của cột ma trận bit chuyển đổi), n, số phần tử phổ biến (là số hàng của ma trận
bit chuyển đổi), y, input của mỗi hàng của mảng tâm thu, minsup, (người dùng chỉ
định) support tối thiểu của mẫu và bitMat, ma trận bit chuyển đổi từ tập dữ liệu.
Trong phần chính (trong khối chính “while’ của thuật toán), các thuật toán
xác định input cho các hàng khác nhau của mảng tâm thu, lặp đi lặp lại, sau đó gởi
24
chúng đến các cell thứ nhất. Trong mỗi vòng của vòng lặp, các thuật toán cũng
kiểm tra output của các cell cuối cùng để xuất các giá trị thành file.
Trong mỗi vòng lặp for bên trong, đầu tiên input y được khởi tạo với các
phần tử có giá trị tương ứng. Ví dụ khi chúng ta có 6 phần tử {a,b,c,d,e,f} trong tập
dữ liệu, n là 6 và có 5 vòng lặp cho 5 dòng. Trong lần lặp đầu tiên, y[1] được khởi
tạo với giá trị y[1] .IS=‘a’, y[i] bitVector =10110000 ( dòng tương ứng của của
phần tử a trong ma trân bit), và y[1].sw =1 cho dòng đầu tiên. Tương tự, quá trình
chuẩn bị giá trị input tương ứng cho dòng kế tiếp được lặp lại. Sau đó khởi tạo
input, y[1] di chuyển từ 1 cell đến cell khác trên hàng đầu tiên của mảng tâm thu.
Khi input này đến cell số ([log2t+1]+1), thuật toán kiểm tra độ phổ biến của các tập
phổ biến, và nếu nó là phổ biến, nó sẽ được xuất ra file. Ví dụ, dòng thứ 3 của mảng
tâm thu của hình 12, ở lần lặp thứ 2 của vòng lặp for, y[3] được khởi tạo
(‘c’,10011100,1) và di chuyển trên hàng thứ 3 của mảng tâm thu. Khi nó đến số cell
([log22+1]+1)=2, tương ứng với tập dữ liệu (ce) sẽ được kiểm tra có phổ biến hay
không, và ‘ce’ sẽ được xuất ra file output là tập dữ liệu phổ biến. Dựa trên quy luật
mảng tâm thu, sau khi hoàn tất dòng thứ 3 của mảng tâm thu, z bit của cell d,e và f
sẽ tương ứng là 0,1 và 1. Giá trị z hàng này chuẩn bị input cho tập phần tử kế tiếp sẽ
là phần tử c (cef). Vòng lặp bên ngoài(while) đảm bảo quét tất cả tập phần tử trong
mỗi dòng của mảng tâm thu.
25
26
CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM
Trong phần này, chúng tôi nghiên cứu hiệu suất thuật toán của chúng tôi. Vì
thuật toán của chúng tôi trích xuất tất cả các tập phổ biến, chúng tôi có độ chính xác
tối đa (100%) trong mẫu đã rút trích. Do đó chúng tôi so sánh hiệu suất về độ chính
xác và kích thước của các mẫu output mà chúng tôi so sánh thời gian thực thi của
phương pháp song song. Tất cả các thực nghiệm của chúng tôi thực hiện trên máy
tính có cấu hình 2.2GHz core 2 duo CPU, 2GB RAM và 120 GB ổ cứng. Thời gian
chạy bao gồm thời gian tính toán và thời gian IO. Mặc dù PP-tree[27] cho thấy nó
có hiệu suất tốt hơn so với kiểu liệt kê cột và hàng dựa trên thuật toán song song
như PFP-tree[23], LFP-tree[24] và kỹ thuật phân hoạch song song [25,26], nó đã
được cấu hình thực nghiệm trong các nghiên cứu trước đây. Do đó, chúng tôi so
sánh các thuật toán của chúng tôi với PP-tree (là thuật toán song song tốt nhất),
LFP-tree ( là thuật toán song song không chia sẻ tốt nhất), và DFP (là kỹ thuật phân
vùng song song tốt nhất).
Vì kích thước không giống nhau của bộ dữ liệu được sử dụng để nghiên cứu
hiệu suất của thuật toán, chúng tôi không xác định ngưỡng minsup với một giá trị
chính xác. Thay vào đó, minsup được xác định bằng tỉ lệ phần trăm số lượng giao
dịch. Chúng tôi sử dụng năm bộ dữ liệu thực tế để so sánh các thuật toán. Chúng
tôi sử dụng 5 bộ dữ liệu thực tiêu chuẩn từ FIMI[28] để so sánh các thuật toán. Hình
14 cho thất một số thông tin thống kê về dữ liệu được sử dụng để nghiên cứu hiệu
suất.
27
Hình 14- Đặc điểm bộ dữ liệu test
Lưu ý rằng số lượng các bộ xử lý được mô phòng bởi phần mềm của chúng
tôi cho mỗi hai thuật toán là bằng nhau trong mỗi lần chạy.
Hình 15-19 cho thấy kết quả chạy hai thuật toán SABMA (thuật toán song
song dựa trên mảng tâm thu) và PP-Tree ( thuật toán cây song song) trên bộ dữ liệu
chuẩn thực tế. Chúng tôi thấy rằng nếu tăng min support hiệu suất tất cả các thuật
toán sẽ giảm.
Hình 15- Tập dữ liệu moshroom
28
Hình 16 – Tập dữ liệu Pumsb
Hình 17 – Tập dữ liệu accident
29
Hình 18 – Tập dữ liệu retail
Hình 19 – Tập Dữ liệu Kosarak
30
Kết Luận
Một trong những vấn đề lớn trong khai thác tập phổ biến là sự bùng nổ số lượng kết
quả làm trực tiếp ảnh hưởng đến thời gian thực thi của thuật toán khai thác tập phổ
biến, khi xử lý các bộ dữ liệu quá lớn. Một cách hữu ích và phù hợp để giải quyết
vấn đề này là sử dụng các kỹ thuật song song và phân phối. Trong bài viết này,
chúng tôi giới thiệu một phương pháp song song để khai thác các tập phổ biến trong
bộ dữ liệu rất lớn. Trong phương pháp của chúng tôi, chúng tôi sử dụng một ma trận
bit để nén dữ liệu, tính toán các thuật toán khai thác dễ dàng hơn và là cơ sở cho xử
lý song song. Chúng tôi sử dụng các mảng tâm thu để khai thác các mẫu phổ biến
song song vì chi phí kết nối và tính toán rất thấp. Kết quả thử nghiệm của chúng tôi
cho thấy rằng thuật toán của chúng tôi đạt được hiệu quả khai thác tốt trên nhiều bộ
dữ liệu đầu vào khác nhau. Hơn nữa, nghiên cứu của chúng tôi cho thấy rằng thuật
toán này nhanh hơn so với các thuật toán tốt nhất trước đó.
31
TÀI LIỆU THAM KHẢO
[1] M.K. Sohrabi, A.A. Barforoush, Efficient colossal pattern mining in high
Dimensional datasets, Knowledge Based Systems
(2012),http://dx.doi.org/10.1016/j.knosys.2012.03.003.
[2] R. Agrawal, T. Imielinski, A. Swami, Mining association rules between sets of
items in large databases, in: Proceedings of the 1993ACM-SIGMOD International
Conference on Management of Data (SIGMOD’93), Washington, DC, 1993,
pp.207–216.
[3] R. Agrawal, R. Srikant, Fast algorithms for mining association rules, in: Proc.
1994 Int. Conf. Very Large Data Bases (VLDB’94), Santiago, Chile, September
1994, pp. 487–499.
[4] H. Mannila, H. Toivonen, A.I. Verkamo, Efficient algorithms for discovering
association rules, in: KDD’94, Seattle, WA, 1994, pp. 181–192.
[5] J. Han, J. Pei, Y. Yin, Mining frequent patterns without candidate generation, in:
Proceeding of the 2000 ACM-SIGMOD International Conference on Management
of Data (SIGMOD’00), Dallas, TX, 2000, pp. 1–12.
[6] R. Agarwal, C.C. Aggarwal, V.V.V. Prasad, A tree projection algorithm for
generation of frequent itemsets, Journal of Parallel and Distributed Computing
61 (2001) 350–371.
[7] J. Liu, Y. Pan, K. Wang, J. Han, Mining frequent item sets by opportunistic
projection, in: Proceeding of the 2002 ACM SIGKDD International Conference
on Knowledge Discovery in Databases (KDD’02), Edmonton, Canada, 2002, pp.
239–248.
[8] G. Grahne, J. Zhu, Efficiently using prefix-trees in mining frequent itemsets, in:
32
Proceeding of the ICDM’03 International Workshop on Frequent Itemset Mining
Implementations (FIMI’03), Melbourne, FL, 2003, pp. 123–132.
[9] M.J. Zaki, Scalable algorithms for association mining, IEEE Transaction of
Knowledge and Data Engineering 12 (2000) 372–390.
[10] N. Pasquier, Y. Bastide, R. Taouil, L. Lakhal, Discovering frequent closed
Itemsets for association rules, in: Proceeding of the 7th International
Conference on Database Theory (ICDT’99), Israel, 1999, pp. 398-416.
[11] J. Pei, J. Han, R. Mao, CLOSET an effective algorithm for mining frequent
closed
itemsets, in: Proceeding of the 2000 ACM-SIGMOD SIGMOD International
Workshop Data Mining and Knowledge Discovery (DMKD’00), Dallas, TX,
2000, pp. 11–20.
[12] M.J. Zaki, C.J. Hsiao, CHARM: an efficient algorithm for closed itemset
mining,
in: Proceeding of the 2002SIAM International Conference on Data Mining
(SDM’02), Arlington, VA, 2002, pp. 457–473.
[13] J. Wang, J. Han, J. Pei, CLOSET+: searching for the best strategies for mining
frequent closed itemsets, in: Proceeding of the 2003 ACM SIGKDD
International Conference on Knowledge Discovery and Data Mining
(KDD’03), Washington, DC, 2003, pp. 236–245.
[14] G. Grahne, J. Zhu, Efficiently using prefix-trees in mining frequent itemsets,
in:
Proceeding of the ICDM’03 International Workshop on Frequent Itemset
Mining Implementations (FIMI’03), Melbourne, FL, 2003, pp. 123–132.
33
[15] U. Yun, Mining lossless closed frequent patterns with weight constraints,
Knowledge Based Systems 20 (1) (2007) 86–97.
[16] F. Zhu, X. Yan, J. Han, P. Yu, H. Cheng, Mining colossal frequent patterns by
core
pattern fusion, in: Proceeding of the 2007 Pacific-Asia Conference on
Knowledge Discovery and Data Mining, 2007.
[17] Madhavi Dabbiru, Moghalla Shashi, An efficient approach to colossal
pattern.mining, in: International Journal of Computer Science and Network
Security (IJCSNS), 2010, pp. 304–312.
[18] J. Dong, M. Han, BitTableFI: an efficient mining frequent itemsets algorithm,
Knowledge Based Systems 20 (4) (2007) 329–335.
[19] W. Song, B. Yang, Z. Xu, Index-BitTableFI: an improved algorithm for mining
frequent itemsets, Knowledge Based Systems 20 (4) (2007) 329–335.
[20] Z. Xu, D. Gu, S. Wei, An efficient matrix algorithm for mining frequent
itemsets,
in: International Conference on Computational Intelligence and Software
Engineering, CiSE, 2009.
[21] B. Schlegel, R. Gemulla, W. Lehner, Memory-efficient frequent itemset
mining,
in: Proc. 14th International Conference on Extending Database Technology
(EDBT), 2011.
[22] M.J. Zaki, Parallel and distributed association mining: a survey, IEEE
Concurrency 7 (4) (1999) 14–25.
[23] A. Javed, A. Khokhar, Frequent pattern mining on message passing
34
multiprocessor systems, Distributed and Parallel Databases 16 (2004) 321–
334.
[24] K.-M. Yu, J. Zhou, W.C. Hsiao, Load balancing approach parallel algorithm
for
frequent pattern mining, in: PaCT, 2007, pp. 623–631.
[25] G. Buehrer, S. Parthasarathy, S. Tatikonda, T. Kurc, J. Saltz, Toward terabyte
pattern mining an architecture-conscious solution, in: PPoPP, 2007, pp. 2–12.
[26] D. Chen, C. Lai, W. Hu, W.G. Chen, Y. Zhang, W. Zheng, Tree partition based
parallel frequent pattern mining on shared memory systems, in: IEEE Parallel
and Distributed Processing Symposium, 2006.
[27] S.K. Tanbeer, C.F. Ahmed, B.-S. Jeong, Parallel and distributed algorithms for
frequent pattern mining in large databases, IETE Technical Review (2010).
[28] Frequent Itemset Mining Implementations Repository. <http://
fimi.cs.helsinki.fi/>.
[29] H.T. Kung, C.E. Leiserson, Algorithms for VLSI processor arrays, in: C.
Mead, L.
Conway (Eds.), Introduction to VLSI Systems, Addison-Wesley, 1979.
35