Ứng dụng bài toán khai thác luật kết hợp khai thác CSDL cước tại Viễn thông Ninh Thuận Cấu trúc của luận văn gồm Chương 1: Tổng quan Chương 2: Cơ sở lý thuyết Chương 3: Khai thác tập phổ
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
NGUYỄN THỊ BẢO CHI
KHAI THÁC TẬP PHỔ BIẾN DỰA TRÊN CẤU TRÚC
INDEX-BITTABLE
LUẬN VĂN THẠC SĨ: HỆ THỐNG THÔNG TIN
Thành phố Hồ Chí Minh – 2010
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
NGUYỄN THỊ BẢO CHI
KHAI THÁC TẬP PHỔ BIẾN DỰA TRÊN CẤU TRÚC
Thành phố Hồ Chí Minh – 2010
Trang 3Xin chân thành cảm ơn các bạn cùng lớp, các đồng nghiệp và lãnh đạo Viễn Thông Ninh Thuận đã tạo điều kiện giúp đỡ tôi hoàn thành luận văn
Tôi đặc biệt cảm ơn đến gia đình tôi, đã đồng cảm, hỗ trợ tôi hoàn thành luận văn này.
Phan Rang – Tháp Chàm ngày 01 tháng 09 năm 2010
Trang 4MỤC LỤC
Chương 1: TỔNG QUAN 8
1.1 Mục tiêu và đối tượng khai thác tri thức 8
1.2 Quy trình khai thác tri thức 9
1.3 Mục tiêu và đối tượng khai thác tri thức 10
1.4 Các kỹ thuật khai thác dữ liệu 11
1.5 Ứng dụng của khai thác dữ liệu 13
1.6 Khai thác dữ liệu dựa trên cấu trúc Index-BitTable 14
Chương 2: CƠ SỞ LÝ THUYẾT 16
2.1 Ý nghĩa luật kết hợp 16
2.2 Phát biểu bài toán khai thác luật kết hợp 17
2.3 Một số hướng tiếp cận trong khai thác luật kết hợp 20
2.4 Một số thuật toán đã công bố 21
Chương 3: KHAI THÁC TẬP PHỔ BIẾN DỰA TRÊN CẤU TRÚC INDEX-BITTABLE 24
3.1 Cấu trúc BitTable 24
3.2 Thuật toán BitTableFI 25
3.2.1 Tìm nhanh tập ứng viên 25
3.2.2 Cách tính nhanh độ hỗ trợ 29
3.2.3 Thuật toán BitTableFI 30
3.3 Thuật toán Index-BitTableFI 31
3.3.1 Mảng Index và cách xây dựng 31
3.3.2 Định lý 1 35
3.3.3 Định lý 2 36
3.3.4 Thuật toán Index-BitTableFI 37
3.3.5 Thuật toánDepth_First 38
3.4 Đánh giá thuật toán Index-BitTableFI 40
Trang 53.5 Một số cải tiến 41
3.5.1 Cải tiến cách tính toán subsume 41
3.5.2 Cải tiến thuật toán Depth_First 42
Chương 4: KẾT QUẢ KHAI THÁC DỮ LIỆU CƯỚC ĐIỆN THOẠI VÀ ĐÁNH GIÁ 49
4.1 Nguồn dữ liệu cước điện thoại 49
4.2 Cài đặt hệ thống khai thác dữ liệu cước điện thoại 52
4.3 Kết luận và đánh giá kết quả 60
4.4 Hướng phát triển của luận văn 61
Trang 6cả các lý do đó khiến cho các doanh nghiệp tạo ra một lượng dữ liệu khổng lồ cho riêng mình Các kho dữ liệu ngày càng lớn và tiềm ẩn nhiều thông tin mới lạ, có ích
Sự bùng nổ đó dẫn đến một yêu cầu cấp thiết là phải có những kỹ thuật và công cụ mới
để khai thác kho dữ liệu này, để tìm ra những mối quan hệ, những thông tin mới lạ, dễ hiểu và có ích Trong khi đó kỹ thuật khai thác dữ liệu (Data Mining-DM) đã đáp ứng được các yêu cầu này
Viễn thông Ninh Thuận là một đơn vị thuộc Tập đoàn Viễn Thông Việt Nam, kinh doanh tất cả các loại dịch vụ thuộc các lĩnh vực Viễn Thông – Tin học Thị trường viễn thông đang thay đổi nhanh chóng và chịu nhiều sức ép cạnh tranh giữa nhiều nhà cung cấp dịch vụ Các công ty đưa ra nhiều chính sách thu hút khách hàng và tìm mọi cách để gắn hoạt động kinh doanh của mình với thị trường Việc mất thị trường, thị phần và giảm doanh số kinh doanh là các vấn đề chính mà lãnh đạo Viễn thông Ninh Thuận đang rất quan tâm và tìm biện pháp khắc phục, giải quyết Một trong các biện
pháp đưa ra là “Tăng cường công tác chăm sóc khách hàng”
Với nguồn dữ liệu khổng lồ từ tổng đài rất thuận lợi cho việc tìm hiểu thói quen
sử dụng dịch vụ, mức độ hài lòng và phân loại khách hàng Dữ liệu chi tiết cuộc gọi nhận được từ tổng đài chứa rất nhiều thông tin có ích và tiềm ẩn, từ đó có thể áp dụng các phương pháp thống kê, phân tích, tìm hiểu nhu cầu khách hàng giúp lãnh đạo có
những chính sách đúng đắn để thu hút khách hàng Ứng dụng khai thác dữ liệu, khai
thác hiệu quả tập phổ biến để tìm hiểu khách hàng, giúp lãnh đạo Viễn Thông Ninh
Trang 7Thuận có những chiến lược đúng đắn nhằm thu hút khách hàng là mục đích chính của
đề tài này
Khai thác dữ liệu bao gồm nhiều hướng tiếp cận và các kỹ thuật chính được áp dụng phần lớn được kế thừa từ lĩnh vực cơ sở dữ liệu, trí tuệ nhân tạo (artificial intelligence), xác suất thống kê (probability & statistics) và phương pháp tính toán hiệu năng cao (high performance) Các bài toán chủ yếu trong khai thác dữ liệu là phân lớp/dự đoán (classification/prediction), phân cụm (clustering) và khai thác luật kết hợp (association rule mining) Trong đó khai thác luật kết hợp là một trong các nội dung quan trọng trong khai thác dữ liệu và đây là lĩnh vực nghiên cứu có nhiều triển vọng Luận văn này được xây dựng trên một số công trình nghiên cứu trong lĩnh vực khai thác luật kết hợp đã công bố trong những năm gần đây, qua đó trình bày:
1 Luật kết hợp: ý nghĩa, phát biểu bài toán, không gian tìm kiếm và các hướng tiếp cận
2 Phương pháp khai thác luật kết hợp: trình bày về cấu trúc bảng Index-BitTable phương pháp hiệu quả để tìm nhanh tập phổ biến, phát sinh luật kết hợp
3 Ứng dụng bài toán khai thác luật kết hợp khai thác CSDL cước tại Viễn thông Ninh Thuận
Cấu trúc của luận văn gồm
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Khai thác tập phổ biến dựa trên cấu trúc Index-BitTable
Chương 4: Kết quả khai thác dữ liệu cước điện thoại và đánh giá
Trang 8CHƯƠNG 1 TỔNG QUAN
1.1 Mục tiêu và đối tượng khai thác tri thức
Với sự phát triển nhanh chóng của khoa học kỹ thuật, đặc biệt là kỹ thuật số, cho phép số hóa hầu hết các loại thông tin của các lĩnh vực Ngày nay chúng ta đang chứng kiến sự bùng nổ dữ liệu trong tất cả các lĩnh vực: Khoa học kỹ thuật, kinh doanh, quân sự…Tuy nhiên tốc độ phát triển trong sức mạnh xử lý của việc đánh giá, phân tích dữ liệu là không tương xứng Trong tập dữ liệu lớn có thể chứa các thông tin tiềm ẩn, có quy luật và hữu ích Khi các nhân tố mới lạ và các quan hệ giữa chúng là rõ ràng, dễ hiểu, người dùng có thể cải thiện hoạt động kinh doanh của mình theo hướng tiết kiệm, hiệu quả và chất lượng
Dữ liệu thô lưu trữ trong CSDL ít khi được sử dụng trực tiếp Trong các ứng dụng thực tế, dữ liệu thường được biểu diễn theo khuôn dạng của người sử dụng, phù hợp với công việc của họ Với tập dữ liệu nhỏ, có thể sử dụng các phương pháp thống
kê hoặc các công cụ quản trị để phân tích Tuy nhiên với tập dữ liệu khổng lồ, cần phải
có công cụ phân tích tự động mới có thể thực hiện được
Khai thác tri thức trong CSDL (Knowledge Discovery in Database- KDD) mà
trọng tâm là khai thác dữ liệu (DM) là một quá trình tự động khai thác tri thức tiềm ẩn, thú vị chưa biết trong CSDL Hệ thống KDD/DM không phải là hệ thống phần mềm tổng quát, chúng được phát triển phụ thuộc vào yêu cầu của người sử dụng để giúp họ
tự động phân tích dữ liệu đã được xác định, theo các lĩnh vực ứng dụng riêng biệt
Khai thác tri thức là quá trình rút trích thông tin tiềm ẩn từ CSDL, thông tin đó chứa hoàn toàn trong CSDL, chưa biết trước, tiềm tàng và hữu ích cho người sử dụng Thông tin rút trích phải là dạng của các mẫu mà người dùng có thể hiểu được (chẳng
hạn các luật if-then) Độ đo thú vị của một mẫu là một định lượng sử dụng trong việc
Trang 9đánh giá mẫu Chỉ những mẫu thú vị là tri thức Một mẫu là thú vị nếu nó mới lạ, tiềm
ẩn và hữu ích
1.2 Quy trình khai thác tri thức
Khai thác dữ liệu (DM) là một bước quan trọng của quá trình khai thác tri thức
(Knowledge Discovery Process) Hình 1.1 mô tả quá trình khai thác tri thức Nó bao
gồm các công đoạn sau [7]:
Hình 1.1 Các công đoạn của quá trình khai thác tri thức trong CSDL
Chọn dữ liệu (Selection): là một thủ tục tương ứng với việc phát sinh tập dữ liệu
gốc từ CSDL Mục đích của nó là chọn dữ liệu đặc trưng từ tập dữ liệu lớn và phù hợp
để thực hiện khai thác
Tiền xử lý (Preprocessing): loại bỏ và xử lý dữ liệu tạp, không đầy đủ, mâu
thuẫn từ tập dữ liệu gốc Thực hiện rút gọn và rời rạc hóa dữ liệu (dùng các phương pháp và các cấu trúc dữ liệu phù hợp để thu gọn dữ liệu…) Sau bước này dữ liệu sẽ nhất quán, đầy đủ, rút gọn và rời rạc
Chuyển đổi dữ liệu (Transformed): Chuyển đổi dữ liệu đã xử lý về dạng có thể
thực hiện khai thác Việc chuyển đổi dữ liệu đã xử lý phụ thuộc vào nhiệm vụ khai thác
dữ liệu Công đoạn chuyển đổi bao gồm các thao tác để giảm một cách hợp lệ số trường trong các mẫu tin, vì mỗi nhiệm vụ khai thác dữ liệu chỉ tập trung trên một tập
Trang 10con của các trường dữ liệu Nó cũng bao gồm các thao tác sửa đổi và kết hợp các trường dữ liệu còn lại để ánh xạ dữ liệu gốc thành dữ liệu phù hợp hơn cho việc khai thác dữ liệu ở công đoạn tiếp theo
Khai thác dữ liệu (Data Mining-DM): Đây là công đoạn quan trọng và tốn nhiều
chi phí nhất của quá trình khai thác tri thức Xác định nhiệm vụ khai thác dữ liệu và lựa chọn kỹ thuật khai thác để thực hiện khai thác, phát sinh tập mẫu Các mẫu này là nguồn tri thức thô Trong công đoạn này, có thể cần sự tương tác của người dùng để điều chỉnh và rút ra các thông tin cần thiết nhất Các tri thức nhận được có thể được lưu lại và sử dụng lại
Diễn giải và đánh giá tri thức (Interpretation/Evaluation): với các tri thức nhận
được, dựa vào một số các tiêu chí để tiến hành kiểm tra và lọc nguồn tri thức thu được
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầu tiên đến bước cuối cùng mà là một quá trình lặp và quay hồi lại các bước đã qua
1.3 Mục tiêu và đối tượng khai thác tri thức
Khai thác dữ liệu có khả năng chấp nhận một số kiểu dữ liệu khác nhau Một số kiểu dữ liệu điển hình sau[7]:
Cơ sở dữ liệu quan hệ (relational database): là các dữ liệu tác nghiệp được tổ
chức theo mô hình dữ liệu quan hệ, rất phổ biến trong ngành Viễn thông, do hầu hết các hệ quản trị cơ sở dữ liệu đều hỗ trợ dạng cơ sở dữ liệu quan hệ như Oracle, MS SQL Server, IBM DB2, MS Access…
Cơ sở dữ liệu đa chiều (Multidimentional structucres, data warehouses) : là các
kho dữ liệu được tập hợp và chọn lọc từ nhiều nguồn dữ liệu khác nhau Dạng dữ liệu này chủ yếu phục vụ cho quá trình phân tích cũng như khai thác tri thức và hỗ trợ quá trình ra quyết định
Trang 11Cơ sở dữ liệu giao tác (transaction database) : đây cũng là dạng dữ liệu tác
nghiệp có các bản ghi thường là các giao tác Dạng dữ liệu này cũng phổ biến hiện nay trong đó có ngành Viễn thông
Cơ sở dữ liệu quan hệ - hướng đối tượng (object relational database) : là dạng
dữ liệu lai giữa hai mô hình quan hệ và hướng đối tượng
Dữ liệu không gian và thời gian (temporal, and time-series data ): là dạng dữ
liệu có tích hợp thuộc tính về không gian như dữ liệu bản đồ mạng cáp điện thoại hoặc thời gian như dữ liệu cước điện thoại, phát hành báo chí
Cơ sở dữ liệu đa phương tiện (Multimedia database ): là dạng dữ liệu âm thanh
(audio), hình ảnh (video)… dạng dữ liệu này đang rất phổ biến trên internet và lưu lại các web server của các đơn vị trực thuộc ngành Viễn thông
1.4 Các kỹ thuật khai thác dữ liệu
Khai thác dữ liệu phụ thuộc vào loại tri thức mà hệ thống KDD/DM tìm kiếm Mỗi nhiệm vụ khai thác dữ liệu có đặc tính riêng của nó và thực hiện theo các bước trong quá trình khai thác tri thức Sau đây là các nhiệm vụ khai thác dữ liệu thường được sử dụng phổ biến trong ứng dụng khai thác dữ liệu[7]:
Phân loại (Classification): Khai thác có hay không một phần tử thuộc về một
trong các lớp đã biết trước Vấn đề là bằng cách nào xác định các lớp Trong thực tế, các lớp thường được xác định dựa trên giá trị của trường nào đó trong mẫu tin hoặc dẫn
xuất của các giá trị khác nhau trong các trường Ví dụ, phân lớp cước hoặc loại dịch vụ
dựa vào số máy bị gọi của cuộc gọi, phân lớp giờ cao điểm, thấp điểm dựa trên khung thời gian qui định
Phân cụm (Cluster identification): Sắp xếp các đối tượng theo từng cụm Ngược
với phân loại, số lượng và tên của cụm chưa được biết trước Khi xác định các cụm, các độ đo khoảng cách được sử dụng để tính toán sao cho mức độ tương tự giữa các
Trang 12đối tượng trong cùng một cụm là lớn nhất và mức độ tương tự giữa các đối tượng nằm
trong các cụm khác nhau là nhỏ nhất Ví dụ phân bố các điểm trên đồ thị 2 chiều có thể
biểu diễn như là một phân cụm
Dự báo (Prediction): Kỹ thuật dự báo dựa trên giá trị liên tục hay rời rạc của
thuộc tính Lịch sử của các thuộc tính được sử dụng để xây dựng mô hình này Đây là
kỹ thuật thường được sử dụng cho việc dự báo hàng hóa, thị trường
Phân tích độ lệch (Deviation analysis): Là kỹ thuật so sánh giá trị hiện tại với
giá trị bình thường đã xác định trước để kiểm tra sự bất bình thường Phân tích độ lệch
là công cụ hữu dụng cho các ứng dụng bảo mật, trong đó nó cảnh báo người quản trị có
sự thay đổi đột ngột trong việc sử dụng tài nguyên của một người dùng nào đó
Luật kết hợp (Association Rule): là quá trình xác định phụ thuộc của một hoặc
nhiều phần tử đối với một hoặc nhiều phần tử phổ biến khác trong tập dữ liệu (tập mẫu) Các mô hình này thường áp dụng trong lĩnh vực phân tích kinh doanh và thị
trường Tri thức khai thác được biểu diễn ở dạng luật Ví dụ: “Tất cả mẫu tin chứa A,B
và C, thì 70% cũng chứa D và E”
Khai thác tuần tự (Sequential Mining): Khai thác mẫu tuần tự là khai thác các
mẫu phổ biến liên quan đến thời gian hoặc các sự kiện khác Một luật mô tả mẫu tuần
tự có dạng XY phản ánh sự xuất hiện của biến cố X sẽ dẫn đến việc xuất hiện biến
cố Y kế tiếp Khai thác mẫu tuần tự được sử dụng trong việc dự báo và chăm sóc khách hàng
Mô hình phụ thuộc (Dependency modeling): Mục đích là để mô tả các phụ thuộc
quan trọng giữa các phần tử trong tập dữ liệu Phụ thuộc vào ý nghĩa mà giá trị của một phần tử có thể được dự báo với vài giá trị của các phần tử đã biết trước (ví dụ: AB, c=0.93) Tập các phụ thuộc có quan hệ với nhau hình thành một đồ thị phụ thuộc
Trang 13Khai thác mẫu từng phần (Spatial dependency analysis): Khai thác các mẫu của
dữ liệu từng phần trong hệ thống thông tin địa lý, các hệ sinh thái Ví dụ “giá bất động
sản tại vị trí X thường giảm vào tháng 05 và tăng vào tháng 10”
Khai thác mẫu đường đi (Discovering path traversal patterns): Thỉnh thoảng
các phụ thuộc giữa các phần tử có thể phù hợp với mô hình sử dụng đồ thị Một ví dụ tiêu biểu là khai thác các mẫu duyệt đường đi trong việc truy xuất web Biết được các mẫu có thể giúp thiết kế các ứng dụng web tốt hơn
1.5 Ứng dụng của khai thác dữ liệu
Các hệ thống KDD/DM và các hệ thống khác hỗ trợ xử lý khai thác tri thức được phát triển mạnh từ giữa thập niên 90 của thế kỷ trước Sau đây là các lĩnh vực ứng dụng quan trọng và các vấn đề điển hình sử dụng hệ thống KDD/DM:
Tài chính và thị trường chứng khoáng: Phân tích tính hình tài chính và dự báo
giá của các loại cổ phiếu trong thị trường chứng khoáng Danh mục giá, lãi xuất, phát hiện gian lận
Phân tích dữ liệu và ra quyết định
Khoa học xã hội: Phân tích dữ liệu nhân khẩu, dự báo kết quả bầu cử
Thiên văn học: Phân tích ảnh vệ tinh
Luật: Kiểm tra gian lận thuế…
Thị trường: Dự báo thị trường, xác định loại khách hàng và hàng hóa, các mẫu
phổ biến có triển vọng
Kỹ thuật: Khai thác mẫu mạch tích hợp, dự báo các khả năng lỗi của hệ thống
thiết bị
Nông nghiệp: Phân loại bệnh của cây trồng
Xuất bản: Khai thác profile của đọc giả để định hướng xuất bản
Trang 14Điều trị y học và chăm sóc y tế: Một số thông tin về chuẩn đoán bệnh được lưu
trong các hệ CSDL bệnh án Phân tích mối liên hệ giữa triệu chứng bệnh, chuẩn đoán
và phương pháp điều trị
1.6 Khai thác dữ liệu dựa trên cấu trúc Index-BitTable
Hầu hết các thuật toán khai thác luật kết hợp đều dựa vào thuật toán Apriori, với chi phí rất lớn cho việc duyệt tập dữ liệu và tính toán phát sinh các tập phần tử phổ biến Những thuật toán hiệu quả cho việc khai thác tập phổ biến là rất quan trọng, cho việc khai thác luật kết hợp cũng như là cho nhiều các tác vụ khai thác dữ liệu khác
Khai thác luật kết hợp bao gồm 2 giai đoạn: 1 Khai thác tập tất cả các tập phổ biến và 2 Phát sinh luật kết hợp từ tập phổ biến ở bước 1 Trong đó, giai đoạn 1 tốn nhiều chi phí và tài nguyên nhất, do vậy các chuyên gia thường tập trung xây dựng các thuật toán tối ưu ở giai đoạn này
Apriori là thuật toán nổi tiếng nhất trước đây, nó dùng một thủ tục phát sinh ứng viên rất hiệu quả, chỉ những tập phổ biến ở mức này được dùng để xây dựng các ứng viên ở mức tiếp theo Tuy nhiên nó đòi hỏi phải quét nhiều lần vào cơ sở dữ liệu, số lần tương ứng với số lượng item trong tập phổ biến dài nhất
Có nhiều nghiên cứu cải tiến và mở rộng cho thuật toán Apriori này: kỹ thuật băm[11], tiếp cận mẫu[5], hoặc như DCP[17] nỗ lực trong việc tối ưu các itemset bằng cách kết hợp kỹ thuật tỉa tập dữ liệu đã được giới thiệu trong DHP (Direct Hash with Pruning)và bằng cách đếm trực tiếp sự xuất hiện của các ứng viên Thuật toán CBAR[20] dùng clusterTable để tải dữ liệu vào trong bộ nhớ Sự tính toán độ hỗ trợ của thuật toán sẽ được thực hiện trong clusterTable và không cần quét tất cả các giao dịch lưu trong clusterTable
J.Han[9] đã giới thiệu một thuật toán FP-growth trong việc khai thác các tập phổ biến, với thuật toán theo chiều sâu Trong thuật toán này, cây FP được dùng để lưu trữ các thông tin phổ biến của dữ liệu gốc ở một dạng nén Thuật toán này chỉ quét cơ sở
Trang 15dữ liệu 2 lần và không cần phát sinh tập ứng viên Chính điều này làm FP-growth nhanh hơn Apriori
Cả Apriori và FP-growth khai thác tập phổ biến từ một tập các giao dịch có định dạng dữ liệu theo chiều ngang (tid, item), trong đó tid là số thứ tự giao dịch và itemset
là tập hợp các mục dữ liệu xuất hiện trong tid, mặt khác cũng có thể khai thác dữ liệu theo chiều dọc (item, tid)
Zaki đề xuất thuật toán Eclat[13] bằng cách khám phá dữ liệu có định dạng theo chiều dọc Việc quét dữ liệu lần đầu tiên xây dựng tid của item đơn Bắt đầu với tập phổ biến 1-phần tử, phần tử phổ biến có (k+1) được hình thành từ tập k phần tử có thể được sinh ra như Apriori, với tính toán theo chiều rộng trước Việc tính toán này được thực hiện bằng cách giao các tid của tập phổ biến có k phần tử để tính toán các tid của tập phổ biến (k+1) phần tử Tiến trình này lặp lại cho đến khi không còn tập phổ biến hoặc tập ứng viên nào Sau đó Zaki và Gouda đã giới thiệu kỹ thuật diffset[14] để giảm vùng nhớ lưu trữ Kỹ thuật diffset chỉ giữ lại sự khác biệt của các tid và các tập ứng viên khi nó sản sinh ra tập phổ biến
Gần đây, Dong và Han đã giới thiệu thuật toán BitTableFI[6], trong thuật toán này cấu trúc BitTable được dùng theo cả chiều ngang và chiều dọc để nén dữ liệu đối với việc phát sinh các tập ứng viên trở nên nhanh hơn và việc tính toán độ hỗ trợ tương ứng Thuật toán BitTableFI đạt hiệu quả cao bằng cách giảm chi phí phát sinh tập ứng viên và tính toán độ hỗ trợ Tuy nhiên trong tình huống với số lượng lớn tập phổ biến, tập nhiều phần tử hoặc ngưỡng hỗ trợ nhỏ, thuật toán này có thể phải chịu những chi phí bất thường như chi phí tính toán lớn, việc lưu trữ các ứng viên đòi hỏi không gian nhớ lớn và tính toán đỗ hỗ trợ của các ứng viên này rất phức tạp
Để giải quyết vấn đề này Wei Song đã giới thiệu thuật toán BitTableFI[19], trong thuật toán này tác giả dùng cấu trúc BitTable theo cả chiều ngang và chiều dọc Vì thế sự tìm kiếm kép được thực hiện và không gian tìm kiếm được giảm đáng kể
Trang 16Index-CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1 Ý nghĩa luật kết hợp
Luật kết hợp là một lĩnh vực quan trọng trong khai thác dữ liệu Luật kết hợp
giúp chúng ta tìm được các mối liên hệ giữa các phần tử trong tập phổ biến Là một đơn vị kinh doanh tất cả các loại dịch vụ thuộc lĩnh vực Viễn Thông – Tin học, các loại dịch vụ cung cấp cho khách hàng ngày càng nhiều, do đó việc tìm hiểu về mối quan hệ giữa các loại dịch vụ mà khách hàng sử dụng là việc làm cần thiết của Viễn thông Ninh Thuận Thông qua luật kết hợp chúng ta có thể biết được thói quen sử dụng dịch vụ của khách hàng Để tìm hiểu thói quen sử dụng các dịch vụ Viễn thông của khách hàng, chúng ta thường đặt câu hỏi “Những dịch vụ nào khách hàng thường hay sử dụng cùng lúc với nhau?” Các kết quả nhận được có thể dùng cho việc hoạch định kế hoạch kinh doanh, tiếp thị dịch vụ và chăm sóc khách hàng
Luật kết hợp là những luật có dạng “30% khách hàng gọi cước liên
tỉnh≥100.000 thì có sử dụng cước internet Ở đây “gọi cước liên tỉnh ≥100.000 ” được xem là vế trái (tiền đề) của luật, còn “sử dụng cước internet” là vế phải (kết luận) của
luật
Gọi_LT:có gọi_IP_171: có (minsup=25%, minconf=75%)
Độ hỗ trợ (minsup) và độ tin cậy (minconf) là hai thước đo cho một luật kết hợp
Độ hỗ trợ bằng 25% có nghĩa là “Trong các khách hàng có sử dụng điện thoại thì có
25% khách hàng sử dụng điện thoại ID Liên tỉnh và điện thoại IP 171” Độ tin cậy
bằng 75% có nghĩa là “Trong các khách hàng có sử dụng điện thoại liên tỉnh thì có
75% khách hàng sử dụng điện thoại IP 171”
Chúng ta nhận thấy rằng tri thức đem lại bởi luật kết hợp ở dạng trên có sự khác biệt cơ bản so với thông tin thu được từ các câu lệnh truy vấn dữ liệu thông thường như
Trang 17ngôn ngữ SQL Đó là những tri thức, những mối liên hệ chưa biết trước và mang tính
dự báo đang tìm ẩn trong dữ liệu Những tri thức này không đơn giản chỉ là kết quả của phép nhóm, tính tổng hay sắp xếp mà là kết quả của một quá trình tính toán khá phức tạp và tốn nhiều thời gian
Tuy luật kết hợp là dạng luật khá đơn giản nhưng lại mang khá nhiều ý nghĩa Thông tin mà dạng luật này đem lại là rất đáng kể và hỗ trợ không nhỏ trong quá trình
ra quyết định Tìm kiếm được các luật kết hợp thú vị và mang nhiều thông tin từ cơ sở
dữ liệu giao tác là một trong những hướng tiếp cận chính của lĩnh vực khai thác dữ liệu
2.2 Phát biểu bài toán khai thác luật kết hợp
Đặt I = {i1, i2, …, in} là tập gồm n phần tử XI được gọi là tập phần tử
T = {t1, t2, …, tm} là tập gồm m giao tác (giao tác là một bảng ghi), mỗi giao tác được định danh bởi tid (Transaction Identification)
R là một quan hệ nhị phân trên I và T (hay RIT) Nếu giao tác t có chứa mục
i thì ta viết (i, t)R (hoặc iRt)
(T, I, R) là ngữ cảnh khai thác dữ liệu
Một cơ sở dữ liệu D, về mặt hình thức, chính là một quan hệ nhị phân R như trên
Về ý nghĩa, một cơ sở dữ liệu là một tập các giao tác, mỗi giao tác t là một tập phần tử,
t2I (2I là tập tất cả tập con của I)
Độ hỗ trợ: Cho một tập phần tử XI Ký hiệu sup(X) là độ hỗ trợ (support) của một
tập phần tử X - là tỷ lệ phần trăm số giao tác trong cơ sở dữ liệu D chứa X trên tổng số
các giao tác trong cơ sở dữ liệu D, sup(X) = Card(X)/Card(D)100%
Tập phổ biến: Cho một tập phần tử XI và ngưỡng hỗ trợ tối thiểu minsup, xác định
bởi người dùng, minsup(0, 1] Một tập phần tử X được gọi là một tập phổ biến theo
Trang 18ngưỡng minsup nếu và chỉ nếu độ hỗ trợ của nó lớn hơn hoặc bằng minsup: sup(X) ≥
Độ tin cậy của luật c =sup(XY)/sup(X)100% là tỷ lệ phần trăm các giao tác trong
D có chứa X thì cũng chứa Y Về mặt xác suất, độ tin cậy c của một luật là xác suất xảy ra Y với điều kiện đã xảy ra X
Luật kết hợp tin cậy: Một luật được xem là tin cậy nếu độ tin cậy c của nó lớn hơn
hoặc bằng một ngưỡng minconf(0, 1] nào đó do người dùng xác định
Ngưỡng minconf (Minimum Confidence) phản ánh mức độ xuất hiện của Y khi cho
trước X
Luật kết hợp cần tìm là luật kết hợp thỏa minsup và minconf cho trước Do vậy chúng
ta chỉ quan tâm đến các luật có độ hỗ trợ lớn hơn độ hỗ trợ tối thiểu và độ tin cậy lớn hơn độ tin cậy tối thiểu
Hầu hết các thuật toán khai thác luật kết hợp thường chia thành hai giai đoạn:
Giai đoạn 1: Tìm tất cả các tập mục phổ biến từ cơ sở dữ liệu tức là tìm tất cả các tập phần tử X thỏa mãn sup(X) ≥ minsup
Giai đoạn 2: Sinh các luật tin cậy từ các tập phổ biến đã tìm thấy ở giai đoạn 1
Ví dụ 2.1: Cho tập giao tác CSDL D, độ hỗ trợ tối thiểu minsup = 50%, độ tin cậy tối
thiểu minconf = 70% như sau:
Trang 19Bảng 2.1 Tập giao tác CSDL D
+ Tính độ hỗ trợ của tập các phần tử phổ biến (lớn hơn hoặc bằng 50%)
Bảng 2.2 Tập phần tử phổ biến
+ Với tập phổ biến ABE (67%), ta có tập luật như sau :
Bảng 2.3 Luật kết hợp sinh từ tập {A, B, E}
Nhận xét: Độ hỗ trợ và độ tin cậy là một độ đo thú vị của luật
A, C, D, AB, AE, BC, BD, ABE (4/6)=67%
AD, CE, DE, ABD, ADE, BCE, BDE (3/6)=50%
Luật kết hợp Độ tin cậy (c>minconf) ?
Tính độ tin cậy: c =s(X Y)/s(X) 100 %
Trang 202.3 Một số hướng tiếp cận trong khai thác luật kết hợp
Lĩnh vực khai thác 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 Có những đề xuất nhằm cải tiến tốc độ thuật toán, có những đề xuất nhằm tìm kiếm luật có ý nghĩa hơn Có một số hướng chính sau đây:
Luật kết hợp nhị phân (binary association rule hoặc boolean association rule): là
hướng nghiên cứu đầu tiên của luật kết hợp Hầu hết các nghiên cứu ở thời kỳ đầu về luật kết hợp đều liên quan đến luật kết hợp nhị phân Trong dạng luật kết hợp này, các thuộc tính chỉ được quan tâm là có hay không xuất hiện trong giao tác của cơ sở dữ liệu chứ không quan tâm về “mức độ“ xuất hiện Thuật toán tiêu biểu nhất khai thác
dạng luật này là thuật toán Apriori và các biến thể của nó Đây là dạng luật đơn giản và
các luật khác cũng có thể chuyển về dạng luật này nhờ một số phương pháp như rời rạc hóa, mờ hóa, Một ví dụ về dạng luật này : “sử dụng internet =’yes’ AND số truy cập
1260 =’yes’ Sử dụng dịch vu MegaVNN =’no’, 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): Trong thực tế, thuộc tính của các cơ sở dữ liệu có kiểu rất đa dạng
(nhị phân – binary, số – quantitative, hạng mục – categorial…) Để phát hiện luật kết hợp với các thuộc tính 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ó Một ví dụ về dạng luật này “phương thức gọi =’Tự động’ AND giờ gọi
‘23:00:39 23:00:59’ AND Thời gian đàm thoại ‘200 300’ gọi liên tỉnh =’có’, với độ hỗ trợ là 23.53%, và độ tin cậy là 80%”
Luật kết hợp mờ (fuzzy association rule): Với những hạn chế còn gặp phải trong quá
trình rời rạc hóa các thuộc tính số (quantitave attributes), các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục các hạn chế trên và chuyển luật kết hợp về một
Trang 21bao tư nhân = ‘yes’ AND thời gian đàm thoại lớn AND cước nội tỉnh = ‘yes’ cước
không hợp lệ = ‘yes’, với độ hỗ trợ 4% và độ tin cậy 85%” Trong luật trên, điều kiện thời gian đàm thoại lớn ở vế trái của luật là một thuộc tính đã được mờ hóa
2.4 Một số thuật toán đã công bố
Nhiều thuật toán đã được công bố để giải quyết vấn đề khai thác luật kết hợp Một trong các thuật toán sử dụng phổ biến trong nhiều lĩnh vực cho việc liệt kê các tập phổ biến là thuật toán Apriori Thuật toán Apriori cũng là cơ sở của hầu hết các thuật
toán khác Nó sử dụng tính chất là cho 1 tập k-phần tử là phổ biến thì tất cả tập
k-1-phần tử cũng phổ biến Tính chất này giúp giảm chi phí trong việc tính toán phát sinh
tập ứng viên Tuy nhiên, trong trường hợp tập 1-phần tử phổ biến là lớn, thuật toán Apriori vẫn phải đối mặt với hai vấn đề chính là duyệt đầy đủ tập dữ liệu nhiều lần và chi phí tính toán cao
Thuật toán DHP (Dynamic Hashing and Pruning)[17] là thuật toán dựa vào
Apriori, sử dụng bảng băm (hash table) với mục đích giảm không gian ứng viên bằng cách tính xấp xỉ độ hỗ trợ cho tập k+1 phần tử trong khi đếm tập k phần tử DHP cũng
có một cải tiến quan trọng khác là sắp xếp các giao tác bằng cách xoá các giao tác không chứa bất kỳ phần tử phổ biến nào Tuy nhiên, vấn đề này cũng gặp một số khó khăn cần giải quyết
Thuật toán CBAR[20] dùng clusterTable để tải dữ liệu vào bộ nhớ Sự tính toán độ hỗ trợ của thuật toán được thực hiện trong clusterTable mà không cần quét tất
cả các giao dịch
Thuật toán FP-Growth[9] là thuật toán theo chiều rộng, thuật toán này sử
dụng một cấu trúc cây FP để lưu trữ thông tin tập phổ biến của dữ liệu gốc ở một dạng nén Điểm nổi bật của thuật toán này là chỉ quét cơ sở dữ liệu hai lần, và không cần phát sinh tập ứng viên Chính điều này làm cho FP-Growth nhanh hơn Apriori
Cả Apriori và FP-Growth khai thác tập phổ biến từ một tập các giao dịch có định dạng dữ liệu theo chiều ngang (tid, itemset), trong đó tid là số thứ tự giao dịch và
Trang 22itemset là tập hợp các mục dữ liệu xuất hiện trong tid Mặt khác cũng có thể khai thác
dữ liệu theo chiều dọc (item, tid)
Eclat[13] là thuật toán được đề xuất bởi Zaki, tác giả khai thác dữ liệu theo
chiều dọc Việc quét dữ liệu lần đầu để xây dựng tid của từng item đơn Sau đó bắt đầu với tập phổ biến 1-phần tử, phần tử phổ biến có (k+1) phần tử được hình thành từ tập k phần tử Thực hiện giao các tid của tập phổ biến có k phần tử để tính toán các tid của tập phổ biến (k+1) phần tử Tiến trình này lặp lại cho đến khi không còn tập phổ biến hoặc tập ứng viên nào Sau đó Zaki và Gouda[14] đã giới thiệu kỹ thuật diffset để giảm vùng nhớ lưu trữ Kỹ thuật diffset chỉ giữ lại sự khác biệt của các tid và các tập ứng viên khi nó sản sinh ra tập phổ biến
Gần đây, Dong và Han đã giới thiệu thuật toán BitTableFI[6], trong thuật toán
này cấu trúc BitTable được dùng theo chiều ngang và chiều dọc để nén cơ sở dữ liệu, việc phát sinh các tập ứng viên và việc tính toán độ hỗ trợ được thực hiện một cách nhanh chóng bằng cách sử dụng phép toán MID và phép giao bit
Mặc dù thuật toán BitTableFI[6] đạt được hiệu quả cao bằng cách giảm chi phí cho việc phát sinh tập các ứng viên và tính toán độ hỗ trợ Tuy nhiên, trong tình huống với số lượng lớn tập phổ biến, tập nhiều phần tử hoặc ngưỡng hỗ trợ nhỏ thì thuật toán vẫn tốn nhiều chi phí cho việc tính toán và kiểm tra các tập ứng viên Đáng lưu ý là ở thuật toán BitTableFI việc xây dựng tập ứng viên 2 phần tử được thực hiện giống thuật toán Apriori Giả sử có 104 tập phổ biến 1-phần tử, thì thuật toán cần sản sinh nhiều hơn 107 ứng viên 2 phần tử Vì thế việc lưu trữ các ứng viên sẽ cần không gian lớn, và việc tính toán độ hỗ trợ sẽ rất phức tạp
Index-BitTableFI[19] được tác giả Wei-Song và đồng nghiệp đề xuất nhằm
giải quyết những khó khăn trên Thuật toán Index-BitTableFI được xây dựng dựa trên cấu trúc BitTable theo cả chiều ngang và chiều dọc Để dùng theo chiều ngang, mảng Index và phương pháp tính Subsume được đề xuất, bằng cách tính toán này những
Trang 23kiếm theo chiều rộng Sau đó, từ những itemset này được sử dụng để tiếp tục xây dựng các tập phổ biến khác Vì vậy, sự tìm kiếm ghép được thực hiện, và không gian tìm kiếm được giảm đáng kể Ngoài ra, tác giả cũng đã chứng minh được những tập phổ biến itemset được đại diện bởi item sẽ có cùng độ hỗ trợ với item, và danh sách tập phổ biến được xây dựng bằng cách kết hợp item với tất cả các tập con của subsume của nó
Vì vậy chi phí xử lý cho những loại itemset này là thấp hơn và hiệu quả hơn
Trong đề tài này chúng tôi lựa chọn thuật toán khai thác tập phổ biến BitTableFI dựa trên cấu trúc Index-BitTable, thuật toán bao gồm những bước sau:
Index-1 Nén dữ liệu vào bảng BitTable
2 Xây dựng mảng Index là danh sách tập phổ biến 1-phần tử
3 Tính subsume của từng Index[i], trong đó Index[i] là phần tử đại diện của subsume
4 Duyệt bảng Index và tiến hành tìm tất cả các phần tử phổ biến khác
Trang 24CHƯƠNG 3 KHAI THÁC TẬP PHỔ BIẾN DỰA TRÊN CẤU TRÚC
INDEX-BITTABLE
3.1 Cấu trúc BitTable
BitTable là tập các số nguyên mà sự hiện diện của nó biểu thị cho mục dữ liệu Nếu mục dữ liệu I xuất hiện trong giao dịch t thì bit thứ i của t trong BitTable sẽ mang giá trị 1 Với tập ứng viên được nén, nếu tập ứng viên c có chứa mục dữ liệu I thì bit thứ I của bảng BitTable sẽ mang giá trị 1, ngược lại nó sẽ mang giá trị 0 Với dữ liệu được nén, thì BitTable được sử dụng theo chiều dọc Nếu mục dữ liệu I xuất hiện trong giao dịch t thì bit thứ I của t trong BitTable sẽ mang giá trị 1 Nếu kích cỡ của mục dữ liệu là S, kích cỡ của cơ sở dữ liệu là lớn hơn kích cỡ W của bộ nhớ thì kích cỡ của mảng BitTable sẽ là S/W+1 được sử dụng để lưu trữ dữ liệu nén[6]
Ví dụ: Cho CSDL D như sau
Trang 25Bảng 3.2 Minh họa dữ liệu được nén vào bảng BitTable
3.2 Thuật toán BitTableFI
Thuật toán Apriori có 2 vấn đề[6] Thứ nhất, tiến trình phát sinh tập ứng viên Ckcần phải so sánh các cặp phần tử sao cho có (k-1) phần tử đầu phải giống nhau và nó làm tốn nhiều thời gian xử lý của CPU Thứ hai, cần phải duyệt Ck để sinh ra Lk Trong quá trình duyệt, thuật toán sẽ tính toán số lần mà mỗi mục dữ liệu trong Lk xuất hiện trong quá trình giao dịch Nếu Lk được sinh ra, thì cần phải duyệt dữ liệu k lần
Thuật toán BitTableFI[6] là thuật toán được đề xuất gần đây, không giống như những thuật toán được đề xuất trước đây dựa trên nền tảng Apriori Những thuật toán này chủ yếu quan tâm đến kỹ thuật tỉa trong quá trình tìm kiếm tập phổ biến, nhưng tiến trình phát sinh tập ứng viên và tính toán độ hỗ trợ vẫn còn lãng phí thời gian
Thuật toán BitTableFI có ý nghĩa khác hơn so với thuật toán Apriori và những thuật toán mở rộng từ Apriori Trong thuật toán này, dữ liệu được nén vào bảng BitTable, việc phát sinh tập ứng viên và tính toán độ hỗ trợ được thực hiện một cách nhanh chóng
3.2.1 Tìm nhanh tập ứng viên
Trước khi thực hiện việc phát sinh nhanh tập ứng viên, thì tập phổ biến 1-phần
tử phải được thực hiện trước Tất cả tập không phổ biến 1-phần tử phải được lược bỏ
để làm giảm kích thước của BitTable và cải thiện hiệu quả của tiến trình phát sinh ứng
Trang 26viên, vì tất cả tập không phổ biến 1-phần tử không có ích cho tiến trình phát sinh ứng viên kế tiếp[6]
Kế đến, tập phổ biến 1-phần tử được sắp xếp theo thứ tự ký tự và mỗi mục dữ liệu được đánh dấu bởi ký tự định danh Sau khi tập phổ biến 2-phần tử được phát sinh, tập các mục dữ liệu phổ biến được xây dựng
Theo Apriori, tập ứng viên Ck+1 được xây dựng bằng cách giao hai mục dữ liệu của Lk trong đó có (k-1) phần tử giống nhau Trong mỗi thành phần E1 trong tập phổ biến của BitTable BLk, một biến MID được phát sinh bằng cách thay thế bit 1 cuối cùng của E1 với 0 Với mỗi thành phần E2 sau E1, phép dịch chuyển bitwise và toán tử
& được thực hiện với MID Nếu kết quả trả về bằng MID, thì E1 và E2 trong Lk có 1) mục dữ liệu giống nhau Khi đó, việc phát sinh tập các ứng viên bằng việc thực hiện phép dịch chuyển bitwise trên E1 và E2 và các tập ứng viên này được thêm vào BitTable BCk+1
(k-Việc nén các tập phổ biến vào BitTable đã tiết kiệm nhiều bộ nhớ và tính toán bằng bitwise và phép toán and/or nhanh hơn rất nhiều so với việc so sánh mỗi mục dữ liệu như Apriori Tiến trình tìm nhanh tập ứng viên được minh họa như sau[6]:
Trang 27Hình 3.1- Minh họa tiến trình tìm tập ứng viên
Ví dụ: Với dữ liệu ở bảng 3.1, minsup=2
Sau khi duyệt CSDL lần đầu tiên, L1={1, 2, 3, 5} được sinh ra, mục dữ liệu 4 không là tập phổ biến, vì thế tập phổ biến 1-phần tử được sắp xếp lại thành L1={1, 2,
3, 4} để làm giảm kích thước của BitTable Như vậy, ta có 4 tập phổ biến 1-phần tử, thì chiều dài của BitTable là 4
Sau khi BitTableFI hoàn thành, các tập phổ biến sẽ được trả lại giá trị ban đầu
Trang 28Thực hiện tính C1={{1,2}, {1,3}, {1,4}, {2,3}, {2,4}, {3,4}}
Và L2 được sinh ra như sau L2={{1,3}, {2,3}, {2,4}, {3,4}} các bit nhị phân tương ứng của BitTable BL2 sẽ là {{1 0 1 0}, {0 1 1 0}, {0 1 0 1}, {0 0 1 1}} Vì thế các giá trị tương ứng của BitTable BL2 sẽ là {10 6 5 3}
Tập {1, 3} có MID=8 vì ta thay thế bit 1 cuối cùng của {1, 3} (tương ứng là {1
0 10} ) với 0 ta được {1 0 0 0} Sau đó ta thực hiện phép dịch chuyển bitwise và phép toán and trên tập {6, 5, 3} (tương ứng là {2, 3} {2, 4} {3, 4}) và kết quả là không có tập nào được sinh ra
Tương tự, xét tập {2, 3} có MID=4, thực hiện phép dịch chuyển bitwise trên tập {5, 3} (tương ứng {2, 4} {3, 4}) và kết quả ta có {2, 3, 4}
MID(L2[i]) MID&L2[j] BitTable BC3
Trang 293.2.2 Cách tính nhanh độ hỗ trợ
Việc tính toán độ hỗ trợ của các tập ứng viên được hiện trực tiếp trên bảng BitTable Đối với mỗi mục dữ liệu của tập ứng viên, sẽ có tương ứng từng phần tử trên bảng BitTable, sau đó áp dụng toán tử bitwise để tính giao các phần tử của BitTable
Số lượng bit 1 của giá trị kết quả chính là độ hỗ trợ của tập ứng viên cần tính
Tiến trình tính nhanh độ hỗ trợ của các ứng viên được minh họa như sau[6]:
Hình 3.3- Minh họa tiến trình tính nhanh độ hỗ trợ của các ứng viên
Đếm số lượng bit 1 của E1
Thêm E1vào BCk nếu sup(E1) ≥ minsup
Output: tập phổ biến
BitTable BLk
No
Yes
Trang 30Ví dụ: để tính độ hỗ trợ của ứng viên {2, 3, 5} thực hiện
Hình 3.4- Minh họa cách tính độ hỗ trợ
3.2.3 Thuật toán BitTableFI
Với thuật toán BitTableFI, đầu tiên phải tìm tập phổ biến 1-phần tử và thực hiện việc gán dữ liệu của CSDL vào bảng BitTable Sau đó sử dụng tiến trình phát sinh nhanh tập ứng viên và tính nhanh độ hỗ trợ để phát sinh toàn bộ tập phổ biến cho đến khi không còn mục dữ liệu nào trong Lk
Thuật toán BitTable được minh họa bởi đoạn mã giả sau[6]:
trong khi (Lk không rỗng)
Ck=gen_candidate(Lk-1)
Lk=support_count(Ck,db,minsup) }
Trang 313.3 Thuật toán Index-BitTableFI
Thuật toán BitTableFI cho kết quả tốt có thể nói là đáng kể trong việc giảm chi phí việc phát sinh các tập ứng viên và tính toán độ hỗ trợ Tuy nhiên, trong tình huống
là khi số lượng các tập phổ biến lớn, nhiều mục dữ liệu, hoặc là ngưỡng hỗ trợ quá bé thì chi phí cho việc phát sinh các tập ứng viên là quá lớn[19] Chẳng hạn, việc phát sinh và tính toán độ hỗ trợ cho các tập ứng viên có chiều dài là 2 thì trở thành vấn đề,
vì ở đây việc xây dựng các ứng viên có độ dài bằng 2 được thực hiện giống như thuật toán Apriori đã làm Vì thế, việc lưu trữ các bit-vectors của các ứng viên đòi hỏi không gian lớn, việc tính độ hỗ trợ của các ứng viên sẽ rất phức tạp
Để giảm bớt không gian tìm kiếm và thừa hưởng những lợi thế của BitTable, khai thác dữ liệu theo cả chiều ngang và chiều dọc, mảng Index được đề xuất[19] Mục đích là để xác định rằng những itemset xuất hiện đồng thời cùng với các item đại diện Kết quả là tất cả các itemset đều là tập phổ biến Vì thế, các hoạt động dư thừa trên các thế hệ ứng viên và kiểm tra tập phổ biến có thể tránh được
Trang 32 ( ) ( )
)(item j I item j g item g j subsume
item : là mục dữ liệu đại diện
subsume: là tập các mục dữ liệu j, sao cho j đứng sau item và tập các giao dịch chứa mục dữ liệu j phải bao phủ các tập giao dịch có chứa mục dữ liệu item
Thuật toán 1: xây dựng bảng Index
Input: CSDL D, ngưỡng hỗ trợ minsup
Output: mảng Index
1 Duyệt D và xóa những item không là phổ biến
2 Sắp xếp danh sách tập phổ biến 1-phần tử tăng dần theo sup: a1,a2, ,am
3 Với mỗi phần tử j của mảng Index thực hiện:
4 Gán Index[j].item =aj
5 Xây dựng BitTable từ cơ sở dữ liệu
6 Với mỗi phần tử j của mảng Index thực hiện:
7 Gán Index[j].subsume=Ø
8 Gán candidate=t g(index[j].item)t
9 Với mỗi i>j thực hiện
10 Nếu giá trị của bit thứ i trong candidate là 1 thì
11 Đưa index[i].item vào index[j].subsume
12 Xuất mảng Index
Ở thuật toán này:
Bước (1) duyệt qua cơ sở dữ liệu để tìm tập phổ biến 1-phần tử
j đứng sau item