Tải bản đầy đủ (.pdf) (65 trang)

Khai thác tập phổ biến dựa trên cấu trúc index bittable

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.65 MB, 65 trang )




1

ĐẠ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
INDEX-BITTABLE






LUẬN VĂN THẠC SĨ: HỆ THỐNG THÔNG TIN













Thành phố Hồ Chí Minh – 2010

2


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
INDEX-BITTABLE




Chuyên ngành: HỆ THỐNG THÔNG TIN
Mã số:



LUẬN VĂN THẠC SĨ:
(HỆ THỐNG THÔNG TIN)








NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS. LÊ HOÀI BẮC





Thành phố Hồ Chí Minh – 2010
3


3
LỜI CẢM ƠN
Tôi chân thành cảm ơn PGS.TS.Lê Hoài Bắc, Thầy đã quan tâm, tận tình hướng

dẫn tôi thực hiện cuốn luận văn này.
Tôi xin chân thành cảm ơn quý Thầy Cô trường Đại học Tự Nhiên đã tận tình
giảng dạy, trang bị cho tôi những kiến thức quý báu trong suốt quá trình học tập và
cung cấp cho tôi nhiều tài liệu tham khảo để tôi hoàn thành luận văn này.
Xin 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













4


4
MỤ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
5


5
3.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


















6


6
MỞ ĐẦU

Trong thời đại bùng nổ công nghệ thông tin, các công nghệ lưu trữ dữ liệu ngày
càng phát triển nhanh chóng, tạo điều kiện cho các đơn vị thu thập dữ liệu nhiều hơn
và tốt hơn, đặc biệt là các doanh nghiệp kinh doanh các dịch vụ Viễn Thông – Tin học.
Các doanh nghiệp đã nhận thức được tầm quan trọng của việc nắm bắt và xử lý thông
tin, giúp doanh nghiệp lập ra kế hoạch, chiến lược kinh doanh tốt và hiệu quả hơn. Tất
cả 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
7


7
Thuậ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á


8


8
CHƯƠ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
9


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
Chọn dữ
liệu
Tiền xử lý
Chuyển đổi
dữ liệu
Khai thác
dữ liệu
Diễn giải và đánh
giá tri thức

10


10
con 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.
11



11
Cơ 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
12



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 XY 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ụ: AB,
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.
13


13
Khai 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.
14


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ở
15


15
dữ 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 Index-
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ể.
16


16
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ư
17


17
ngô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 = {i
1
, i
2
, …, i
n
} là tập gồm n phần tử. XI được gọi là tập phần tử.
 T = {t
1
, t
2
, …, t
m
} 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 RIT). 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ử,
t

2

I
(2
I
là tập tất cả tập con của I).
Độ hỗ trợ: Cho một tập phần tử XI. 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ử XI 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
18


18
ngưỡng minsup nếu và chỉ nếu độ hỗ trợ của nó lớn hơn hoặc bằng minsup: sup(X) ≥
minsup.
Ký hiệu FI là tập các tập phổ biến theo ngưỡng minsup tức là FI = {X

I | sup(X) ≥
minsup}.
Luật kết hợp có dạng: X

c
Y ;
trong đó:
X, YI, thỏa mãn điều kiện XY=Ø
c: là độ tin cậy.
Độ hỗ trợ của luật kết hợp X Y là tỷ lệ phần trăm các giao tác trong D có chứa X và
Y, sup(XY) = Card(XY)/Card(D)100%.

Độ tin cậy của luật c =sup(XY)/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:
19


19
Bả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.

TID

Tập phần tử

1 A B D E
2 B C E
3 A B D E
4 A B C E
5 A B C D E
6 B C D

Tập phần tử phổ biến FI sup

Theo công thức: Card(x)/Card(d)

B (6/6) =100%
E, BE (5/6)=83%
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 %
A
 
%100
BE;

B
 
%67
AE;
Không
E
 
%80
AB

AB
 
%100

E


AE
 
%100
B


BE
 
%80
A



20


20
2.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
dạng tự nhiên hơn, gần gũi hơn với người sử dụng một ví dụ của dạng này là: “thuê
21


21
bao 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à
22


22
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).
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ó 10
4
tập phổ biến 1-phần tử, thì thuật toán cần sản sinh nhiều
hơn 10
7
ứ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
itemset được xuất hiện đồng thời cùng với item đại diện của nó theo phương pháp tìm
23



23
kiế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 Index-
BitTableFI dựa trên cấu trúc Index-BitTable, thuật toán bao gồm những bước sau:
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.













24



24
CHƯƠ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
Bảng 3.1. CSDL D

Một tập ứng viên c={B, C, E} có thể được nén thành 13 và có mã số nhị phân là
01101.
Và dữ liệu D được nén thành {10 7 14 8 7} với các dãy nhị phân là {{1010},
{0111},{1110}, {1000}, {0111}}


tid item
1 A, C, D
2 B, C, E
3 A, B, C, E
4 B, E
25



25
Bả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 C
k

cầ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 C
k
để sinh ra L
k
. 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 L
k
xuất hiện
trong quá trình giao dịch. Nếu L
k
đượ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
tid A B C D E
1 1 0 1 1 0
2 0 1 1 0 1
3 1 1 1 0 1
4 0 1 0 0 1
BitTable

10 7 14 8 7

×