Để vừa phát hiện các tập phổ biến cũng như các tập phần tử hiếm, giá trị ngưỡng hỗ trợ phải thiết lập rất thấp, khi đó gặp phải một vấn đề đó là khi đặt ngưỡng hỗ trợ tối thiểu thấp, lúc
GIỚI THIỆU
Lý do chọn đề tài
Hiện nay với sự phát triển như vũ bão của công nghệ thông tin và việc ứng dụng công nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế xã hội, trong nhiều năm qua lượng thông tin của nhân loại được lưu trữ trong các hệ thống cơ sở dữ liệu ngày một tăng, sự tích lũy dữ liệu này xảy ra với một tốc độ bùng nổ Lượng dữ liệu khổng lồ này thực sự là một nguồn “tài nguyên” rất giá trị bởi thông tin là yếu tố then chốt trong nhiều lĩnh vực Khai phá dữ liệu (data mining) đã giúp người sử dụng thu được những tri thức hữu ích từ những cơ sở dữ liệu và các kho dữ liệu khổng lồ
Hiện nay lĩnh vực khai phá dữ liệu đã và đang được ứng dụng rộng rãi trong rất nhiều lĩnh vực Trong lĩnh vực khai phá dữ liệu, luật kết hợp (association rule) được dùng để chỉ sự kết hợp hay tương quan giữa các phần tử dữ liệu "điều kiện → hệ quả" giữa các phần tử dữ liệu (chẳng hạn, sự xuất hiện của tập mặt hàng này "kéo theo" sự xuất hiện của tập mặt hàng khác) trong một tập bao gồm nhiều đối tượng dữ liệu (chẳng hạn, tập các giao dịch mua hàng) Phát hiện luật kết hợp là phát hiện các mối quan hệ đó trong phạm vi của một tập dữ liệu đã cho
Lý thuyết luật kết hợp được Rakesh Agrawal và cộng sự giới thiệu lần đầu tiên vào năm 1993 [1] và đã trở thành một trong những hướng nghiên cứu khai phá dữ liệu quan trọng, đặc biệt trong những năm gần đây Phát hiện luật kết hợp đã được ứng dụng thành công trong nhiều lĩnh vực kinh tế - xã hội khác nhau như thương mại, y tế, sinh học, tài chính-ngân hàng…
Trong các nghiên cứu liên quan đến phát hiện luật kết hợp trong [1, 2, 12, 16] các tác giả với hướng tiếp cận sử dụng một ngưỡng hỗ trợ trong việc phát hiện các luật kết hợp Tuy nhiên việc sử dụng một ngưỡng hỗ trợ dẫn đến vấn đề liên quan đến phần tử hiếm (Rare item problem) [10] Luật kết hợp liên quan đến phần tử hiếm mặc dù tần suất xảy ra thấp nhưng trong nhiều trường hợp chúng lại là các luật rất có giá trị, chẳng hạn như trong công trình nghiên cứu [17] đã chỉ ra luật kết hợp rất có ý nghĩa là luật kết hợp hiếm “ăn chay”→ “bệnh tim mạch” trong cơ sở dữ liệu điều trị bệnh nhân của một bệnh viện tại Pháp
Mục tiêu và giới hạn của đề tài
Trong phương pháp phát hiện luật kết hợp sử dụng một ngưỡng hỗ trợ sẽ gặp vấn đề đó là nếu đặt ngưỡng hỗ trợ tối thiểu nhỏ khi đó các tập phổ biến sẽ được sinh ra khá lớn điều này làm cho chi phí cho việc tìm kiếm sẽ tăng lên Tuy nhiên, nếu đặt ngưỡng hỗ trợ lớn khi đó có thể sẽ dẫn đến việc bỏ qua các tập phần tử hiếm Đề tài luận văn này tập trung nghiên cứu, xây dựng hệ thống và đánh giá phương pháp khai phá luật kết hợp sử dụng đa ngưỡng hỗ trợ tối thiểu nhằm tìm ra các luật kết hợp liên quan trên tập các tập dữ liệu kiểm nghiệm.
Cấu trúc luận văn
Chương 1, Giới thiệu: giới thiệu tổng quan về đề tài, mục tiêu nghiên cứu và giới hạn của đề tài
Chương 2, Kiến thức nền tảng: trình bày tổng quan các khái niệm cơ bản về khai phá luật kết hợp, lập trình song song, các công trình nghiên cứu liên quan trong vấn đề khai phá luật kết hợp
Chương 3, Tổng thuật các công trình liên quan: khảo sát các công trình nghiên cứu đã đăng tải liên quan
Chương 4, Phương pháp giải quyết vấn đề: trình bày phương pháp khai phá luật kết hợp sử dụng đa ngưỡng hỗ trợ tối thiểu, hướng tiếp cận song song trong giai đoạn tìm tập phổ biến
Chương 5, Thực nghiệm: chạy thực nghiệm, trình bày các kết quả thực nghiệm, so sánh và đánh giá hệ thống trên các tập dữ liệu khác nhau
Chương 6, Kết luận: đưa ra kết luận và hướng phát triển tiếp theo của đề tài trong tương lai
KIẾN THỨC NỀN TẢNG
Một số khái niệm cơ bản
2.1.1 Phát hiện tri thức và khai phá dữ liệu
Quá trình khai phá tri thức thường gồm có các bước chính sau:
Trích chọn dữ liệu (data selection): là bước trích chọn những tập dữ liệu cần được khai phá từ các tập dữ liệu lớn (databases, data warehouses, data repositories) ban đầu theo một số tiêu chí nhất định
Tiền xử lý dữ liệu (data preprocessing): là bước làm sạch dữ liệu (xử lý với dữ liệu không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán, v.v.), rút gọn dữ liệu (sử dụng hàm nhóm và tính tổng, các phương pháp nén dữ liệu, sử dụng histograms, lấy mẫu, v.v.), rời rạc hóa dữ liệu (rời rạc hóa dựa vào histograms, dựa vào entropy, dựa vào phân khoảng, v.v.) Sau bước này, dữ liệu sẽ nhất quán, đầy đủ, được rút gọn, và được rời rạc hóa
Biến đổi dữ liệu (data transformation): đây là bước chuẩn hóa và làm mịn dữ liệu để đưa dữ liệu về dạng thuận lợi nhất nhằm phục vụ cho các kỹ thuật khai phá ở bước sau
Khai phá dữ liệu (data mining): đây là bước áp dụng những kỹ thuật khai phá (phần nhiều là các kỹ thuật của machine learning) để khai phá, trích chọn được những mẫu (patterns) thông tin, những mối liên hệ (relationships) đặc biệt trong dữ liệu Đây được xem là bước quan trọng và tốn nhiều thời gian nhất của toàn quá trình KDD
Biểu diễn và đánh giá tri thức (knowledge representation and evaluation): những mẫu thông tin và mối liên hệ trong dữ liệu đã được khai phá ở bước trên được chuyển dạng và biểu diễn ở một dạng gần gũi với người sử dụng như đồ thị, cây, bảng biểu, luật, v.v Đồng thời bước này cũng đánh giá những tri thức khám phá được theo những tiêu chí nhất định
2.1.2 Các kỹ thuật và hướng tiếp cận chính trong khai phá dữ liệu
Các hướng tiếp cận của KPDL có thể được phân chia theo chức năng hay lớp các bài toán khác nhau Sau đây là một số hướng tiếp cận chính:
4 - Phân lớp và dự đoán (classification & prediction): xếp một đối tượng vào một trong những lớp đã biết trước Ví dụ: phân lớp vùng địa lý theo dữ liệu thời tiết
Hướng tiếp cận này thường sử dụng một số kỹ thuật của machine learning như cây quyết định (decision tree), mạng nơ ron nhân tạo (neural network), v.v
Phân lớp còn được gọi là học có giám sát (supervised learning)
- Luật kết hợp (association rules): là dạng luật biểu diễn tri thức ở dạng khá đơn giản Ví dụ: “60 % nam giới vào siêu thị nếu mua bia thì có tới 80% trong số họ sẽ mua thêm thịt bò khô” Luật kết hợp được ứng dụng nhiều trong lĩnh vực kinh doanh, y học, tin-sinh, tài chính & thị trường chứng khoán, v.v
- Khai phá chuỗi theo thời gian (sequential/temporal patterns): tương tự như khai phá luật kết hợp nhưng có thêm tính thứ tự và tính thời gian Hướng tiếp cận này được ứng dụng nhiều trong lĩnh vực tài chính và thị trường chứng khoán vì nó có tính dự báo cao
- Phân cụm (clustering/segmentation): xếp các đối tượng theo từng cụm (số lượng cũng như tên của cụm chưa được biết trước Phân cụm còn được gọi là học không giám sát (unsupervised learning)
2.1.3 Phân loại các hệ thống khai phá dữ liệu
Khai phá dữ liệu là một công nghệ tri thức liên quan đến nhiều lĩnh vực nghiên cứu khác nhau như cơ sở dữ liệu, máy học (machine learning), giải thuật, trực quan hóa (visualization), v.v Có thể phân loại các hệ thống khai phá dữ liệu dựa trên các tiêu chí khác nhau
- Phân loại dựa trên kiểu dữ liệu được khai phá: cơ sở dữ liệu (CSDL) giao dịch (transactional database), CSDL quan hệ (relational database), kho dữ liệu (data warehouse), CSDL hướng đối tượng, CSDL không gian (spatial database), CSDL đa phương tiện (multimedia database), CSDL Text và WWW, v.v
- Phân loại dựa trên dạng tri thức được khám phá: tóm tắt và mô, luật kết hợp, phân lớp (classification), phân cụm, khai phá chuỗi , v.v
- Phân loại dựa trên kỹ thuật được áp dụng: hướng CSDL (database oriented), phân tích trực tuyến (OnLine Analytical Processing – OLAP), machine learning (cây quyết định, mạng nơ ron nhân tạo, k-min, giải thuật di truyền, máy vectơ hỗ trợ - SVM, tập thô, tập mờ, v.v.), trực quan hóa visualization), .v.v
5 - Phân loại dựa trên lĩnh vực được áp dụng: kinh doanh bán lẻ, tài chính và thị trường chứng khoán, truyền thông, tin sinh học, y học, ,web mining, v.v.
Khai phá luật kết hợp
Tập phần tử (itemset): một tập hợp gồm một hoặc nhiều phần tử (item).Ví dụ tập phần tử: {Milk, Bread, Diaper}
Tập phần tử mức k (k-itemset): Một tập gồm có k phần tử
Cơ sở dữ liệu giao dịch: Cho I = {I 1 , I 2 , , I n } là một tập các phần tử Gọi D là một tập CSDL giao dịch (transaction database) xác định trên I Một giao dịch (transaction) T là một tập con của I, T I Mỗi giao dịch được gán một định danh TID Một tập phần tử con X I, gồm k phần tử phân biệt được gọi là một k- tập phần tử Giao dịch T gọi là chứa tập phần tử X nếu và chỉ nếu X T
TID (mã giao dịch) Itemset (tập các phần tử)
Bảng 2.1 Ví dụ cơ sở dữ liệu giao dịch Định nghĩa luật kết hợp: Cho tập phần tử I = {I 1 ,I 2 ,…, I n } Một luật kết hợp là một phép kéo theo, dạng AB, trong đó: AI, BI, và AB = Độ hỗ trợ:
Cho tập phần tử A, A I Độ hỗ trợ (support) của tập phần tử A trong CSDL giao dịch D, được ký hiệu là sup(A), là tỷ lệ phần trăm số giao dịch trong CSDL có chứa A trên tổng số các giao dịch trong D:
6 Ví dụ trong bảng CSDL sau:
Số giao dịch chứa tập phần tử X = {A, B, C} là 1
Số giao dịch trong CSDL là 4
4 Độ hỗ trợ (support) của luật kết hợp XY, ký hiệu là sup(XY), là độ hỗ trợ của tập phần tử XY: sup(XY) = sup(XY) Độ hỗ trợ của luật kết hợp XY chính là xác suất P(XY) của sự xuất hiện đồng thời X và Y trong một giao dịch Độ hỗ trợ (support) của luật XY khi đó được biểu diễn bằng: support(XY) = P(XY)
Luật XY có trong tập giao dịch D với độ hỗ trợ s (support) là tỷ lệ các giao dịch trong D mà có chứa cả X và Y, tức là phép hợp XY, so với tổng số giao dịch trong D Tỷ lệ này tương đương với xác suất P(XY) Chẳng hạn, độ hỗ trợ s = 1% nghĩa là có 1% số giao dịch trên tổng số giao dịch trong CSDL thể hiện X và Y cùng có mặt Độ tin cậy:
Luật kết hợp có dạng X c Y , trong đó X, Y là các tập phần tử thỏa mãn điều kiện X Y =, X được gọi là tiền đề, Y được gọi là kết quả của luật, c là độ tin cậy (confidence) của luật
Luật XY có độ tin cậy c trong tập giao tác D, với c là tỷ lệ các giao dịch trong D chứa X và cũng chứa cả Y, so với tổng số giao dịch có chứa X
7 Độ tin cậy (confidence) của luật kết hợp XY, ký hiệu là conf(XY), là tỷ lệ phần trăm giữa số giao dịch chứa XY và số giao dịch chứa X trong CSDL giao dịch D sup( )
Độ tin cậy của luật kết hợp XY chính là xác suất có điều kiện P(Y/X):
Xác suất có điều kiện P(Y/X) – xác xuất mà một giao dịch có chứa Y với điều kiện giao dịch đó đã chứa X Ví dụ với độ tin cậy confidence = 50% nghĩa là trong một giao dịch nếu X đã có mặt thì khả năng có tới 50% là Y sẽ có mặt trong đó
Khi đó độ tin cậy của luật XY được biểu diễn bằng: sup( )
2.2.1 Các tính chất của luật kết hợp
Luật kết hợp có một số tính chất sau:
- Tính chất 1: Không hợp các luật kết hợp
Nếu có hai luật X Y và YZ trong D thì không nhất thiết XYZ là đúng
Xét trường hợp X Z = và các giao dịch trong D hỗ trợ Z nếu và chỉ nếu chúng hỗ trợ mỗi X hoặc Y, khi đó luật XYZ có độ hỗ trợ 0%
Tương tự : XY XZ thì không nhất thiết XYZ là đúng
- Tính chất 2: Không tách luật Nếu XYZ thì XZ và YZ chưa chắc đã xảy ra
8 Ví dụ trường hợp Z có mặt trong một giao dịch chỉ khi cả hai X và Y cũng có mặt, tức là sup(XY) = sup(Z), nếu độ hỗ trợ của X và Y thỏa mãn s(X) > s(XY) và s(Y)
> s(XY) thì hai luật riêng biệt sẽ không đủ độ tin cậy
- Tính chất 3: Các luật kết hợp không có tính bắc cầu
Nếu XY và YZ thì không thể suy ra XZ
Nếu luật X (L - X) không thoả mãn độ tin cậy cực tiểu thì luật Y (L - Y) cũng không thoả mãn, với X, Y, L là các tập phần tử và Y X
Ta có s(Y) ≥ s(X) nên: c(Y(L-Y))= (L) ( ) min_conf
Nếu có luật (L-X) X thỏa mãn độ tin cậy thì ta có luật (L-Y) Y cũng thỏa mãn độ tin cậy, với X, Y, L là các tập phần tử và Y X
2.2.2 Một số hướng tiếp cận luật kết hợp
Luật kết hợp cho đến nay đã được nghiên cứu và phát triển theo nhiều hướng khác nhau Dưới đây là một số hướng chính:
- Luật kết hợp nhị phân (Binary association rule hay Boolean association rule): là hướng nghiên cứu đầu tiên của luật kết hợp Theo luật này, các phần tử chỉ quan tâm là xuất hiện hay không trong cơ sở dữ liệu giao dịch Thuật toán tiêu biểu nhất của khai phá dạng luật này là thuật toán Apriori [2] và các biến thể của thuật toán này
Ví dụ luật: “Mua bánh mì = ‘yes’ mua đường= ‘yes’ => mua sữa = ‘yes’ mua bơ
= ‘yes’, với độ hỗ trợ 20% và độ tin cậy 80%”
- Luật kết hợp có thuộc tính số và thuộc tính hạng mục (Quantitative and categorial association rule): các cơ sở dữ liệu thực tế thường có thuộc tính đa dạng như nhị phân, số, mục (categorial) Vì vậy để khai phá luật kết hợp với các cơ sở dữ liệu này các nhà nghiên cứu đề xuất một số phương pháp rời rạc hóa nhằm chuyển dạng luật này về dạng nhị phân để có thể áp dụng các thuật toán đã có [13] Một ví dụ
9 về dạng luật này là: “Tuổi ‘30 39’ Thu nhập ‘42000 48000’=> Mua tivi có độ phân giải cao”
- Luật kết hợp tiếp cận theo hướng tập thô (mining association rule base on rough set): tìm kiếm luật kết hợp dựa trên lí thuyết tập thô
- Luật kết hợp nhiều mức (multi-level association rules): ngoài các dạng luật trên, các nhà nghiên cứu còn đề xuất một hướng nghiên cứu nữa về luật kết hợp là luật kết hợp nhiều mức [7] [15] Luật kết hợp nhiều mức liên quan đến các phần tử, thuộc tính ở các mức trừu tượng khác nhau, ví dụ như các luật:
Tuổi(X, “30 39”) → Mua(X, “laptop computer”) ƒ Tuổi(X, “30 39”) → Mua(X, “computer”)
- Luật kết hợp mờ (fuzzy association rule): Với những khó khăn gặp phải khi rời rạc hóa các thuộc tính số, các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục những hạn chế trên và chuyển luật kết hợp về một dạng tự nhiên hơn, gần gũi hơn với người sử dụng [3][4] Một ví dụ về dạng luật này: “Ho khan =
‘yes’ sốt cao đau cơ = ‘yes’ khó thở = ‘yes’ => Bị nhiễm SARS = ‘yes’, với độ hỗ trợ 4% và độ tin cậy 85%” Trong luật này, điều kiện sốt cao ở vế trái của luật là một thuộc tính đã được mờ hóa.
Lập trình song song trên hệ thống đa nhân
Xử lý song song hay tính toán song song là quá trình xử lý thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết một bài toán Trái ngược với xử lý tuần tự, đòi hỏi phải xử lý các công việc theo thứ tự tuần tự
Có hai kiểu song song đó là:
Song song về dữ liệu (data parallelism): là cơ chế sử dụng nhiều đơn vị xử lý thực hiện cùng một thao tác trên nhiều đơn vị dữ liệu
Song song lệnh (control parallelism): là cơ chế trong đó nhiều thao tác khác nhau tác động lên nhiều đơn vị dữ liệu khác nhau một cách đồng thời
Ngày nay, các bộ vi xử lý đa nhân (multi-core) cho phép nhiều luồng xử lý (thread) ngày càng phổ biến Khi lập trình song song người lập trình tập trung vào mô hình lập trình đa luồng (multi-thread) để tăng tốc độ xử lý và sử dụng tài nguyên của
10 hệ thống Có rất nhiều mô hình lập trình song song như mô hình dùng bộ nhớ chia sẻ (như Pthreads và OpenMP), mô hình lập trình truyền thông điệp (như Message Passing Interface (MPI)) Những mô hình này cung cấp công cụ mạnh mẽ cho lập trình song song, chẳng hạn như mô hình truyền thông điệp là một trong những mô hình lâu đời và được ứng dụng rộng rãi trong lập trình song song Tuy nhiên đối với mô hình lập trình chia sẻ bộ nhớ cổ điển, chương trình được song song hóa cho các luồng, người lập trình phải quản lý công việc tạo ra các luồng và phân công công việc cho các luồng, quản lý sự tồn tại các luồng, bên cạnh đó cần hiểu rõ về mặt kiến trúc vật lý (chẳng hạn như có bao nhiều lõi của bộ xử lý là đang sẵn sàng) để có thể đạt được những cải tiến về mặt hiệu năng
2.3.2 Parallel Extensions trong Net Framework
Parallel Extensions là một sự bổ sung cho các thư viện của Microsoft bắt đầu từ nền tảng NET Framework 4.0 Parallel Extensions gồm có Task Parallel Library (TPL), Parallel LINQ và nhiều lớp hỗ trợ khác cho việc lập trình xử lý song song trên nền tảng Net Những tính năng này giúp đơn giản hóa việc phát triển lập trình song song, loại bỏ sự phức tạp khi viết mã song song của các nhà phát triển để giúp họ tập trung vào giải quyết các vấn đề chính yếu về mặt nghiệp vụ
Lớp Parallel cung cấp các phương thức Parallel.For and Parallel.Foreach cho phép song song hóa các tác vụ vòng lặp truyền thống Với chương trình tuần tự, các vòng lặp for, foreach sẽ thực hiện tuần tự từng vòng lặp cho đến khi kết thúc, trong trường hợp CPU rỗi thì vẫn phải chờ sau khi thực hiện xong một vòng lặp rồi mới thực hiện vòng lặp tiếp theo Khi sử dụng các vòng lặp song song sẽ khắc phục được nhược điểm của lập trình tuần tự, các vòng lặp sẽ được thực thi đồng thời giúp tăng hiệu năng tính toán
Hình 2.1 Minh họa giải thuật tuần tự và song song với sự hỗ trợ của thư viện
11 Xét ví dụ nhân hai ma trận sau đây:
Giải thuật nhân ma trận A và B với giải thuật tuần tự như sau: void MultiplyMatricesSequential(double[,] matA, double[,] matB, double[,] result){ for (int i = 0; i < matARows; i++)
{ for (int j = 0; j < matBCols; j++) { double temp = 0; for (int k = 0; k < matACols; k++) { temp += matA[i, k] * matB[k, j];
Với sự hỗ trợ lập trình song song trên nền tảng Net, vòng lặp tuần tự trên được viết lại theo hướng tiếp cận song song hóa như sau: void MultiplyMatricesParallel(double[,] matA, double[,] matB, double[,] result)
{ for (int j = 0; j < matBCols; j++) { double temp = 0; for (int k = 0; k < matACols; k++) { temp += matA[i, k] * matB[k, j];
Trong chương 4 chúng tôi sẽ trình bày hướng tiếp cận song song hóa trong giai đoạn tìm các tập phổ biến dựa vào thư viện TPL của Net Framework
TỔNG THUẬT CÁC CÔNG TRÌNH LIÊN QUAN
Phát hiện luật kết hợp sử dụng đơn ngưỡng hỗ trợ tối thiểu
Trong hướng tiếp cận tìm tất cả các tập phổ biến để từ đó phát hiện ra các luật kết hợp từ các tập phổ biến, công trình nghiên cứu [2] đã đề xuất thuật toán Apriori để tìm tất cả các tập phổ biến từ cơ sở dữ liệu, đây là thuật toán tìm tập phổ biến nổi tiếng
- k-itemsets : Tập k – phần tử dữ liệu
- L k : Tập các k - tập phần tử phổ biến Mỗi một phần tử của tập này có 2 trường: tập phần tử và độ hỗ trợ
- C k : Tập các k - tập dữ liệu ứng cử viên (tiềm năng là tập phổ biến) Mỗi một phần tử của tập này có 2 trường: tập phần tử và độ hỗ trợ
Input: Tập các giao dịch D, giá trị ngưỡng support tối thiểu minsup
Output: L- tập phần tử phổ biến trong D
L 1 ={large 1-itemset (tập 1- mục phổ biến)} for (k=2; L k-1 ; k++) do begin
C k =apriori-gen(L k-1 ) ; //sinh ra tập ứng cử viên từ L k-1 for (mỗi một giao dịch TD) do begin
C T = subset(C k , T); //lấy tập con của T là ứng cử viên trong C k for (mỗi ứng cử viên c C T ) do
14 c.count++; //tăng bộ đếm tần suất thêm 1 đơn vị end;
L k = {c Ck| c.count minsup} end; return k L k
Trong thuật toán này, giai đoạn đầu sẽ tiến hành đếm support cho các phần tử (item) Để xác định tập 1 - phần tử phổ biến (L1), trong giai đoạn này chỉ giữ lại các phần tử mà giá trị độ hỗ trợ của nó lớn hơn hoặc bằng minsup
Trong các giai đoạn thứ k sau đó (k > 1), mỗi giai đoạn gồm có 2 pha Trước hết các large(k-1)-itemset (tập k-1- phần tử phổ biến) trong tập L k-1 được sử dụng để sinh ra các tập ứng cử viên (candidate itemset) C k , bằng cách thực hiện hàm Apriori_gen
Hàm Apriori_gen với đối số là L k-1 (tập các large(k-1)-itemset) sẽ cho lại kết quả là một superset, tập của tất cả các large k – itemset
Trong giải thuật Apriori, bước loại bỏ (prunning) dựa trên độ hỗ trợ được dựa theo nguyên tắc sau:
Nếu một tập phần tử là thường xuyên, thì tất cả các tập con (subsets) của nó đều là các tập phần tử thường xuyên
Nếu một tập phần tử là không thường xuyên (not frequent) thì tất cả các tập cha (supersets) của nó đều là các tập mục không thường xuyên
15 Ví dụ: Xét cơ sở dữ liệu chứa các giao dịch sau:
Trong bước lặp đầu tiên, mỗi phần tử của tập dữ liệu đều được xem là ứng viên tập 1 phần tử C 1 Giải thuật sẽ duyệt qua tất cả các giao dịch để đếm số lần xuất hiện của mỗi phần tử này
Giả sử ngưỡng hỗ trợ tối thiểu được thiết lập là 2 (tức min_sup = 2) Tập phổ biến
L 1 được xác định từ tập C 1 , trong ví dụ này tất cả các phần tử trong tập ứng viên C 1 đều thỏa ngưỡng hỗ trợ tối thiểu
Tiếp theo để tìm tập phổ biến 2 phần tử L 2 , giải thuật sẽ thực hiện phép nối L 1 L 1 để sinh ra các tập ứng viên C 2 Không có ứng viên nào trong tập C 2 bị loại bỏ trong giai đoạn cắt vì mỗi tập con của ứng viên trong C 2 đều là tập phổ biến Độ hỗ trợ của các ứng viên trong tập C 2 sẽ được tính toán, bước tiếp theo sẽ thu được tập phổ biến L 2 từ các ứng viên trong C 2 mà thỏa điều kiện ngưỡng hỗ trợ tối thiểu
16 Duyệt D tìm số lần xuất hiện của mỗi ứng viên
So sánh độ hỗ trợ của các ứng viên với ngưỡng hỗ trợ tối thiểu
Sinh tập ứng viên C 2 từ L 1
So sánh độ hỗ trợ của các ứng viên với ngưỡng hỗ trợ tối thiểu
Sinh tập ứng viên C 3 từ L 2
Duyệt D tìm số lần xuất hiện của mỗi ứng viên
So sánh độ hỗ trợ của các ứng viên với ngưỡng hỗ trợ tối thiểu
Hình 3.1 Sinh các tập ứng viên và tập phổ biến với ngưỡng hỗ trợ tối thiểu bằng
Tập phần tử Số lần xuất hiện {I1}
Tập phần tử Số lần xuất hiện {I1}
Tập phần tử Số lần xuất hiện {I1,I2}
2 2 Tập phần tử Số lần xuất hiện {I1, I2, I3}
17 Quá trình sinh tập ứng viên C3 được mô tả như sau: a) Thực hiện phép nối L 2 L 2 ta thu được L 2 L 2 = {{I1, I2}, {I1, I3}, {I1, I5}, {I2, I3}, {I2, I4}, {I2, I5}}
{{I1, I2}, {I1, I3}, {I1, I5}, {I2, I3}, {I2, I4}, {I2, I5}} b) Thực hiện bước cắt theo tính chất Apriori: Tất cả các tập con không rỗng của một tập phổ biến thì phải là tập phổ biến
Các tập con 2 phần tử của {I1, I2, I3} là {I1, I2}, {I1, I3} và {I2, I3} Tất cả các tập con này đều thuộc L 2 do đó sẽ giữ {I1, I2, I3} trong C 3
Các tập con 2 phần tử của {I1, I2, I5} là {I1, I2}, {I1, I5} và {I2, I5} Tất cả các tập con này đều thuộc L2 do đó sẽ giữ {I1, I2, I5} trong C3
Các tập con 2 phần tử của {I1, I3, I5} là {I1, I3}, {I1, I5} và {I3, I5} {I3, I5} không thuộc L2 do đó nó không phải là tập phổ biến vì vậy {I1, I3, I5} sẽ bị loại khỏi C3
Các tập con 2 phần tử của {I2, I3, I4} là {I2, I3}, {I2, I4} và {I3, I4} {I3, I4} không thuộc L 2 do đó nó không phải là tập phổ biến vì vậy {I2, I3, I4} sẽ bị loại khỏi C 3
Các tập con 2 phần tử của {I2, I3, I5} là {I2, I5}, {I2, I5} và {I3, I5} {I3, I5} không thuộc L2 do đó nó không phải là tập phổ biến vì vậy {I2, I3, I5} sẽ bị loại khỏi C3
Các tập con 2 phần tử của {I2, I4, I5} là {I2, I4}, {I2, I5} và {I4, I5} {I4, I5} không thuộc L2 do đó nó không phải là tập phổ biến vì vậy {I2, I4, I5} sẽ bị loại khỏi C 3 c) Do đó ta thu được C 3 = {{I1, I2, I3}, {I1, I2, I5}} sau giai đoạn cắt
Duyệt qua cơ sở dữ liệu D để tìm số lần xuất hiện của các phần tử trong tập ứng viên C 3 và so sánh với ngưỡng hỗ trợ tối thiểu ta thu được tập L 3 = {{I1, I2, I3}, {I1, I2, I5}}
Giải thuật tiếp tục thực hiện phép nối L 3 L 3 để sinh ra tập ứng viên 4 phần tử C 4 Kết quả của phép nối thu được tập phần tử { I1, I2, I3, I5}, tập phần tử này bị loại vì tập con của tập này là {I2, I3, I5} không phải là tập phổ biến Do đó C 4 = vì vậy giải thuật tìm tất cả các tập phổ biến sẽ dừng ở đây
Phát hiện luật kết hợp sử dụng đa ngưỡng hỗ trợ tối thiểu
Trong công trình nghiên cứu của H Yun và đồng nghiệp [18] đã đề xuất thuật toán RSAA (Relative Support Apriori Algorithm) Trong giải thuật RSAA, nhóm tác giả sử dụng các tham số sau:
(1) Độ hỗ trợ thứ nhất: là giá trị do người sử dụng đưa vào để phát hiện các tập phần tử phổ biến
(2) Độ hỗ trợ thứ hai: là giá trị do người sử dụng đưa vào dùng để phát hiện các phần tử hiếm (độ hỗ trợ này luôn nhỏ hơn độ hỗ trợ thứ nhất)
Bên cạnh độ hỗ trợ thứ nhất và độ hỗ trợ thứ hai trong giải thuật RSAA nhóm tác giả sử dụng thêm độ hỗ trợ quan hệ (relative support) Độ hỗ trợ quan hệ được định nghĩa như sau:
Cho tập dữ liệu I = {i 1 , i 2 ,…, ik} với độ hỗ trợ của phần tử dữ liệu i được ký hiệu là sup(i) khi đó độ hỗ trợ quan hệ của một tập phần tử được tính toán theo công thức sau:
Rsup{i 1 , i 2 ,…, i k ) = max( sup(i 1 , i 2 ,…, i k )/ sup(i 1 ), sup(i 1 , i 2 ,…, i k )/ sup(i 2 ), …, sup(i 1 , i 2 ,…, i k )/ sup(i k ))
Công trình nghiên cứu trong [8] các tác giả đã sử dụng thông số SD (support different) để xác định độ hỗ trợ cực tiểu cho các phần tử dữ liệu Với mỗi phần tử dữ liệu i j , ngưỡng hỗ trợ tối thiểu được tính như sau:
MIS(i j ) = S(i j ) – SD khi (S(i j ) – SD) > LS
= LS trong các trường hợp khác Đối với một tập dữ liệu, giá trị SD được tính:
SD = λ(1 − α) với λ: tham số liên quan đến tần số xuất hiện của phần tử dữ liệu α: giá trị được thiết lập bởi người dùng
Các tác giả đã đề xuất thuật toán IMSApriori (Improved Multiple Support Apriori Algorithm) dựa trên hướng tiếp cận Apriori để tìm các tập phần tử phổ biến [8]
Nhóm tác giả Hu và Chen trong [6] đã đề xuất cấu trúc dữ liệu là cây MIS (MIS Tree) dựa trên cách tiếp cận xây dựng FP Tree [5] trong đó điểm khác biệt quan trọng giữa cây FP Tree và MIS Tree đó là cây FP Tree chỉ chứa tập các phần tử phổ biến
19 trong khi MIS Tree ngoài chứa tập các phần tử phổ biến còn chứa cả tập các phần tử mà có độ hỗ trợ của các tập này không nhỏ hơn giá trị MIN (MIN: giá trị MIS nhỏ nhất của tất cả các phần tử trong tập dữ liệu) Nhóm tác giả đã đề xuất giải thuật CFP- Growth [6] trong việc tìm ra các luật kết hợp sử dụng đa ngưỡng hỗ trợ tối thiểu
Hình 3.2 Ví dụ cây MIS Tree [6]
PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Phương pháp tìm các tập phổ biến sử dụng đa ngưỡng hỗ trợ tối thiểu
Trong đề tài này sử dụng hướng tiếp cận trong [9] để tìm các tập phổ biến sử dụng đa ngưỡng hỗ trợ tối thiểu Mỗi phần tử i trong tập dữ liệu sẽ được gán một giá trị ngưỡng hỗ trợ tối thiểu MIS (minimum item supports)
Với tập phần tử I = {i 1 , i 2 ,…, i n ), ký hiệu MIS(i p ) là giá trị MIS của phần tử i p (i p I) Giá trị MIS của tập phần tử A = {i 1 , i 2 ,…, i k } (1 ≤ k ≤ n) khi đó được định nghĩa như sau:
MIS(A) = min[MIS(i 1 ), MIS(i 2 ), , MIS(i k )]
Trong giải thuật tìm kiếm các tập phổ biến dựa theo hướng tiếp cận Apriori sử dụng tính chất “downward closed”: Nếu một tập phần tử thỏa mãn giá trị minsup (ngưỡng hỗ trợ tối thiểu) thì tất cả các tập con của nó cũng thỏa mãn giá trị minsup này Tính chất này đóng vai trò quan trọng ở giai đoạn loại bỏ các tập phần tử không thỏa mãn giá trị ngưỡng hỗ trợ tối thiểu Tuy nhiên trong phương pháp sử dụng đa ngưỡng hỗ trợ tối thiểu, tính chất này không còn được sử dụng nữa
Ví dụ 4.1: Xét tập dữ liệu có 4 phần tử: 1, 2, 3 và 4 Ngưỡng hỗ trợ tối thiểu của 4 phần tử như sau:
Nếu tìm được tập phần tử {1, 2} có giá trị độ hỗ trợ là 9% khi đó tập phần tử này sẽ không thỏa giá trị MIS(1) hoặc MIS(2) Khi đó giải thuật theo hướng tiếp cận
21 Apriori thì tập phần tử {1, 2} sẽ được loại bỏ Lúc này, các tập phần tử phổ biến tiềm năng {1, 2, 3} và {1, 2, 4} sẽ không được sinh ra ở mức tiếp theo của giải thuật Rõ ràng, tập phần tử {1, 2, 3} và {1, 2, 4} có thể là tập phổ biến vì giá trị MIS(3) là 5% và giá trị MIS(4) là 6% Do vậy, nếu không bỏ qua tập phần tử {1, 2} thì lúc này tính chất “downward closed” sẽ không còn được giữ Để giải quyết vấn đề trên, trong hướng tiếp cận tìm tất cả các tập phổ biến sử dụng đa ngưỡng hỗ trợ sẽ tiến hành công đoạn sau: Tất cả các phần tử trong tập phần tử sẽ được sắp xếp theo thứ tự tăng dần của giá trị MIS tương ứng của mỗi phần tử (tính chất “sorted closure property” [9])
Chẳng hạn, đối với tập dữ liệu trong ví dụ 4.1 ở trên các phần tử sẽ được sắp xếp lại tăng dần theo giá trị MIS tương ứng của mỗi phần tử là: 3, 4, 1, 2
Ký hiệu L k là tập các k - tập phần tử phổ biến Mỗi tập phần tử c có dạng với MIS(c[1]) ≤ MIS(c[2]) ≤ … ≤MIS(c[k]) Giải thuật MSApriori phát hiện luật kết hợp với đa ngưỡng hỗ trợ tối thiểu cho từng phần tử dữ liệu như sau:
L 1 = { | f ∈ F, f.count ≥ MIS(f)}; for (k = 2; L k-1 ≠ ∅; k++) do if k = 2 then C 2 = level2-candidate-gen(F) // sinh ra tập ứng viên C 2 else C k = candidate-gen(L k-1 ) //sinh ra tập ứng viên C k với k > 2 end for mỗi giao dịch t ∈ T do C t = subset(C k , t); for mỗi ứng viên c ∈ C t do c.count++; end L k = {c ∈ C k | c.count ≥ MIS(c[1])} end Answer = ∪ k L k ;
Trong giải thuật trên, có những điểm khác biệt so với giải thuật Apriori trong [2] đó là: tập ứng cử viên C 2 được sinh ra từ tập F 1 (F 1 : tập các phần tử có độ hỗ trợ ≥ MS(1) với MS(1) = min(MS(i))
22 Ví dụ 4.2: Với dữ liệu trong ví dụ 4.1, giả sử tập dữ liệu có 100 giao dịch Độ hỗ trợ của các phần tử trong cơ sở dữ liệu như sau: {3}.count = 6, {4}.count = 3, {1}.count = 9 and {2}.count = 25 Khi đó sẽ thu được :
Phần tử 4 không nằm trong L 1 vì 4.count/n < MIS(3) (=5%) và {1} không nằm trong F 1 vì 1.count / n < MIS(1) (= 10%)
Tập ứng cử viên C 2 được sinh ra theo giải thuật sau: for mỗi phần tử f trong tập F do if f.count ≥ MIS(f) then for mỗi phần tử h trong F theo sau phần tử f do if h.count ≥ MIS(f) then insert vào C 2 Ví dụ 4.3: với giá trị MIS của các phần tử trong ví dụ 4.2 như sau:
Kết quả ở bước sinh ra tập ứng viên C 2 như sau:
{1,2} không là tập ứng viên vì độ hỗ trợ của phần tử 1 có giá trị là 9, nhỏ hơn MIS(1) (%) Do đó, {1,2} không thể là tập phổ biến Đối với việc sinh tập ứng viên từ tập L k-1 (k>2) gồm có hai giai đoạn như sau:
- Giai đoạn nối: insert into C k select p.item 1 , p.item 2 , … , p.item k-1 , q.item k-1 from L k-1 p, L k–1 q where p.item1 = q.item 1 , …, p.itemk-2 = q.item k-2 , p.item k-1 < q.item k-1
23 - Giai đoạn cắt: for mỗi tập phần tử c ∈ C k do for mỗi (k-1)-subset s của c do if (c[1] ∈ s) hoặc (MIS(c[2]) = MIS(c[1])) then if (s ∉ L k-1 ) then loại bỏ c từ C k Trong giai đoạn cắt, với mỗi (k-1)-subset s trong c, nếu s không thuộc tập Lk-1, khi đó c có thể bị loại bỏ Tuy nhiên đối với trường hợp s không chứa phần tử c[1] (c[1] là phần tử có giá trị MIS nhỏ nhất), trong trường hợp này dù s không thuộc L k-1 thì cũng không thể loại bỏ c vì ở đây không chắc chắn rằng s sẽ không thỏa mãn giá trị MIS(c[1]) mặt dù chúng ta biết rằng s không thỏa mãn giá trị MIS(c[2])
Chẳng hạn, xét ví dụ sau:
Với tập L 3 thu được là {, , , ,
, , } Các phần tử trong tập các phần tử đã được sắp xếp theo thứ tự Sau bước nối, thu được tập ứng viên C 4 như sau:
{, , } Ở giai đoạn cắt sẽ loại bỏ đi tập phần tử bởi vì tập không thuộc L 3 Tập ứng viên thu được C 4 sau giai đoạn cắt sẽ là: C 4 = {, } Tập phần tử không bị loại bỏ mặc dù không thuộc L3 tuy nhiên ở đây giá trị ngưỡng hỗ trợ tối thiểu của là MIS(3) lớn hơn giá trị
MIS(1) Mặc dù tập có thể không thỏa MIS(3) (c.count > MIS(3)) nhưng cũng không thể chắc chắn rằng nó cũng không thỏa giá trị MIS(1) Tuy nhiên nếu trong trường hợp MIS(3) = MIS(1) thì khi đó tập phần tử cũng sẽ được loại bỏ
Ví dụ 4.4: Xét cơ sở dữ liệu với 7 giao dịch sau:
Beef, Bread Bread, Clothes Bread, Clothes, Milk Cheese, Boots
Beef, Bread, Cheese, Shoes Beef, Bread, Cheese, Milk
Bread, Milk, Clothes Đặt ngưỡng hỗ trợ cho MIS(Milk) = 50%, MIS(Bread) = 70% và 25% cho các mặt hàng còn lại Tập phần tử phổ biến thu được theo hướng tiếp cận đa ngưỡng hỗ trợ đã được trình bày ở trên như sau:
F 2 = {{Beef, Cheese}, {Beef, Bread}, {Cheese, Bread}
F 3 = {{Beef, Cheese, Bread}, {Clothes, Milk, Bread}}
Giá trị MIS của mỗi phần tử trong cơ sở dữ liệu được xác định theo công thức sau:
Song song hóa trong giai đoạn tìm tập phổ biến
Dựa trên nền tảng song song đa nhân đã được trình bày trong chương 2, chúng tôi đề xuất giải pháp song song hóa trong quá trình tìm các tập phổ biến ở giai đoạn tìm độ hỗ trợ cho các tập ứng viên như sau:
{ for (mỗi giao dịch t T do if c được chứa trong t then c.count++; end });
Trong quá trình tìm độ hỗ trợ cho tập các ứng viên đối với các tập dữ liệu có số lượng giao dịch lớn khi đó số lượng tập ứng viên sinh ra trong quá trình thực thi giải thuật sẽ rất lớn Trong giải thuật tuần tự, việc tìm độ hỗ trợ cho mỗi tập ứng viên sẽ được thực hiện tuần tự: sau khi tìm xong độ hỗ trợ cho tập ứng viên này sẽ tìm độ hỗ trợ cho tập ứng viên khác Trong quá trình song song hóa, việc tìm độ hỗ trợ của các tập ứng viên sẽ được thực hiện song song khi đó sẽ tận dụng tối đa khả năng xử lý của các bộ vi xử lý đa nhân nhằm tăng hiệu suất tính toán, giảm thời gian thực thi của giải thuật
Giai đoạn sinh các luật kết hợp
4.3.1 Giải thuật sinh luật kết hợp Để sinh các luật kết hợp:
Với mỗi tập phổ biến X ∈ F, ta xác định các tập mục không rỗng là con của X
Với mỗi tập mục con S không rỗng của X ta sẽ thu được một luật kết hợp là S→(X\S) Tính toán độ tin cậy của luật này nếu độ tin cậy thỏa mãn ngưỡng minconf thì luật đó là luật cần tìm
Từ tập phổ biến l, giai đoạn sinh luật sẽ sinh ra luật kết hợp dạng a (l – a), trong đó a là một tập con khác rỗng của l Trong quá trình sinh luật, chúng ta tiến hành duyệt các tập con của l có kích thước lớn trước tiên và sẽ tiếp tục xét các tập con nhỏ hơn khi luật vừa sinh thỏa mãn độ tin cậy tối thiểu Ví dụ, l là tập phổ biến ABCD, nếu luật ABC => D không thỏa mãn độ tin cậy tối thiểu thì luật AB CD cũng không thỏa mãn do độ hỗ trợ của AB luôn lớn hơn hoặc bằng ABC Do đó chúng ta không cần xét các luật mà có vế trái là tập con của ABC vì chúng không thỏa mãn độ tin cậy tối thiểu
Thuật toán trong [2] sinh các luật thể hiện ý tưởng trên như sau:
//Giải thuật sinh luật forall large itemsets l k , k ≥ 2 do call genrules(l k , l k );
//Sinh tất cả các luật (l k –), với a m
Procedure genrules (l k : frequent k-itemset, a m : frequent m-itemset) A = {(m-1)-itemsets a m-1 | a m-1 a m }; forall a m-1 A do begin conf = support(l k )/support(a m-1 ); if (conf ≥ minconf) then begin output the rule a m-1(l k – a m-1 ) if (m-1 > 1 ) then call genrules(l k , a m-1 ); end End
26 Xuất phát từ ý tưởng một luật không thỏa mãn độ tin cậy với tập cha thì cũng không thỏa mãn với tập con của nó và nếu xảy ra luật với tập con thì cũng xảy ra luật với tập cha Ví dụ nếu luật AB CD có đủ độ tin cậy thì luật ABC D cũng đủ độ tin cậy, giải thuật cải tiến sinh các luật được trình bày trong [2] như sau:
1) forall large k-itemsets l k , k ≥ 2 do begin 2) H 1 = {consequents of rules derived form l k with one item in the consequent };
Procedure ap-genrules(l k : large k-itemset, H m : set of m-item consequents) if (k > m + 1) then begin
H m+1 = apriori-gen(H m ); forall h m+1 H m+1 do begin conf = support(l k )/support(l k – h m+1 ); if (conf ≥ minconf) then output the rule (l k – h m+1 ) h m+1 with confidence = conf and support = support(l k ) else delete h m+1 from H m+1 ; end call ap-genrules(l k , H m+1 ); end
Trong luận văn này sẽ sử dụng hướng tiếp cận sinh các luật được mô tả ở trên để tìm các luật kết hợp từ các tập phổ biến đã tìm được
4.3.2 Tính toán độ tin cậy của luật khi sử dụng đa ngưỡng hỗ trợ tối thiểu
Trong giai đoạn sinh các luật kết hợp từ các tập phổ biến, trong trường hợp sử dụng một ngưỡng hỗ trợ, nếu f là tập phổ biến và f sub là một tập con của f khi đó f sub cũng là một tập phổ biến Tất cả độ hỗ trợ đã được tính toán và ghi nhận khi sử dụng hướng tiếp cận của giải thuật Apriori để tìm các tập phổ biến do đó độ tin cậy của luật được tính toán một cách dễ dàng mà không cần phải đọc lại cơ sở dữ liệu một lần nữa
Tuy nhiên, trong trường hợp sử dụng đa ngưỡng hỗ trợ tối thiểu, trong trường hợp chỉ ghi nhận độ hỗ trợ các tập phần tử phổ biến là chưa đủ
27 Ví dụ 4.5: Xét các phần tử Bread, Clothes, Shoes với ngưỡng hỗ trợ tối thiểu tương ứng của các phần tử như sau:
Phần tử Bread Clothes Shoes
Nếu độ hỗ trợ trong tập dữ liệu của tập phần tử {Clothes, Breads} là 0.15% và {Shoes, Clothes, Bread} là 0.12%, khi đó tập phần tử {Clothes, Bread} không là tập phổ biến vì độ hỗ trợ của tập phần tử này nhỏ hơn giá trị MIS(Clothes) Tuy nhiên, {Shoes, Clothes, Bread} là tập phổ biến vì độ hỗ trợ của tập phần tử này lớn hơn ngưỡng hỗ trợ tối thiểu của nó:
MIS({Shoes, Clothes, Bread}) = 0.1% < sup({Shoes, Clothes, Bread}) = 0.12%
Lúc này, chúng ta sẽ gặp phải vấn đề khi cần tính toán độ tin cậy cho luật:
Clothes, Bread → Shoes vì tập phần tử {Clothes, Bread} không phải là tập phổ biến do đó độ hỗ trợ của phần tử này không được ghi nhận lại Do vậy, trong trường hợp này cần phải duyệt lại tập dữ liệu và tìm độ hỗ trợ cho tập phần tử này
THỰC NGHIỆM
Thực nghiệm 1: Tìm các tập phổ biến
5.1.1 Tập dữ liệu MUSHROOMS 8124 giao dịch Đối với tập dữ liệu MUSHROOMS, thực nghiệm tiến hành đặt ngưỡng hỗ trợ tối thiểu được cho phép (LS) ở các mức: 0.2, 0.15 và 0.1
Kết quả chạy thực nghiệm cho tập dữ liệu MUSHROOMS trong giao đoạn tìm các tập phổ biến với hướng tiếp cận đa ngưỡng hỗ trợ song song hóa như sau:
Bảng 5.2 Số lượng tập phổ biến và thời gian thực thi với tập dữ liệu
LS Beta Số tập phổ biến Thời gian chạy
30 Các biểu đồ sau so sánh thời gian chạy trong giai đoạn tìm các tập phổ biến với các hướng tiếp cận: đơn ngưỡng hỗ trợ (Apriori), đa ngưỡng hỗ trợ tuần tự và đa ngưỡng hỗ trợ song song:
Hình 5.1 So sánh thời gian thực thi giải thuật trên tập dữ liệu MUSHROOMS với
Hình 5.2 So sánh thời gian thực thi giải thuật trên tập dữ liệu MUSHROOMS với
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Hình 5.3 So sánh thời gian thực thi giải thuật trên tập dữ liệu MUSHROOMS với
Nhận xét: Thông qua thực nghiệm 1 với tập dữ liệu MUSHROOMS chúng tôi thấy rằng thời gian thực thi giải thuật đa ngưỡng song song là tốt hơn so với giải thuật đa ngưỡng tuần tự, thời gian thực thi của giải thuật đa ngưỡng song song với các giá trị LS đượt thiết lập 0.2, 0.15, 0.1 là 33.37%, 40.69% và 54.46% so với thời gian thực thi của giải thuật đa ngưỡng hỗ trợ tuần tự , đối với tập dữ liệu MUSHROOMS trong trường hợp đặt ngưỡng hỗ trợ tối thiểu cho phép LS = 0.2 với tham số Beta nằm trong khoảng giá trị [0.1, 0.5], thời gian thực thi tìm các tập phổ biến của giải thuật đa ngưỡng tuần tự là lớn hơn so với thời gian thực thi của giải thuật sử dụng đơn ngưỡng hỗ trợ
5.1.2 Tập dữ liệu C20D10K 10000 giao dịch Đối với tập dữ liệu C20D10K 10000 giao dịch, thực nghiệm tiến hành đặt ngưỡng hỗ trợ tối thiểu được cho phép (LS) ở các mức: 0.15, 0.1 và 0.05
Kết quả chạy thực nghiệm cho tập dữ liệu C20D10K trong giao đoạn tìm các tập phổ biến với hướng tiếp cận đa ngưỡng hỗ trợ tối thiểu song song hóa như sau:
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
32 LS Beta Số tập phổ biến Thời gian chạy
Bảng 5.3 Số lượng tập phổ biến và thời gian thực thi với tập dữ liệu C20D10K
33 Các biểu đồ sau so sánh thời gian chạy trong giai đoạn tìm các tập phổ biến đối với tập dữ liệu C20D10K với các hướng tiếp cận: đơn ngưỡng hỗ trợ (Apriori), đa ngưỡng hỗ trợ tuần tự và đa ngưỡng hỗ trợ song song:
Hình 5.4 So sánh thời gian thực thi giải thuật trên tập dữ liệu C20D10K với LS =
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Hình 5.5 So sánh thời gian thực thi giải thuật trên tập dữ liệu C20D10K với LS =
Hình 5.6 So sánh thời gian thực thi giải thuật trên tập dữ liệu C20D10K với LS =
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
35 Nhận xét: Đối với tập dữ liệu C20D10K, thời gian chạy của giải thuật đa ngưỡng hỗ trợ tốt hơn so với giải thuật đơn ngưỡng hỗ trợ ngoại trừ trường hợp khi thiết lập tham số Beta = 0.1 trong hai trường hợp ngưỡng hỗ trợ tối thiểu được thiết lập là LS 0.1 và 0.15 thời gian chạy của hai giải thuật đơn ngưỡng và đa ngưỡng hỗ trợ là tương đương nhau Thời gian thực thi của giải thuật đa ngưỡng song song với các thiết lập giá trị LS bằng 0.01, 0.006 và 0.001 lần lượt là 24%, 24.49%, 26.84% so với thời gian thực hiện của giải thuật đa ngưỡng tuần tự
5.1.3 Tập dữ liệu BMS-POS 515597 giao dịch Đối với tập dữ liệu BMS-POS 515597 giao dịch, thực nghiệm tiến hành đặt ngưỡng hỗ trợ tối thiểu được cho phép (LS) ở các mức: 0.01, 0.006, 0.001
Kết quả chạy thực nghiệm cho tập dữ liệu BMS-POS trong giao đoạn tìm các tập phổ biến với hướng tiếp cận đa ngưỡng hỗ trợ tối thiểu song song hóa như sau:
36 LS Beta Số tập phổ biến Thời gian chạy
Bảng 5.4 Số lượng tập phổ biến và thời gian thực thi với tập dữ liệu BMS-POS
37 Các biểu đồ sau so sánh thời gian chạy trong giai đoạn tìm các tập phổ biến đối với tập dữ liệu BMS-POS với các hướng tiếp cận: đơn ngưỡng hỗ trợ (Apriori), đa ngưỡng hỗ trợ, đa ngưỡng hỗ trợ song song:
Hình 5.7 So sánh thời gian thực thi giải thuật trên tập dữ liệu BMS-POS với LS =
Hình 5.8 So sánh thời gian thực thi giải thuật trên tập dữ liệu BMS-POS với LS =
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
Hình 5.9 So sánh thời gian thực thi giải thuật trên tập dữ liệu BMS-POS với LS =
Nhận xét: Đối với tập dữ liệu BMS-POS khi ngưỡng hỗ trợ tối thiểu được thiết lập với các giá trị LS = 0.01 và 0.006, giải thuật đa ngưỡng tuần tự có thời gian thực thi lớn hơn so với giải thuật đơn ngưỡng hỗ trợ với các giá trị tham số Beta được thiết lập trong thí nghiệm Thời gian thực thi của giải thuật đa ngưỡng song song với thiết lập giá trị LS tương ứng 0.01, 0.006 và 0.001 lần lượt là 24%, 24.49% và 26.84% so với thời gian thực hiện của giải thuật đa ngưỡng tuần tự.
Thực nghiệm 2: Giai đoạn sinh các luật
Trong giai đoạn tìm các luật kết hợp từ các tập phổ biến đã tìm được ở bước trên, chúng tôi thiết lập độ tin cậy trong quá trình sinh các luật đối với tập dữ liệu C20D10K, BMS-POS là 85% và tập dữ liệu MUSHROOMS là 90%
Kết quả thực nghiệm ghi nhận số lượng luật được phát hiện và thời gian chạy trong giai đoạn sinh luật kết hợp của các tập dữ liệu thử nghiệm được trình bày trong các bảng sau:
Beta Đơn ngưỡng Đa ngưỡng Đa ngưỡng song song
39 Tập dữ liệu MUSHROOMS (conf = 90%):
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Bảng 5.5 Kết quả thực nghiệm với tập dữ liệu MUSHROOMS
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Bảng 5.6 Kết quả thực nghiệm với tập dữ liệu C20D10K
41 Tập dữ liệu BMS-POS (conf = 85%):
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Thời gian chạy (mili giây)
Bảng 5.7 Kết quả thực nghiệm với tập dữ liệu BMS-POS