Giới thiệu khai phá mẫu phổ biến, luật kết hợp
Khái niệm về khai phá mẫu phổ biến
Mẫu phổ biến (Frequent pattern): là mẫu (tập mục - itemsets, dãy mục – itemlists, dãy con – subsequence, hoặc cấu trúc con – substructures…) mà xuất hiện phổ biến trong một tập dữ liệu
Agrawal, Imielinski, Swami – 1993 – trong ngữ cảnh bài toán tập phổ biến và luật kết hợp
Một số mặt hàng như sữa (milk) và bánh mỳ (bread), thường xuyên xuất hiện cùng nhau trong các tập dữ liệu giao dịch được coi là tập mục phổ biến
Đầu tiên khách hàng mua một máy tính PC, rồi mua một máy quay kỹ thuật số, và sau đó là mua một thẻ nhớ Nếu dữ liệu xảy ra một cách phổ biến trong cơ sở dữ liệu lịch sử bán hàng thì được gọi là mẫu dãy phổ biến (frequent sequential pattern)
Các mẫu cấu trúc khác như đồ thị con (subgraphs), cây con (subtrees), hoặc mắt xích con (sublattices), chúng ta có thể kết hợp với các tập mục hoặc dãy con Nếu một cấu trúc con xảy ra thường xuyên, nó được gọi là một mẫu cấu trúc phổ biến (a frequent structured pattern)
2.1.2 Ý nghĩa của khai phá mẫu phổ biến
Tìm kiếm mẫu phổ biến đóng vai trò thiết yếu trong khai phá luật kết hợp, tìm kiếm mối tương quan, và các mối quan hệ trong cơ sở dữ liệu Hơn nữa nó giúp phân lớp, phân cụm dữ liệu, và hỗ trợ các nhiệm vụ khai phá dữ liệu khá tốt Do vậy, khai phá mẫu phổ biến đã trở thành nhiệm vụ quan trọng trong khai phá dữ liệu
Chủ đề về khai phá mẫu phổ biến rất phong phú và rộng lớn Các lĩnh vực nghiên cứu chú trọng đến mốt số vấn đề như sau:
Làm thế nào để tìm thấy các tập mục phổ biến trong một cơ sở dữ liệu lớn, trong đó dữ liệu có thể là các dữ liệu giao dịch hoặc dữ liệu quan hệ?
Làm thế nào để có thể khai phá được các luật kết hợp trong không gian đa mức và đa chiều?
Những luật kết hợp nào là phù hợp nhất?
Làm thế nào để có thể chỉ ra các thuật toán, phương pháp KPDL hiệu quả để phát hiện những luật kết hợp phù hợp nhất hoặc các mối tương quan giữa các mục dữ liệu? Đây cũng chính là cơ sở để tạo điều kiện thuận lợi cho việc mở rộng các hình thức khai phá mẫu phổ biến sau này
Chúng ta hãy bắt đầu phân tích một ví dụ khá đặc trưng về khai phá mẫu phổ biến, đó là phân tích giỏ hàng thương mại trong CSDL giao dịch về lịch sử bán hàng tại siêu thị Việc phát hiện ra mối tương quan trong một số lượng lớn các bản ghi về giao dịch thương mại được thu thập và lưu trữ hàng ngày giúp hỗ trợ tiến trình đưa ra quyết định của nhiều doanh nghiệp, như trong thiết kế mẫu hàng hóa, tiếp thị chéo và phân tích thói quen mua sắm của khách hàng Khám phá những mối quan hệ như vậy có thể giúp những người bán lẻ phát triển các chiến lược tiếp thị bằng cách tiếp cận một cách thấu đáo các danh mục mặt hàng được khách hàng mua thường xuyên
Và làm thế nào để biết được một khách hàng đang mua sữa, họ có khả năng sẽ mua bánh mỳ trong cùng một lần đến siêu thị? Thông tin này có thể làm tăng doanh thu của cửa hàng bán lẻ bằng cách giúp những nhà bán lẻ tiếp thị các mặt hàng một cách chọn lọc và lên kế hoạch trưng bầy sản phẩm ở những vị trí thích hợp
Giả sử bạn là giám đốc một siêu thị, bạn sẽ muốn tìm hiểu về thói quen mua sắm của khách hàng của bạn Bạn tự hỏi: “Đâu là những mặt hàng, những nhóm mặt hàng mà các khách hàng thương xuyên mua cùng nhau trong một chuyến đi đến siêu thị?” Để trả lời câu hỏi, việc phân tích giỏ hàng được thực hiện trên dữ liệu bán lẻ của nhưng giao dịch khách hàng tại quầy hàng của bạn Bạn có thể sử dụng kết quả này để xây dựng kế hoạch, chiến lược cho tiếp thị hoặc quảng cáo hoặc thiết kế một catalog mới Trường hợp khác, việc phân tích giỏ hàng gúp bạn bài trí hàng hóa cho quầy hàng Trong chiến lược tiếp thị bán hàng, các mặt hàng thương xuyên mua cùng nhau thì đặt gần vị trí với nhau, để khuyến khích việc mua các mặt hàng trong cùng một nhóm hàng Nếu khách hàng mua một chiếc máy giặt thì tại thời điểm đó họ cũng quan tâm đến xà phòng giặt máy, do đó việc đặt mặt hàng bột giặt gần mặt hàng máy giặt, sẽ làm tăng doanh số bán hàng của cả hai mục hàng này
Như vậy, có thể kết luận rằng, khai phá mẫu phổ biến là quá trình tìm kiếm mối quan hệ tuần hoàn, lặp đi lặp lại trong một cơ sở dữ liệu
Từ ví dụ trên, thông tin khách hàng mua máy giặt thì cũng có xu hướng mua xà phòng giặt máy tại cùng một thời điểm được mô tả trong luật kết hợp dưới đây:
Máy giặt => Xà phòng giặt [độ hỗ trợ = 2%, độ tin cậy = 60%] Độ hỗ trợ (support) và độ tin cậy (confidence) là hai độ đo hấp dẫn của luật
Chúng lần lượt phản ánh sự hữu ích và độ chắc chắn của luật khai phá Độ hỗ trợ bằng 2% có nghĩa là theo phân tích cho thấy: 2% trong nhưng giao dịch, máy giặt và xà phòng được mua cùng nhau Độ tin cậy bằng 60% có nghĩa là trong các giao dịch, nếu khách hàng mua máy giặt thì cũng mua xà phòng giặt máy Thông thường những luật kết hợp được xét đến nếu chúng thỏa mãn cả ngưỡng hỗ trợ tối thiểu (minimum support threshold) và ngưỡng tin cậy tối thiểu (minimum confidence threshold).
Tổng quan về luật kết hợp
Để đơn giản hóa, chúng ta có thể hiểu luật kết hợp như sau: luật kết hợp là luật chỉ ra mối quan hệ của hai hay nhiều đối tượng (đối tượng chúng ta đang xét ở đây là các mặt hàng)
Cấu trúc của luật như sau: X=>Y (sup, conf) Có nghĩa là luật có X thì kéo theo Y với độ hỗ trợ sup và độ tin cậy conf
- sup= support (độ hỗ trợ): là tỉ lệ giao dịch chứa cả hai mặt hàng X và Y trên tổng số giao dịch
- conf= confidence (độ tin cậy): là tỉ lệ giao dịch chứa mặt hàng Y trong các giao dịch chứa mặt hàng X
Nếu nhìn nhận luật kết hợp theo lý thuyết tập hợp thì chúng ta có thể định nghĩa như sau:
Tập toàn bộ các mục I = {i1, i2, …, ik}: “tất cả các mặt hàng” Cho D là một cơ sở dữ liệu giao dịch như là danh sách các mặt hàng (mục: item) trong một phiếu mua hàng của khách hàng Giao dịch T là một tập mục Một giao dịch T là một tập con của I: T
I Mỗi giao dịch T có một định danh là TID X là một tập mục X I và T là một giao dịch: Gọi T chứa X nếu X T Gọi XY là một “luật kết hợp” nếu X I, Y
Kí hiệu support(X) (hoặc sup(X), s(X)) là tỷ lệ phần trăm của các giao dịch hỗ trợ X trên tổng các giao dịch trong D, nghĩa là:
Tập mục X có P(X) s>0 (với s cho trước) được gọi là tập phổ biến (frequent set)
Luật kết hợp XY có độ hỗ trợ (support) s trong CSDL giao dịch D nếu trong
D có s% các giao dịch T chứa XY: chính là xác suất P(XY)
Luật kết hợp XY có độ tin cậy (confidence) c trong CSDL D nếu như trong
D có c% các giao dịch T chứa X thì cũng chứa Y: chính là xác suất P(X|Y)
Luật XY được gọi là đảm bảo độ hỗ trợ s trong D nếu s(XY) s Luật XY được gọi là đảm bảo độ tin cậy c trong D nếu c(XY) c Luật thỏa mãn cả hai ngưỡng hỗ trợ tối thiểu (min_sup) và ngưỡng tin cậy tối thiểu (min_conf) được gọi là luật mạnh Độ hỗ trợ và độ tin cậy nhận giá trị trong khoảng từ 0% đến 100% hoặc từ 0.0 đến 1.0 giá trị min_sup và min_conf được xác định bởi người dùng hoặc chuyên gia
Công thức (3) có thể được viết lại như sau:
Công thức (4) cho biết độ tin cậy của luật XY có thể dễ dàng nhận được từ độ hỗ trợ của X và XY Như vậy, quá trình khai phá luật kết hợp phải được thực hiện thông qua hai bước:
Bước 1 : Tìm tất cả các tập mục mà có độ hỗ trợ lớn hơn độ hỗ trợ tối thiểu do người dùng xác định Các tập mục thoả mãn độ hỗ trợ tối thiểu được gọi là các tập mục phổ biến
Bước 2 : Tạo luật liên kết mạnh từ tập mục phổ biến sinh ra các luật mong muốn Ý tưởng chung là nếu gọi XYZW và XY là các tập mục phổ biến, thì chúng ta có thể xác định luật nếu XY => ZW giữ lại với tỷ lệ độ tin cậy:
Sup XYZW conf Sup XY (5)
Nếu conf ≥ min_conf thì luật được giữ lại (luật này sẽ thoả mãn độ hỗ trợ tối thiểu vì XYZW là phổ biến)
Ví dụ, minh họa bài toán khai phá mẫu phổ biến tìm luật kết hợp
Cho tập mục I= {A,B,C,D,E,F} gồm 6 mục Xét cơ sở giao dịch D với các giao dịch có định danh TID ở bảng dưới đây (Giả sử min_sup = 50%, min_conf = 50%)
TID Các mục hàng trong giỏ
Hình 2.1: Cơ sở dữ liệu giao dịch D
Duyệt cơ sở dữ liệu, dựa vào tần suất xuất hiện của các tập mục trong các giao dịch từ
01 đến 04, ta tìm được các tập mục phổ biến có độ hỗ trợ thỏa mãn min_sup (các tập mục có độ hỗ trợ < min_sup được loại bỏ) như sau:
Tập các mục Tần suất xuất hiện Độ hỗ trợ (Support)
Hình 2.2: Tần xuất xuất hiện và độ hỗ trợ của các tập mục phổ biến
Luật A C, ta có độ tin cậy và độ hỗ trợ lần lượt thỏa mãn min_sup và min_conf nên luật này là luật mạnh:
Luật CA, ta có độ tin cậy và độ hỗ trợ lần lượt thỏa mãn min_sup và min_conf nên luật này là luật mạnh:
2.2.2 Giải thuật Apriori để sinh các luật kết hợp
Apriori sử dụng phương pháp đệ quy được trong quá trình phát hiện luật kết hợp, trong đó k-itemset được dùng để tìm (k+1)- itemsets Đầu tiên, 1- itemsets tập mục phổ biến có được bằng cách duyệt CSDL để đếm các mục và lựa chọn các mục thỏa mãn độ hỗ trợ tối thiểu (min-sup) Kết quả thể hiện bởi tập F1
F 1 được dùng để tìm F 2 (có hai tập mục phổ biến), rồi sử dụng F 2 để tìm F 3 (3- itemset) và tiếp tục cho đến khi không có k-itemset được tìm thấy
Tính chất Apriori[9]: Mọi tập con khác rỗng của tập mục phổ biến cũng phải phổ biến Ví dụ, nếu {bia, bỉm, hạnh nhân} là phổ biến thì {bia, bỉm} cũng vậy, mọi giao dịch chứa {bia, bỉm, hạnh nhân} cũng chứa {bia, bỉm}
Thuật toán được thực hiện qua hai bước cơ bản, bao gồm bước kết nối (join) và bước cắt tỉa (prune)
- Bước kết nối (join): Tìm tập mục phổ biến L k từ tập ứng viên C k Tập ứng viên C k được sinh ra bằng cách kết nối L k-1 với chính nó Cho l 1 và l 2 là các tập mục thuộc Lk-1 Ký hiệu li[j] để chỉ tập mục thứ j trong tập mục li Theo quy ước, Apriori giả định các mục bên trong một giao dịch hoặc một tập mục được sắp xếp theo thứ tự từ điển Đối với (k-1)-tập mục, l i , có nghĩa là các mục được sắp xếp theo thứ tự li[1] < l i [2] < < l i [k-1] Kết nối L k-1 với L k-1 được thực hiện như sau: các thành phần của L k-1 được kết hợp nếu (k-2) mục đầu tiên giống nhau Ở đó, thành phần l 1 và l 2 của L k-1 được kết hợp nếu (l 1 [1] Điều kiện l 1 [k-1] 0 Đầu ra: Tập hợp tất cả các tập phổ biến
(1) F 1 = {tất cả các tập mục phổ biến có độ dài bằng 1};
(3) C k = Apriori-gen (F k-1 ); //Sinh mọi ứng viên có độ dài k
(4) For ( mỗi giao dịch t D) { // quét CSDL D để đếm
(5) C t = ( c C k | c t); //tất cả các ứng viên c thuộc C k với c là tập con của giao dịch t
(8) } // kết thúc lặp các giao dịch t D
Thuật toán Apriori được trình bày dưới dạng giả mã và các thủ tục liên quan Bước 1 của Apriori là tìm tất cả các tập mục phổ biến F 1 có độ dài bằng 1 Từ bước 2 đến bước 10, Fk-1 được sử dụng để sinh ứng viên C k theo trình tự để tìm Lk với k ≥ 2 Thủ tục Apriori_gen sinh các ứng viên và sử dụng tính chất Apriori để loại trừ những tập con không phổ biến (bước 3) Thủ tục này được mô tả phía dưới Một khi tất cả các ứng viên đã được sinh ra, CSDL sẽ được quyét (bước 4) Với mỗi giao dịch, một hàm con được sử dụng để tìm tất cả các tập con của giao dịch đã được ứng cử (bước 5), và số ứng viên của mỗi giao dịch được tính (bước 6 và 7) Cuối cùng, tất cả các ứng viên đáp ứng độ hỗ trợ tối thiểu (bước 9) cấu thành lên tập mục phổ biến k F k (bước 11)
Thủ tục được gọi sau đó để sinh luật kết hợp từ tập mục phổ biến
Thủ tục Apriori_gen thực hiện kết nối và cắt tỉa Trong thành phần kết nối, F k-1 được kết nối với Fk-1 để sinh các ứng viên tiềm năng (bước 1 đến bước 4) Thành phần tỉa (bước 5 đến bước 7) dựa vào tính chất Apriori để loại bỏ các ứng viên mà có tập con không phổ biến Thủ tục has_infrequent_subset dùng để kiểm tra các tập con không phổ biến
Procedure Apriori_gen (F k-1 : tập mục phổ biến có độ dài k-1)
(4) c = l 1 ⋈ l 2 ; // bước kết nối: sinh ứng viên
(5) If has_infrequent_subset (c, F k-1 ) then
(6) delete c; //bước tỉa: loại bỏ các ứng viên không có lợi
Procedure has_infrequent_subset (c: ứng viên, F k-1 : t ập các tập phổ biến có độ dài (k-1));
(1) For (mỗi (k-1) – tập con s của c)
2.2.4 Ví dụ minh họa thuật toán Apriori
Xét CSDL giao dịch D được cho trong bảng sau:
Bao gồm 9 giao dịch với độ hỗ trợ tối thiểu là 2, nghĩa là min_sup = 2/9 = 22 %, độ tin cậy tối thiểu là 70%
TID Danh sách các mục
Hình 2.3: CSDL sử dụng minh hoạ thuật toán Apriori
Trong lần lặp đầu tiên của thuật toán, mỗi mục là một ứng viên của tập ứng viên C 1 (có 1 - tập mục) Thuật toán thực hiện quét tất cả các giao dịch của D theo đó đếm số số lần xuất hiện của mỗi mục
Giả sử độ hỗ trợ cực tiểu là Minsup = 2/9*100% = 22% Khi đó tập mục phổ biến 1-Itemset (F 1 ), được xác định như sau: F1 bao gồm tất cả các ứng viên thuộc C 1 thoả mãn độ hỗ trợ tối thiểu Trong ví dụ này tất cả các ứng viên trong C 1 đều thỏa mãn độ hỗ trợ tối thiểu (đều lớn hơn 2)
Hình 2.4: Duyệt CSDL tìm các tập mục phổ biến 1-Itemset (F 1 )
Tìm ra các tập mục phổ biến 2-Itemset (F 2 ), thuật toán sử dụng kết nối F 1 với
Lưu trữ dữ liệu lớn dựa trên Oracle DBMS
Giới thiệu hệ quản trị CSDL Oracle
Các công ty viễn thông quản lý một khối lượng lớn dữ liệu về thông tin khách hàng và dữ liệu về chi tiết cuộc gọi (call detail records) Và CSDL Oracle là một lựa chọn tối ưu để lưu trữ lượng dữ liệu lớn đó trong các doanh nghiệp viễn thông
Oracle bao gồm một tập hợp hoàn thiện các sản phẩm xây dựng ứng dụng và người dùng cuối được trang bị các giải pháp kỹ thuật thông tin hoàn hảo Các ứng dụng Oracle tương thích với hầu hết các hệ điều hành từ các máy tính cá nhân đến các hệ thống xử lý song song lớn
Oracle cung cấp một hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) uyển chuyển: Oracle Server để lưu giữ và quản lý các thông tin dùng trong các ứng dụng Một số sản phẩm và công cụ tích hợp trong hệ quản trị cơ sở dữ liệu Oracle:
1 SQL: Là ngôn ngữ dùng để truy xuất cơ sở dữ liệu quan hệ, kể cả Oracle Có thể được dùng với mỗi công cụ Oracle khi có yêu cầu truy xuất dữ liệu
2 PL/SQL: Là ngôn ngữ thủ tục Oracle để viết các ứng dụng xử lý và thao tác dữ liệu bên ngoài CSDL Có thể bao gồm một tập con các lệnh SQL khi có yêu cầu truy xuất dữ liệu Sẵn có trong Oracle Server
3 Thủ tục lưu trữ (Stored procedures): Là các hàm hay các thủ tục, đây là một tập hợp các câu lệnh SQL và PL/SQL Sau khi Stored procedures được biên dịch, nó sẽ được gán tên và có thể thực hiện trực tiếp mà không cần phải biên dịch lại thêm bất cứ một lần nào nữa Các functions và procedures cho phép sử dụng tham số dưới dạng tham số vào (IN) và tham số ra (OUT) hoặc cũng có thể sử dụng tham số vừa vào vừa ra (IN OUT) Theo mặc định, các tham số được xác định ở chế độ vào IN Một số ưu điểm của hệ quản trị CSDL quan hệ là: a Các Stored procedures được nạp sẵn vào bộ nhớ, do đó có thể giảm bớt việc truy xuất đĩa khi thực hiện thủ tục b Đảm bảo an toàn cho dữ liệu, ngăn không cho các users truy cập trực tiếp vào dữ liệu mà phải thông qua các thủ tục và hàm giao tiếp đã được cung cấp c Cho phép nhiều users có thể cùng sử dụng các bản sao của Stored
4 Packages chuẩn: Một packages thông thường gồm hai phần: specification (phần đặc tả hay còn gọi là phần khai báo) và body (phần thân) Chúng được lưu riêng biệt trong cùng một database a Phần specification là phần giao tiếp với các ứng dụng Phần này chứa các lời khai báo, các kiểu, biến, hằng, exceptions, cursors, và các khai báo hàm để sử dụng b Phần body là phần cài đặt cụ thể (implementation) của các khai báo trong phần specification
Chức năng của packages cũng tương tự như Stored procedures Một khi packages được biên dịch, packages đó có thể được sử dụng bởi nhiều ứng dụng khác nhau Tuy nhiên, có một lợi ích lớn nhất khi sử dụng packages là ngay lần đầu tiên gọi đến packages, toàn bộ packages sẽ được nạp vào trong bộ nhớ
5 Index (chỉ mục): Index của Bảng được tạo ra nhằm tăng tốc độ truy xuất, tăng hiệu quả của tính duy nhất trên một hoặc một tập của cột
6 Table partitioning (Phân khu trong bảng dữ liệu): Kỹ thuật phân chia bảng thành từng khu (Table partitioning) nhằm quản lý hiệu quả cơ sở dữ liệu với dung lượng lớn và các bảng trong CSDL có số lượng truy cập lớn và đồng thời với các mục đích: a Khi một câu lệnh chỉ cần lấy dữ liệu ở một khu nào đó thì hệ thống chỉ cần truy nhập vào khu đó và bỏ qua các khu còn lại b Khi các khu dữ liệu được lưu trữ ở các ổ cứng khác nhau sẽ làm giảm tranh chấp vào/ra giữa các câu lệnh Ví dụ hai câu lệnh SELECT và UPDATE hoạt động trên cùng một bảng nhưng ở hai khu khác nhau có thể thực hiện hoàn toàn song song với nhau
7 Câu lệnh SQL tĩnh (Static SQL): Câu lệnh SQL không thay đổi hay nói cách khác là đã được định nghĩa trước khi chạy, toàn bộ câu lệnh SQL tĩnh là được nhận biết khi biên dịch, nó sẽ có nhiều ích lợi như: a Sự biên dịch thành công sẽ xác minh rằng các câu lênh SQL đã tham chiếu đến các đối tượng hợp lệ trong CSDL Ví dụ, câu lệnh SQL truy vấn dữ liệu từ một bảng chắc chắn tồn tại trong cơ sở dữ liệu b Xác minh quyền có thể truy cập vào các đối tượng cơ sở dữ liệu c Hiệu suất thực hiện của các câu lệnh SQL tĩnh nói chung là tốt hơn so với SQL động
8 SQL động (Dynamic SQL): Cho phép viết các chương trình sử dụng các câu lệnh SQL, toàn bộ đoạn lệnh chương trình sẽ không được nhận biết cho đến trước khi chạy Bởi vì những lợi thế này, bạn nên sử dụng SQL động chỉ khi bạn không thể sử dụng SQL tĩnh để hoàn thành mục tiêu của bạn, hoặc nếu sử dụng SQL tĩnh là cồng kềnh so với SQL động
Tuy nhiên, SQL tĩnh có những hạn chế có thể được khắc phục với SQL động Bạn có thể không phải lúc nào cũng biết toàn bộ câu lệnh SQL phải được thực hiện trong một thủ tục PL/SQL Chương trình của bạn có thể chấp nhận đầu vào là các câu lệnh SQL để thực hiện, mà chúng được định nghĩa bởi người sử dụng Hoặc các câu lệnh SQL được sử dụng là khác nhau, phụ thuộc vào kết quả của một tiến trình khác hoặc các tham số đầu vào Trong những trường hợp như vậy, bạn nên sử dụng SQL động.
Phương pháp tiếp cận và kiến trúc
Đề tài trình bày một hệ thống KPDL trên hệ quản trị cơ sở dữ liệu quan hệ Oracle dựa trên các truy vấn SQL và các hàm định nghĩa trực tiếp bởi người dùng, và sẽ chứng minh rằng “SQL là không hiệu quả hoặc không đầy đủ cho khai phá dữ liệu là sai” Mục đích của luận văn là khám phá rất nhiều những vấn đề gặp phải khi CSDL được tích hợp vào quá trình khai phá dữ liệu
Hiện nay có nhiều công cụ khai phá dữ liệu thương mại sẵn có trên thị trường như IBM‟s Intelligent Miner, DBMiner,Oracle Data Mining, …Chúng có khả năng cung cấp KPDL trên CSDL quan hệ Mặc dù chúng là những công cụ khai khá là hiệu quả, chúng phát triển cho những hệ quản trị CSDL cụ thể
Với sự gia tăng trong việc sử dụng hệ quản trị CSDL quan hệ để lưu trữ và thao tác dữ liệu, khai phá trực tiếp trên hệ quản trị CSDL quan hệ mang lại lợi thế của việc sử dụng những thành quả của nhiều thập kỷ nghiên cứu được thực hiện trong lĩnh vực này Bộ nhớ chính luôn luôn áp đặt một giới hạn về kích thước của dữ liệu có thể được xử lý Tuy nhiên sử dụng hệ quản trị CSDL quan hệ cung cấp cho chúng ta những lợi ích của việc sử dụng hệ thống quản lý bộ đệm đặc biệt phát triển để giải phóng người sử dụng/ứng dụng từ những cân nhắc kích thước của dữ liệu Xây dựng thuật toán khai phá để làm việc trên hệ quản trị CSDL quan hệ cũng mang lại cho chúng ta lợi thế khai phá trên các tập dữ liệu rất lớn, hệ quản trị CSDL quan hệ đã được xây dựng để quản lý khối lượng lớn dữ liệu như thế
Các file sử dụng cho các thuật toán khai phá, chúng được sử dụng làm dữ liệu đầu vào và không chứa trong cơ sở dữ liệu Chúng thường bị giới hạn số lượng giao dịch có thể được khai phá Ví dụ, DBMiner giới hạn số lượng giao dịch là 64K mà nó có thể xử lý khai phá Người sử dụng có thể lựa chọn hệ quản trị CSDL quan hệ sử dụng cho các ứng dụng của mình, các thuật toán khai phá phải được phát triển sử dụng các tiêu chuẩn được chấp nhận, để hệ thống không giới hạn về số lượng giao dịch và phải chuyển sang hệ quản trị CSDL quan hệ khác một cách dễ dàng Do đó, luận văn này sẽ tập trung sử dụng tiêu chuẩn SQL-92 và UDFs được cung cấp bởi hệ quản trị CSDL Oracle cho việc khai phá luật kết hợp
Với xu hướng KPDL trên các kho dữ liệu lớn, với việc sử dụng luật kết hợp, chúng tôi đề xuất phương pháp chỉ cần quét cơ sở dữ liệu giao dịch một lần để tạo ra tất cả các luật phù hợp Ngược lại, thuật toán Apriori chuẩn yêu cầu quét lặp đi lặp lại các cơ sở dữ liệu, do đó dẫn đến truy cập vào/ra sẽ tăng lên đặc biệt là khi xem xét các bộ dữ liệu ứng cử viên lớn Ngôn ngữ PL/SQL đã được tích hợp hoàn toàn với cơ sở
Tính toàn vẹn dữ liệu trong cấu trúc dữ liệu, dữ liệu các tập phổ biến đầy đủ có thể được lưu trữ trong một bảng quan hệ Như vậy việc thực hiện các truy vấn bên trong PL/SQL sẽ làm tăng tốc độ truy cập đến bất kỳ phần tử nào Các thí nghiệm cho thấy rằng thuật toán này thực hiện trong ngôn ngữ PL/SQL giải quyết được vấn đề kích thước lớn lên mà thuật toán cổ điển Apriori gặp phải khi khối lượng giao dịch tiếp tục lớn lên, khối lượng dữ liệu càng tăng
Sau khi toàn bộ cơ sở dữ liệu được quét, phép đếm các tập phổ biến thích hợp được tổ chức trong một cây tập phổ biến đầy đủ, kết quả thu được như thể hiện trong phần bên trái của hình bên dưới Cây tập phổ biến đầy đủ có năm tập mục „a‟, „b‟, „c‟,
„d‟ và „e‟ trong cơ sở dữ liệu D là một ví dụ điển hình
Tổ chức các bộ đếm trong cây tập phổ biến đầy đủ không chỉ cho phép chúng ta lưu trữ chúng một cách hiệu quả (sử dụng ít bộ nhớ), mà còn hỗ trợ tạo ra các luật kết hợp Trong hình, một dãy các thuộc tính biểu thị số lượng của một tập phổ biến có được thông qua việc đếm các tập trong CSDL Các tập được khoanh tròn là các tập không phổ biến sẽ được bỏ bớt vì chúng không đạt được độ hỗ trợ tối thiểu
Hình 3.1: Bảng dữ liệu quan hệ lưu giữ số lượng các tập mục
Chúng ta sẽ xây dựng các bảng có các thuộc tính khác nhau để lưu giữ thông tin và số lượng các tập mục trong CSDL, thông qua việc đếm số lượng tập mục trong CSDL
- Dữ liệu gốc và dữ liệu tiền xử lý đều được lưu giữ trong các bảng dữ liệu quan hệ của CSDL ORACLE
- Các thủ tục và hàm thực thi các thuật toán khai khá được viết bằng ngôn ngữ PL/SQL, và được lưu giữ trong CSDL Người dùng sẽ gọi các thủ tục hoặc hàm để thực hiện gọi các chương trình KPDL, các tham số được truyền vào và không truy cập trực tiếp vào dữ liệu.
Giới hạn trong CSDL Oracle
Thông tin về giới hạn số cột trong một bảng, số dòng trong một bảng, v v được Oracle đưa ra để cho chúng ta dễ dàng đánh giá bài toán và lựa chọn thuật toán cũng như thiết kế chương trình, dưới đây liệt kê một số giới hạn trong CSDL Oracle:
Số indexs Tối đa trên một bảng Không giới hạn
Số cột Trên một bảng 1000 cột
Số cột Trên một indexs 32 cột
Số cột Trên một phân khu 16 cột
Số dòng Trên một bảng Không giới hạn
Số bảng Trên một CSDL Không giới hạn
Hình 3.3: Giới hạn trong CSDL Oracle
Phân tích Luật kết hợp dựa trên Cơ Sở Dữ Liệu Oracle
Đặc tả bài toán
Dữ liệu vào: định dạng đầu vào là một bảng có hai cột Cột đầu tiên là định danh giao dịch (tid) và cột thứ hai là danh mục mặt hàng (item) Trong mỗi giao dịch, nếu có nhiều hơn một mặt hàng, thì sẽ có nhiều dòng dữ liệu trong bảng giao dịch với cùng giá trị trong cột tid và các giá trị khác nhau trong cột mặt hàng
Hình 4.1: Cách chuyển đổi cấu trúc bảng dữ liệu giao dịch Một tùy chọn khác có thể là định dạng bảng bình thường với nhiều cột, một cột là tid và phần còn lại là các mặt hàng (items) Đối với giao dịch với số lượng lớn các mặt hàng, định dạng đầu tiên sẽ có danh sách hữu hạn các mặt hàng như số lượng thực tế mà các mặt hàng tồn tại trong giao dịch Đề tài lựa chọn cách thứ nhất là vì hai lý do:
1 Đầu tiên là chúng ta không biết số lượng của các mục trong mỗi giao dịch
2 Ngoài ra cơ sở dữ liệu hiện tại trên thị trường có thể chỉ hỗ trợ số lượng nhất định các cột cho một bảng Nếu một trường hợp phát sinh trong đó có số lượng mặt hàng trong một giao dịch hơn mức cho phép của các cơ sở dữ liệu cơ bản, không có cách nào chúng ta có thể quản lý chính xác của dữ liệu Cũng sẽ có rất nhiều các giá trị null trong các hàng, các item không được sử dụng trong tất cả các giao dịch
Dữ liệu ra: Đầu ra là một tập các bộ quy tắc, dữ liệu được trình bày theo hình thức bảng được đặt tên là RULES Không phải luật kết hợp nào được sinh ra cũng cùng độ dài do đó chúng ta sẽ sử dụng độ dài tối đa để xác định số lượng các cột của bảng đầu ra Một luật kết hợp được sinh ra cần phải có ít mặt hàng (item) hơn số lượng cột trong bảng Những cột bổ sung cho luật kết hợp được sinh ra được gán giá trị 0 Cấu trúc bảng RULES (item 1 , item 2 , … ,itemk, nullm, rulem, confidence, support) Ở đây k là độ dài của tập phổ biến có độ dài lớn nhất Cột nullm là cột có giá trị 0 đầu tiên, rulem là vị trí của „=>‟ trong luật kết hợp Confidence và support lần lượt là độ tin cậy và độ hỗ trợ của luật kết hợp được sinh ra.
Sinh tập các ứng viên
Thuật toán Apriori đã được trình bầy trong chương 2, với mỗi k, tập ứng viên có độ dài k (C k ) có thể được sinh từ tất cả các tập mục phổ biến có độ dài bằng k-1 (F k-1 ) F k-1 sẽ có k-1 cột: Item 1 , Item 2 , …, Item k-1 , các giá trị lần lượt của tập mục phổ biến được sắp xếp theo thứ tự tăng dần
Hình 4.2: Thực hiện phép nối giữa tập mục phổ biến Fk
Ví dụ, Tập mục phổ biến có độ dài k=3,
F3: {{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {1, 3, 5}, {2, 3, 4}}, ta sẽ có được tập các ứng viên có độ dài k = 4 như sau: C4: {1, 2, 3, 4}, and {1, 3, 4, 5}
4.2.2 Thực hiện bước tỉa loại bỏ ứng viên không có lợi
Tiếp theo, là bước tỉa để loại bỏ các ứng viên không có lợi Các tập con độ dài (k-1) của tập các ứng viên C k không tồn tại trong các tập mục phổ biến có độ dài bằng k-1 (F k-1 ) là được xóa bỏ Chúng ta sử dụng phương pháp K-way join[15] để thực hiện, dựa vào các giá trị lần lượt của tập mục phổ biến được sắp xếp theo thứ tự tăng dần và tất cả tập con của tập phổ biến phải phổ biến Các tập con (tập phổ biến) độ dài k-1 sẽ xác nhận cho các tập phổ biến độ dài k Điều này được thực hiện bằng việc thêm phép kết nối với điều kiện để xác nhận lần lượt cho từng cột (item) Đầu tiên kiểm tra item1, nếu tập ứng viên (I1.item2, I1.item3, …, I1.itemk-1, I2.itemk-1) thuộc
F k-1 như trong phép kết nối với I3 được thể hiện ở hình bên dưới Một phép kết nối với
I r (3