Tải bản đầy đủ (.doc) (27 trang)

Tiểu luận công nghệ tri thức và ứng dụng TÌM LUẬT KẾT HỢP

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 (732.79 KB, 27 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Khoa Khoa Học Máy Tính
**********    **********
PHƯƠNG PHÁP
TÌM LUẬT KẾT HỢP
TRONG KHO DỮ LIỆU SIÊU THỊ
Bộ môn : Công nghệ tri thức & Ứng dụng
GVHD : GS-TSKH. Hoàng Văn Kiếm
Thực hiện : Lê Minh Trí (CH1101148)
Nguyễn Văn Sang (CH1101128)
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Thành phố Hồ Chí Minh - Tháng 05 Năm 2012
BẢNG PHÂN CÔNG
 Lê Minh Trí:
o Chương I: Tổng quan
o Chương III: Khai phá dữ liệu
o Chương IV: Luật kết hợp
 Một số khái niệm cơ bản
 Thuật toán tìm luật kết hợp Apriori
 Nguyễn Văn Sang:
o Chương II: Tri thức
o Chương IV: Luật kết hợp
 Ưu điểm và khuyết điểm của thuật toán Apriori
 Cải tiến thuật toán
o Chương VI: Kết luận & Hướng phát triển đề tài
 Lê Minh Trí & Nguyễn Văn Sang:
o Lời nói đầu
o Chương V: Cài đặt chương trình thử nghiệm
o Source code
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 2


Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
MỤC LỤC
Nội dung Trang
LỜI NÓI ĐẦU 4
Chương I>Tổng quan: 5
1/Mở đầu: 5
2/Lịch sử nghiên cứu và quan điểm lựa chọn vấn đề: 5
3/Quá trình nghiên cứu: 5
Chương II>Tri thức: 6
1/Khái niệm: 6
2/Phân loại: 6
3/Các dạng biểu diễn tri thức thường gặp: 6
Chương III>Khai phá dữ liệu: 7
1/Khai phá dữ liệu (Data Mining): 7
2/Một số phương pháp khai phá dữ liệu: 8
Chương IV>Luật kết hợp: 10
1/Một số khái niệm cơ bản: 10
2/Thuật toán tìm luật kết hợp Apriori: 12
3/Ưu điểm và khuyết điểm của thuật toán Apriori: 14
4/Cải tiến thuật toán: 14
Chương V>Kết luận & Hướng phát triển đề tài: 25
1/Kết luận : 25
2/Hướng phát triển đề tài: 25
TƯ LIỆU THAM KHẢO 26
TÀI LIỆU THAM KHẢO 27
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 3
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
LỜI NÓI ĐẦU
Từ thời xa xưa đa phần các doanh nghiệp đều chọn cho mình cách lưu trữ thông
tin bằng việc lưu trữ những văn thư thì trong thời đại ngày nay, với sự bùng nổ và

phát triển của công nghệ thông tin họ đã chọn cho mình cách lưu trữ dữ liệu trên máy
tính. Nhưng theo thời gian kho dữ liệu ấy cũng càng ngày càng tăng về lượng dữ liệu,
vượt quá khả năng diễn dịch và lĩnh hội của con người. Chúng ta bị tràn ngập trong
dữ liệu nhưng lại thiếu những tri thức mới và hữu ích. Việc tổ chức quản lý và sử
dụng những dữ liệu đó như thế nào trong tương lai lại là một bài toán nan giải của các
doanh nghiệp nói chung và trong lĩnh vực kinh doanh nói riêng. Theo đó một số các
kỹ thuật phân tích dữ liệu một cách thông minh và tự động đã được chọn nhằm tạo ra
các tri thức có giá trị tiềm ẩn trong kho dữ liệu. Khái niệm “Khai phá dữ liệu” hay
còn gọi là Data Mining được ra đời để hỗ trợ một số các công cụ kỹ thuật về phân
tích dự liệu đó.
Khai phá dữ liệu bao gồm rất nhiều những kỹ thuật phân tích dữ liệu bên trong
như: luật kết hợp, phân loại dữ liệu, gom nhóm dữ liệu, lập mô hình, dự báo…nhưng
tiềm ẩn quan trọng nhất vẫn là phương pháp tìm luật kết hợp để tạo ra các tri thức
hữu dụng. Ví dụ như chúng ta có thể dự đoán được những sản phẩm nào sẽ được mua
nhiều trong tương lai đối với hệ thống siêu thị hay dự đoán thị trường đối với lĩnh
vực kinh doanh chứng khoán…
Trong phạm vi bài tiểu luận này, nhóm chúng em sẽ trình bày một cách tổng quát
về cơ sở lý thuyết của phương pháp tìm luật kết hợp, ứng dụng thuật toán Apriori và
đồng thời áp dụng những lý thuyết đó để xây dựng nên một ứng dụng nhỏ để minh
họa cho phương pháp tìm luật kết hợp đó.
Xin gửi lời cảm ơn đến các anh/chị trong cùng khóa học đã nhiệt tình chia sẽ tài
liệu, những thông tin cần thiết trong suốt quá trình học. Và đặc biệt em cũng xin chân
thành cảm ơn thầy Hoàng Văn Kiếm, người đã tận tình truyền đạt cho chúng em
những kiến thức bổ ích về môn “Công nghệ tri thức và ứng dụng”. Từ đó giúp em có
thể nắm vững hơn về cơ sở lý thuyết, tạo điều kiện thuận lợi để nhóm chúng em hoàn
thành tốt bài tiểu luận này.
Thân mến,
Nhóm nghiên cứu
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 4
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm

Chương I> Tổng quan:
1/ Mở đầu:
Vào cuối những năm 1980 khái niệm khai phá dữ liệu (Data Mining) ra đời. Nó
bao hàm một loạt các kỹ thuật nhằm phát hiện ra các thông tin có giá trị tiềm ẩn trong
các kho dữ liệu. Về bản chất, khai phá dữ liệu liên quan đến việc phân tích các dữ
liệu và sử dụng các kỹ thuật để tìm ra các tri thức hữu dụng.
Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã dùng khái niệm “Phát hiện tri
thức” trong cơ sở dữ liệu (Knowledge Discovery in Database – KDD) để chỉ toàn bộ
quá trình phát hiện các tri thức hữu dụng từ các kho dữ liệu lớn. Do đó khai phá dữ
liệu chỉ là một phần trong khái niệm “Phát hiện tri thức” ấy. Tuy nhiên nó cũng chính
là một bước đặc biệt quan trọng trong toàn bộ quá trình, sử dụng các giải thuật đặc
trưng để chiết xuất ra các giá trị tiềm ẩn từ kho dữ liệu.

Hiện nay khai phá dữ liệu được ứng dụng vào rất nhiều lĩnh vực cụ thể khác nhau
như: y tế, dầu khí, khí tượng, kinh doanh, y học, web mining, tin-sinh, tài chính và thị
trường chứng khoán, bảo hiểm
Trong phạm vi bài tiểu luận này, nhóm chúng em chỉ xin trình bày một vấn đề
quan trọng nhất tiềm ẩn trong cơ sở dữ liệu đó chính là bài toán về tìm luật kết hợp
trong kho dữ liệu siêu thị dựa trên thuật toán Apriori.
2/ Lịch sử nghiên cứu và quan điểm lựa chọn vấn đề:
Đứng trên quản điểm vừa tham gia khóa học, vừa tìm hiểu lý thuyết, lại vừa xây
dựng bài tiểu luận này, tuy thời gian có hạn nhưng nhóm chúng em cũng đã cố gắng
để hoàn thành bài tiểu luận này.
Từ những vấn đề đã được học ở môn “Công nghệ tri thức và ứng dụng” và nhìn
vào thực tiễn về tầm quan trọng của việc khai phá dữ liệu trong hệ thống các cơ quan,
công ty, xí nghiệp, nhà máy…nhóm chúng em đã quyết định chọn và tìm hiểu về bài
toán tìm luật kết hợp trong Data Mining.
3/ Quá trình nghiên cứu:
Sau khi kết thúc môn học “Công nghệ tri thức và ứng dụng”, nhóm chúng em đã
cố gắng sắp xếp, bố trí thời gian hợp lý và phân công công việc cho từng người để

cùng tìm hiểu về luật kết hợp trong Data Mining. Tuần lễ đầu tiên chính là giai đoạn
tìm hiểu về lý thuyết của thuật toán tìm luật kết hợp. Thời gian còn lại, từ những tư
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 5
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
liệu và tài liệu mà nhóm chúng em đã tìm hiểu được và bắt đầu kết hợp lại để tiến
hành xây dựng nên bài tiểu luận này.
Chương II>Tri thức:
1/ Khái niệm:
Là sự hiểu biết thông qua các quá trình nhận thức phức tạp như: quá trình tri
giác, quá trình học tập, tiếp thu, quá trình giao tiếp, quá trình tranh luận, quá trình
lý luận, hay kết hợp các quá trình này.
2/ Phân loại:
Tri thức có 2 dạng tồn tại chính là tri thức hiện và tri thức ẩn:
a) Tri thức hiện: là những tri thức được giải thích và mã hóa dưới dạng văn
bản, tài liệu, âm thanh, phim, ảnh,… thông qua ngôn ngữ có lời hoặc
không lời, nguyên tắc hệ thống, chương trình máy tính, chuẩn mực hay các
phương tiện khác. Đây là những tri thức đã được thể hiện ra ngoài và dễ
dàng chuyển giao, thường được tiếp nhận qua hệ thống giáo dục và đào tạo
chính quy.
b) Tri thức ẩn: là những tri thức thu được từ sự trải nghiệm thực tế, dạng tri
thức này thường ẩn trong mỗi cá nhân và rất khó “mã hóa” và chuyển giao,
thường bao gồm: niềm tin, giá trị, kinh nghiệm, bí quyết, kỹ năng VD:
Trong bóng đá, các cầu thủ chuyên nghiệp có khả năng cảm nhận bóng rất
tốt; trong một siêu thị điện máy bằng việc phân tích các giao dịch người ta
thấy rằng, có tới 60% độ tin cậy cho việc khách hàng khi mua máy tính thì
cũng mua phần mềm diệt virus. Đây là một dạng tri thức ẩn, nó nằm trong
mỗi cầu thủ Nó không thể “mã hóa” thành văn bản, không thể chuyển
giao, mà người ta chỉ có thể có bằng cách tự mình luyện tập.
3/ Các dạng biểu diễn tri thức thường gặp:
Là đưa ra những giải pháp mới để hoàn thành công việc hoặc làm cho công

việc đó trở nên dễ thực hiện hơn.
c) Tri thức thủ tục: mô tả cách thức giải quyết một vấn đề. Loại tri thức này
đưa ra giải pháp để thực hiện một công việc nào đó.
d) Tri thức khai báo (tri thức mô tả): cho biết một vấn đề được thấy như thế
nào. Loại tri thức này bao gồm các phát biểu đơn giản, dưới dạng các
khẳng định logic đúng hoặc sai.
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 6
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
e) Siêu tri thức: mô tả tri thức về tri thức. Loại tri thức này giúp lựa chọn tri
thức thích hợp nhất trong số các tri thức khi giải quyết một vấn đề.
f) Tri thức heuristic (Tri thức nông cạn): mô tả các “mẹo” để dẫn dắt tiến
trình lập luận. Nó không bảm đảm hoàn toàn chính xác về kết quả giải
quyết vấn đề.
g) Tri thức có cấu trúc: mô tả tri thức theo cấu trúc. Loại tri thức này mô tả
mô hình tổng quan hệ thống theo quan điểm của chuyên gia, bao gồm khái
niệm, khái niệm con, và các đối tượng; diễn tả chức năng và mối liên hệ
giữa các tri thức dựa theo cấu trúc xác định
Chương III> Khai phá dữ liệu:
1/ Khai phá dữ liệu (Data Mining):
Định nghĩa: Khai phá dữ liệu là một tập hợp các kỹ thuật được sử dụng để tự
động khai thác và tìm ra các mối quan hệ lẫn nhau của dữ liệu trong một tập hợp dữ
liệu khổng lồ và phức tạp, đồng thời cũng tìm ra các mẫu tiềm ẩn trong tập dữ liệu
đó.
Khai phá dữ liệu là một bước chủ chốt trong các bước của quá trình phát hiện tri
thức (Knowledge Discovery in Database – KDD).
Quá trình phát hiện tri thức: là quá trình khám phá các tri thức mới và các tri
thức hữa ích ở dạng tiềm năng trong nguồn dữ liệu đã có. Nó 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à có quay
trở lại các bước đã qua.
Các bước phát hiện tri thức như sau:

a) Làm sạch dữ liệu (data cleaning): loại bỏ nhiễu hoặc các dữ liệu không thích
hợp.
b) Làm giàu dữ liệu (data enrichment): tích hợp dữ liệu từ các nguồn khác nhau
như: CSDL, Kho dữ liệu, file text
c) Chọn lọc dữ liệu (data selection): chọn những dữ liệu liên quan trực tiếp đến
nhiệm vụ sẽ được thu thập từ các nguồn dữ liệu ban đầu.
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 7
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
d) Chuyển đổi dữ liệu (data transformation): dữ liệu sẽ được chuyển đổi về
dạng phù hợp cho việc khai phá bằng cách thực hiện các thao tác nhóm hoặc
tập hợp.
e) Khai phá dữ liệu (data mining): là giai đoạn quan trọng nhất, trong đó các
phương pháp thông minh sẽ được áp dụng để trích xuất ra các mẫu dữ liệu.
f) Đánh giá mẫu (pattern evaluation): đánh giá sự hữu ích của các mẫu biểu
diễn tri thức dựa vào một số phép đo.
g) Biểu diễn dữ liệu (knowlegde presentation): sử dụng các kỹ thuật trình diễn
và trực quan hoá dữ liệu để biểu diễn tri thức khai phá được cho người sử
dụng.
Hình 1 – Quá trình phát hiện tri thức từ cơ sở dữ liệu
2/ Một số phương pháp khai phá dữ liệu:
a) Phương pháp qui nạp: Một cơ sở dữ liệu là một kho thông tin nhưng các
thông tin quan trọng hơn cũng có thể được suy diễn từ kho thông tin đó. Có
hai kỹ thuật chính để thực hiện việc này là suy diễn và quy nạp.
 Phương pháp suy diễn: Nhằm rút ra thông tin là kết quả logic của các
thông tin trong cơ sở dữ liệu. Phương pháp suy diễn dựa trên các sự kiện
chính xác để suy ra các tri thức mới từ các thông tin cũ. Mẫu chiết xuất
được bằng cách sử dụng phương pháp này thường là các luật suy diễn.
 Phương pháp quy nạp: Phương pháp quy nạp suy ra các thông tin được sinh
ra từ cơ sở dữ liệu. Có nghĩa là nó tự tìm kiếm, tạo mẫu và sinh ra tri thức chứ
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 8

Làm giàu dữ liệu
Làm sạch dữ
liệu
Chọn lọc dữ liệu
Chuyển đổi dữ liệu
Khai phá dữ liệu
Đánh giá mẫu
Biểu diễn dữ liệu
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
không phải bắt đầu với các tri thức đã biết trước. Các thông tin mà phương
pháp này đem lại là các thông tin hay các tri thức cấp cao diễn tả về các đối
tượng trong cơ sở dữ liệu. Phương pháp này liên quan đến việc tìm kiếm các
mẫu trong CSDL. Trong khai phá dữ liệu, quy nạp được sử dụng trong cây
quyết định và tạo luật.
b) Phương pháp cây quyết định và luật:
 Cây quyết định: Cây quyết định là một mô tả tri thức dạng đơn giản nhằm
phân các đối tượng dữ liệu thành một số lớp nhất định. Các nút của cây
được gán nhãn là tên các thuộc tính, các cạnh được gán các giá trị có thể
của các thuộc tính, các lá mô tả các lớp khác nhau. Các đối tượng được
phân lớp theo các đường đi trên cây, qua các cạnh tương ứng với các giá
trị, thuộc tính của đối tượng tới lá.
 Tạo luật: Các luật được tạo ra nhằm suy diễn một số mẫu dữ liệu có ý
nghĩa về mặt thống kê. Các luật có dạng Nếu P thì Q, với P là mệnh đề
đúng với một phần trong CSDL, Q là mệnh đề dự đoán.
Cây quyết định và luật có ưu điểm là hình thức mô tả đơn giản, mô hình
suy diễn khá dễ hiểu đối với người sử dụng. Tuy nhiên, giới hạn của nó là
mô tả cây và luật chỉ có thể biểu diễn được một số dạng chức năng và vì
vậy giới hạn về cả độ chính xác của mô hình.
c) Phương pháp mạng Neural:
Mạng Neuron là tiếp cận tính toán mới liên quan tới việc phát triển cấu trúc

toán học và khả năng học. Các phương pháp là kết quả của việc nghiên cứu mô
hình học của hệ thống thần kinh con người.
Mạng Neuron có thể đưa ra ý nghĩa từ các dữ liệu phức tạp hoặc không chính
xác và có thể được sử dụng để chiết xuất các mẫu và phát hiện ra các xu hướng
quá phức tạp mà con người cũng như các kỹ thuật máy tính khác không thể phát
hiện được. Khi đề cập đến khai thác dữ liệu, người ta thường đề cập nhiều đến
mạng Neuron. Tuy mạng Neuron có một số hạn chế gây khó khăn trong việc áp
dụng và phát triển nhưng nó cũng có những ưu điểm đáng kể.
d) Phương pháp tìm luật kết hợp:
Phương pháp này nhằm phát hiện ra các luật kết hợp giữa các thành phần dữ liệu
trong cơ sở dữ liệu. Mẫu đầu ra của giải thuật khai phá dữ liệu là tập luật kết hợp tìm
được. Ta có thể lấy một ví dụ đơn giản về luật kết hợp như sau: sự kết hợp giữa hai
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 9
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
thành phần A và B có nghĩa là sự xuất hiện của A trong bản ghi kéo theo sự xuất hiện
của B trong cùng bản ghi đó: A = > B.
Việc phát triển một thuật toán phải phát hiện luật này trong cơ sở dữ liệu lớn là
không khó. Tuy nhiên, vấn đề là ở chỗ có thể có rất nhiều luật kiểu này hoặc là ta chỉ
biết một tập nhỏ dữ liệu trong cơ sở dữ liệu lớn thoả mãn tiền đề của luật. Ví dụ chỉ
có số ít người mua sách tiếng anh mà mua thêm đĩa CD. Số lượng các luật kết hợp
trong một số cơ sở dữ liệu lớn gần như vô hạn. Do vậy thuật toán sẽ không thể phát
hiện hết các luật và không phân biệt được luật nào là thông tin thực sự có giá trị và
thú vị.
Vậy chúng ta đặt ra câu hỏi là luật kết hợp nào là thực sự có giá trị? Chẳng hạn ta
có luật: Âm nhạc, ngoại ngữ, thể thao = > CD, nghĩa là những người mua sách âm
nhạc, ngoại ngữ, thể thao thì cũng mua đĩa CD. Lúc đó ta quan tâm đến số lượng
trường hơp khách hàng thoả mãn luật này trong cơ sở dữ liệu hay độ hỗ trợ cho luật
này. Độ hỗ trợ cho luật chính là phần trăm số bản ghi có cả sách âm nhạc, ngoại ngữ,
thể thao và đĩa CD hay tất cả những người thích cả ba loại sách trên.
Tuy nhiên giá trị hỗ trợ là không đủ. Có thể có trường hợp ta có một nhóm tương đối

những người đọc cả ba loại sách trên nhưng lại có một nhóm với lượng lớn hơn những
người thích sách thể thao, âm nhạc, ngoại ngữ mà không thích mua đĩa CD. Trong
trường hợp này tính kết hợp rất yếu mặc dù độ hỗ trợ tương đối cao. Như vậy chúng ta
cần thêm một độ đo thứ hai đó là độ tin cây (Confidence). Độ tin cậy là phần trăm các
bản ghi có đĩa CD trong số các bản ghi có sách âm nhạc, thể thao, ngoại ngữ.
Nhiệm vụ của việc phát hiện các luật kết hợp là phải tìm tất cả các luật dạng X =>
B sao cho tần số của luật không nhỏ hơn ngưỡng Minsup cho trước và độ tin cậy của
luật không nhỏ hơn ngưỡng Minconfi cho trước. Từ một cơ sở dữ liệu ta có thể tìm
được hàng nghìn và thậm chí hàng trăm nghìn các luật kết hợp.
Chương IV> Luật kết hợp:
1/ Một số khái niệm cơ bản:
Kí hiệu I = {i1, i2, …, im} là tập các thuộc tính được gọi là các mục dữ liệu. D là
cơ sở dữ liệu của tập các giao tác, mỗi giao tác T là một tập mục con của tập mục I, T
i

I. Mỗi giao tác T
i
có một định danh duy nhất gọi là TID (Transaction
Identification). X={i1, i2,…,ik}

I được gọi là một tập mục hay một tập k-mục nếu
nó chứa k mục. Một giao tác T được gọi là chứa tập mục X chỉ khi X

T. Mỗi giao
tác là một bộ <TID, I>, I là tập mục.
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 10
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Luật kết hợp là một mối liên hệ điều kiện giữa hai tập các hạng mục dữ liệu X và
Y theo dạng sau: Nếu X thì Y, và ký hiệu là X ⇒ Y. Ta có luật kết hợp X ⇒ Y, nếu
X ⊂ I, Y ⊂ I và X ∩ Y = ∅. Chúng phụ thuộc vào 2 đại lượng cơ bản là độ hỗ trợ (S)

và độ tin cậy (C).
a) Độ hỗ trợ (Support): Độ hỗ trợ của một luật r = X

Y là tỉ số phần trăm
của số giao tác trong D có chứa X

Y. Kí hiệu Supp(r).
Supp(r) thể hiện phạm vi ảnh hưởng của luật trên toàn bộ cơ sở dữ liệu.
Ngưỡng nhỏ nhất của độ hỗ trợ gọi là minsupp
Supp(r)=
)(
)(
DCard
YXCard ∪
(%) 0

Supp(r)

1
Với:
Card(X

Y): tập các giao tác trên CSDL có chứa cả vế trái lẫn vế
phải.
Card(D): tập tất cả các dòng trên CSDL.
b)Độ tin cậy (Confidence): Độ tin cậy của một luật r = X

Y là tỉ số phần
trăm của số giao tác trong D chứa X


Y với số giao tác trong D có chứa tập mục X.
Kí hiệu Conf(r).
Conf(r) thể hiện tính chính xác, tính đúng đắn hay khả năng tin cậy của luật
trong phạm vi ảnh hưởng của luật (được xác định bởi Supp(r)). Ngưỡng nhỏ nhất của
độ tin cậy gọi là minconf
Conf(r) =
(%)
)(
)(
XCard
YXCard ∪
0

Conf(r)

1.
Với:
Card(X

Y): tập các giao tác trên CSDL có chứa cả vế trái lẫn vế
phải.
Card(X): tổng số dòng chứa vế trái của luật trên CSDL.
c)Large ItemSet: Tập các hạng mục dữ liệu (ItemSet) có độ hỗ trợ (Supp) lớn
hơn hay bằng giá trị của ngưỡng nhỏ nhất (minsupp).
d)Small ItemSet : Tập các hạng mục dữ liệu (ItemSet) có độ hỗ trợ (Supp)
nhỏ hơn giá trị của ngưỡng nhỏ nhất (minsupp).
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 11
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
 Tóm lại: Với L là một Large ItemSet, A là một tập con khác rỗng của L, nếu tỉ
lệ phần trăm giữa Support của L so với Support của A lớn hơn hay bằng độ tin cậy

nhỏ nhất (minconf) thì ta có luật kết hợp A ⇒ (L\A).
2/ Thuật toán tìm luật kết hợp Apriori:
a) Mô tả thuật toán:
Bước 1 : k:=1, tạo C1 = tập tất cả các itemsets có 1 phần tử từ tất cả các giao
tác.
Đọc cơ sở dữ liệu để tính độ hỗ trợ thỏa mãn (support >= minsup) trên C1 từ
đó rút ra được tập L1.
Bước 2 :
For (k = 2 ; Lk-1 khác rỗng ; k++)
{
• Tạo ra tập Ck, là tập các itemsets ứng viên có (k-1) phần tử, tạo
ra từ tập Lk-1.
• Duyệt qua tất cả các giao tác để tính số lần xuất hiện của các
itemsets trong Ck
• Tìm Lk, Lk là một tập con của Ck có chứa k phần tử với số đếm
>= minsup.
}
Bước 3 : Tạo tập LargeItemSet = L1 v L2 v v Lk
Bước 4 : Tạo các luật hợp từ tập LargeItemSet :
for each itemset l của LargeItemSet
for each s (tập con khác rỗng) của l
if confidence=count(l)/count(s) >= minconf then
xuất kết quả : s -> (l-s)
Minh họa thuật toán Apriori với minsup = 2, minconf = 50%
 Giải thích ký hiệu :
+TID : chỉ số định danh các giao tác của một itemset.
+ items : tập các mặt hàng
+ itemset : tập các mặt hàng ứng viên
+ sup : độ hỗ trợ tối thiểu
+ Ck tập các ứng viên với kích cỡ k được tạo ra bằng cách kết hợp Lk-1 với

chính nó.
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 12
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
+Lk : tập phổ biến với kích cỡ k.
Hình 2 – Minh họa các bước chạy thuật toán Apriori.
Qua minh họa khi chạy thuật toán Apriori như trên ta thấy, khi không còn tập
mục phổ biến nào được tìm thấy nữa thì thuật toán dừng lại và tập L3 là tập kết quả
nhận được.
b) Ứng dụng thực tế thuật toán Apiori vào hệ thống siêu thị:
Đầu tiên thực hiện duyệt tất cả các hóa đơn ta có được các giao tác tương ứng là
các giao tác của thuật toán, biết được tên các mặt hàng, số lượng các mặt hàng, tất cả
các tên mặt hàng này được chuyển đổi thành dạng key – value trong cấu trúc từ điển (
Dictionary<int, string>) cho tiện trong việc tính toán và truy xuât, chẳng hạn, mặt
hàng “Nước ngọt” lưu trong Dictionary sẽ là 1 – “Nước ngọt”…
Ở bước một của thuật toán ta đi tìm tập L1, tập mỗi mặt hàng phải có độ hỗ trợ
lớn hơn hoặc bằng độ hỗ trợ tối thiểu (Minsup) của người dùng nhập vào. các tập mục
còn lại của C
1
là các tập 1-Itemset (L
1
) phổ biến. Sau đó kết nối L
1
với L
1
để được tập các
tập 2-Itemset C
2
. Duyệt CSDL xác định độ hỗ trợ của các tập mục trong C
2
. Duyệt C

2
Loại bỏ các tập mục có độ hỗ trợ < Minsup, các tập mục còn lại của C
2
là tập các tập 2-
Itemset (L
2
) phổ biến. L
2
lại được sử dụng để sinh ra L
3
và cứ tiếp tục như vậy cho đến
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 13
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
khi tìm được tập mục k-Itemset

mà L
k
= ∅ (tức là không có tập mục phổ biến nào được
tìm thấy) thì dừng lại. Tập các tập mục phổ biến của CSDL là: ∪
k
i-1
= L
1
Để tăng hiệu quả của thuật toán trong quá trình sinh các tập mục ứng cử, ta sử
dụng tính chất của tập mục phổ biến để làm giảm số lượng tập các tập ứng cử, không
phải là tập phổ biến được sinh ra. Tính chất đó là: Tập các tập con khác rỗng của tập
mục phổ biến đều là tập mục phổ biến.
3/ Ưu điểm và khuyết điểm của thuật toán Apriori:
Thuật toán kinh điển Apriori tìm tập mục phổ biến thực hiện tốt bởi rút gọn kích
thước các tập ứng cử nhờ kỹ thuật tỉa. Tuy nhiên, trong tình huống mà số các giao tác

nhiều, hoặc với độ hỗ trợ cực tiểu thấp, các thuật toán Apriori gặp phải 2 vấn đề làm
ảnh hưởng tới tốc độ :
a) Vấn đề khi số lượng các tập ứng cử cực lớn. Ví dụ: nếu có 10
4
tập phổ biến
1-itemset thì thuật toán Apriori sẽ phải tạo ra 10
7
các ứng cử 2 – itemset; để khám phá
được một số mẫu phổ biến kích thước 100, chẳng hạn tập {a
1
,a
2
, ,a
100
} thì nó cần tạo
ra 2
100
≈ 10
30
các ứng cử .
b) Vấn đề phải truy suất xuống cơ sở dữ liệu nhiều lần để kiểm tra tập rất lớn
các ứng cử thỏa độ hỗ trợ tối thiểu. Số lần duyệt CSDL của thuật toán Apriori bằng
độ dài của mẫu phổ biến dài nhất tìm được. Việc này làm ảnh hưởng tới hiệu suất
máy tính. Thuật toán Apriori chỉ thích hợp cho các CSDL nhỏ, với các CSDL lớn thì
thuật toán thực hiện kém hiệu quả.
4/ Cải tiến thuật toán:
Có thể sử dụng một số thuật toán để cái tiến thuật toán Apriori như thuật toán
AprioriTid, FP-growth, Direct Hashing and Pruning…; trong bài viết này chúng em
xin trình bày thuật toán AprioriTid.
Khác với thuật toán Apriori, thuật toán AprioriTid chỉ quét cơ sở dữ liệu một lần,

do đó tập ứng viên Ck kích cỡ k có thể nhỏ hơn cơ sở dữ liệu. Nếu một giao tác
không chứa k – itemset ứng viên, khi đó nó sẽ được loại ra khỏi tập Ck. Với k có kích
cỡ lớn, mỗi tập mục có thể nhỏ hơn một giao tác. Giao tác có thể chỉ chứa một vài
ứng viên. Một tập mục bao gồm tất cả các k – itemset chứa trong giao tác. Tuy nhiên
thuật toán này có một điểm bất lợi là khi kích cỡ k nhỏ, mỗi tập mục có thể lớn hơn
số giao tác tương ứng.
Trình bày thuật toán AprioriTid:
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 14
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Giải thích ký hiệu :
C^
k
: tập mục lưu trữ, mỗi thành viên của C^
k
có dạng <TID, { X
k

}, với X
k là
tập k-
itemset, thể hiện một giao tác t có mã là TID.

k
k
kk
t
^
kt
t
kt

^
k-1
^
k
k-k
k-1
^
1
;L Answer
minsup}|c.countC { c L
;t.TID,CCthenφ)(C
c.count
Cc
items};oft.set1])c[k(c
itemsoft.setc[k]|(cC {c C
Centries t
;C
)(L C
); k 2; L( k
;database DC
itemsets} {large 1- L
=
≥∈=
>=<+≠
++

−−∈−−∧
−−∈−∈=

=

=
++≠=
=
=
end
end
end
if
;
do candidates forall

begin do forall
;genapriori-
begin do For
1
1
φ
φ
Đánh giá tốc độ của thuật toán Apriori và AprioriTid
Để đánh giá về tốc độ của thuật toán Apriori và AprioriTid, chúng em lấy kết quả
từ một dự án Quest của trung tâm nghiên cứu IBM Almaden. Kết quả được thực hiện
trên tập dữ liệu đầu vào :
Kích thước trung bình của các giao tác là 10
Kích thước trung bình của tập phổ biến tối đại là 4
Số giao tác là 100.000
Độ hỗ trợ tối thiểu là 0.75%
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 15
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Hình 3 – Sơ đồ so sánh Apriori và AprioriTid
Kết quả cho thấy ở giai đoạn đầu Apriori hiệu quả hơn AprioriTid về mặt thời

gian, tuy nhiên AprioriTid nhanh hơn Apriori ở những giai đoạn sau. Lý do ở những
giai đoạn sau, thuật toán AprioriTid chỉ cần quét các tập ứng viên
kC
đã cố định trong
bộ nhớ do nó tạo ra; trong khi thuật toán Apriori phải thực hiện lại việc quét xuống
cơ sở dữ liệu.
Cài đặt chương trình thử nghiệm:
Chúng em xây dựng chương trình tìm luật kết hợp trong kho dữ liệu siêu
thị,chương trình đựa viết trên ngôn ngữ lập trình C#. Về mặt dữ liệu để chạy thử,
chúng em nhập liệu vào file Excel, gồm 2 file : Hoadon.xls, file này chưa thông tin về
hóa đơn, mỗi dòng trong file này có thể coi làm một giao dịch của thuật toán, ứng với
mỗi dòng này ta sẽ có một hoặc chiều chi tiết hóa đơn liên quan tới các mặt hàng đã
được đặt mua. File ChitietHD.xls, file này chứa thông tin chi tiết hóa đơn, có mối
quan hệ nhiều – một với file.
a) Các bảng cơ sở dữ liệu:
Sơ đồ mối quan hệ giữa các bảng chính :
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 16
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Hình 4 – Sơ đồ mối quan hệ giữa các bảng.
Tổng quan về sơ đồ mối quan hệ giữa các bảng :
Mối quan hệ giữa bảng khách hàng và hóa đơn là một nhiều, ngược lại bảng hóa
đơn với khách hàng là nhiều một. Vì mối quan hệ giữa bảng hóa đơn và mặt hàng là
nhiều – nhiều, nên ta thiết kế thêm một bảng cho dễ quản lý là bảng chi tiết hóa đơn,
đưa về mối quan hệ một nhiều giữa bảng hóa đơn và chi tiết hóa đơn, và một nhiều
giữa bảng mặt hàng và chi tiết hóa đơn. Thông tin các cột của bác bảng :
Khách hàng :
• maKH : mã khách hàng
• tenKH : tên khách hàng
• cmnd : số chứng minh nhân dân
• sdt : số điện thoại

• diachi : địa chỉ
• email: email
Hóa đơn :
• maHD : mã hóa đơn
• maKH : mã khách hàng
• ngay : ngày hóa đơn
• tongTien : tổng tiền cho một hóa đơn
Chi tiết hóa đơn
id : mã chi tiết hóa đơn
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 17
KhachhangmaKH :
bigint
tenKH : nvarchar
cmnd : varchar
sdt : varchar
diachi : text
email: varchar
HoadonmaHD :
bigint
maKH : bigint
ngay : datetime
tongTien : numberic
ChitietHoadonid :
bigint
hdId : bigint
soluong: int
tongTien : numberic
Mathangid : bigint
chitietHDId :
bigint

tenHang:nvarchar
gia : numberic
1…n
1
1…n
1
1
1…n
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
hdId : mã hóa đơn
soluong: số lượng
tongTien : tổng tiền (lấy số lượng nhân với đơn giá)
Mặt hàng
• id : mã mặt hàng
• chitietHDId : mã chi tiết hóa đơn
• tenHang: tên mặt hàng
• gia : đơn giá của mặt hàng
b) Một số các đoạn mã chính:
• Hàm dùng thuật toán Apriori
List<String> candidates = new List<String>();

String[] oneVal;
String itemSep = " ";
/**
* Thuật toán Apiori, tạo ra tất cả các tập kết hợp của các phần tử.
*/
public List<ItemInfo> aprioriProcess(int numItems, int numTransactions,
double minSup, string transaFile, Dictionary<int, string> allItemsName, TextBox
itemsResultScreem)
{

minSup /= 100.0;
int itemsetNumber = 0;
// tạo hàm hỗ trợ cho việc tính sự suất hiện mặt hàng
getConfig(numItems, numTransactions, minSup);
List<ItemInfo> result = new List<ItemInfo>();
do
{
itemsetNumber++;
//Tạo các tập ứng viên
generateCandidates(itemsetNumber, numItems);
//hàm tính độ phổ biến của tập ứng viên
calculateFrequentItemsets(itemsetNumber, numItems, numTransactions,
minSup, transaFile, allItemsName, result);

} while (candidates.Count > 1);

return result;
}
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 18
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
// tạo hàm hỗ trợ cho việc tính sự suất hiện mặt hàng
private void getConfig(int numItems, int numTransactions, double minSup)
{

oneVal = new String[numItems];
for (int i = 0; i < oneVal.Length; i++)
{
oneVal[i] = "1";
}
}

• Hàm tạo ra tất cả các tập ứng viên hay còn gọi là hàm sinh.
/**
* hàm tạo ra tất cả các tập ứng viên kết hợp (hàm sinh)
* n : số lượng các phần tử kêt hợp kết hợp với nhau
* numItems : tổng số lượng phần tử
*/
private void generateCandidates(int n, int numItems)
{
List<String> tempCandidates = new List<String>();
String str1, str2;
StringTokenizer st1, st2;
if (n == 1)
{
for (int i = 1; i <= numItems; i++)
{
tempCandidates.Add(i + "");
}
}
else if (n == 2)
{
for (int i = 0; i < candidates.Count; i++)
{
st1 = new StringTokenizer(candidates[i]);
str1 = st1.NextToken();
for (int j = i + 1; j < candidates.Count; j++)
{
st2 = new StringTokenizer(candidates[j]);
str2 = st2.NextToken();
tempCandidates.Add(str1 + " " + str2);
}

}
}
else
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 19
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
{
for (int i = 0; i < candidates.Count; i++)
{
for (int j = i + 1; j < candidates.Count; j++)
{
str1 = "";
str2 = "";
st1 = new StringTokenizer(candidates[i]);
st2 = new StringTokenizer(candidates[j]);
for (int s = 0; s < n - 2; s++)
{
str1 = str1 + " " + st1.NextToken();
str2 = str2 + " " + st2.NextToken();
}
if (str2.Equals(str1))
tempCandidates.Add((str1 + " " + st1.NextToken() + " " +
st2.NextToken()).Trim());
}
}
}
//xóa các ứng viên cũ đi
candidates.Clear();
candidates = new List<String>(tempCandidates);
tempCandidates.Clear();
}


/**
* Tính các tập phần tử thỏa độ hỗ trợ
* n : số lượng các phần tử kết hợp
*/
private List<ItemInfo> calculateFrequentItemsets(int n, int numItems, int
numTransactions, double minSup, string transaFile, Dictionary<int, string>
allItemsName, List<ItemInfo> result)
{
List<String> frequentCandidates = new List<String>();
StreamReader re = File.OpenText(transaFile);

StringTokenizer st, stFile;
Boolean match;
Boolean[] trans = new Boolean[numItems];
int[] count = new int[candidates.Count];
try
{
for(int i=0; i<numTransactions; i++)
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 20
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
{
stFile = new StringTokenizer(re.ReadLine(), itemSep);
for(int j=0; j<numItems; j++)
{
String nextk = stFile.NextToken();

trans[j]=(nextk.Equals(oneVal[j])); }
foreach (Boolean a in trans)
{

Console.Write(a+" ");
}

//kiểm tra ứng viên
for(int c=0; c < candidates.Count; c++)
{
match = false;
st = new StringTokenizer(candidates[c]);
while(st.HasMoreTokens())
{
match = (trans[Int32.Parse(st.NextToken())-1]);
if(!match)
break;
}
if(match)
count[c]++;
}
}
StringBuilder builder = new StringBuilder();
for(int i=0; i<candidates.Count; i++)
{
double doPB =(count[i] / (double)numTransactions);
if (doPB >= minSup)
{
frequentCandidates.Add(candidates[i]);
string[] candi = candidates[i].Split(' ');
builder.Clear();
for (int m = 0; m < candi.Length; m++) {
int key = int.Parse(candi[m]);
if (candi.Length == 1)

{
builder.Append(allItemsName[key]);
}
else
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 21
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
{
builder.Append(","+allItemsName[key]);
}

}
Boolean startWith = builder.ToString().StartsWith(",");
if (startWith == true)
{
builder.Remove(0, 1);
}

ItemInfo itemInfo = new ItemInfo();
itemInfo.Step = n;
itemInfo.AssociatedItems = builder.ToString();
itemInfo.SupportPercent = doPB * 100;
result.Add(itemInfo);

}
}
re.Close();
}
catch(IOException e)
{
Console.WriteLine(e);

}
//xóa các ứng viên cũ đi
candidates.Clear();
candidates = new List<String>(frequentCandidates);
frequentCandidates.Clear();
return result;
}
c) Hướng dẫn sử dụng:
Để chạy được chương trình, máy tính cần phải có bộ .Net phiên bản từ 3.5 trở lên,
ngoài ra cần cài đặt chương trình đọc file Excel để nhập liệu nếu muốn kiểm tra nhiều
hơn dữ liệu cài đặt sẵn.
Vào thư mục “chuong_trinh/findAssociatedRules”,của chương trình, nhấp đúp
chuột vào file findAssociatedRules.exe, ta có giao diện chương trình như sau :
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 22
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Hình 5 – Giao diện chương trình tìm luật kết hợp trong siêu thị.
Ở màn hình trên, phía bên trái, ta có thể nhập tham số, ví dụ nhập độ hỗ trợ tối
thiểu vào ô “Độ hỗ trợ”, sau đó nhấn vào nút “Tìm luật”, ta đươc kết quả như hình
bên dưới :
Hình 6 – Giao diện kết quả chương trình tìm luật kết hợp trong siêu thị.
Ngoài ra người dùng có thể nhập thêm dữ liệu để tính tìm luật, bằng cách nhập
liệu vào 2 file Excel được đính kèm trong thư mục
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 23
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
chuong_trinh/findAssociatedRules, đó là 2 file : Hoadon.xls và ChitietHD.xls.
Hình 7 – File excel cho hóa đơn
Hình 8 – File excel cho chi tiết hóa đơn
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 24
Công nghệ tri thức & Ứng dụng GVHD: GS-TSKH Hoàng Văn Kiếm
Chương V> Kết luận & Hướng phát triển đề tài:

1/ Kết luận :
Trong phạm vi bài tiểu luận này chúng em đã trình bày được một số điểm như
sau:
Về mặt lý thuyết chúng em đã trình bày một số khái niệm cơ bản về: Tri thức,
khai phá dữ liệu, các phương pháp khai phá dữ liệu, thuật toán Apriori để tìm luật
kết hợp, ưu và khuyết điểm của thuật toán, và đồng thời đưa ra những giải pháp để
cải tiến cho thuật toán Apriori.
Về mặt cài đặt chương trình Demo, nhóm chúng em đã áp dụng thuật toán
Apriori để xây dựng nên một ứng dụng nhỏ nhằm tìm ra luật kết hợp là các mặt
hàng cần thiết nhập về trong kho dữ liệu của siêu thị và đồng thời chương trình
cũng xuất ra thông tin trên màn hình bao gồm các tập hợp mà mỗi tập hợp gồm
các mặt hàng kết hợp thõa điểu kiện minsupp và minconf của người dùng nhập
vào. Do đây chỉ là một ứng dụng nhỏ dùng để mô phỏng thuật toán Apriori nên
CSDL đầu vào là những file Excel được nhập sẵn dữ liệu.
Qua bài tiểu luận trên ta thấy được tầm ảnh hưởng quan trọng của việc khai
phá dữ liệu trong các lĩnh vực sản xuất, kinh doanh cũng như trong hệ thống các
hệ thống siêu thị. Bởi vì bên trong kho dữ liệu to lớn ấy luôn tiềm ẩn những tri
thức vô cùng quý giá, cụ thể là việc phát hiện các tri thức mới từ những luật kết
hợp. Nó không những giúp cho việc hoạch định chiến lược mà còn hỗ trợ các nhà
quản lý ra quyết định trong tương lai. Do đó việc tìm ra các luật kết hợp trong các
hệ thống kinh doanh lớn là việc hết sức cần thiết. Tuy nhiên trên thực tế vẫn còn
rất nhiều những khó khăn và thử thách trong việc ứng dụng và kết hợp các kỹ
thuật khai phá dữ liệu lại với nhau. Vì còn tùy thuộc vào cấu trúc của kho dữ liệu
mà chúng ta quyết định lựa chọn những phương án phát hiện tri thức mới dựa vào
luật kết hợp sao cho phù hợp.
2/ Hướng phát triển đề tài:
Dựa vào các ưu và khuyết điểm của thuật toán Apriori, và để giúp cho việc phát
hiện những tri thức mới một cách tối ưu hơn, nhóm chúng em cần tiếp tục nghiên cứu
sâu hơn về các thuật toán khai phá luật kết hợp bằng cách áp dụng các cải tiến mới
vào thuật toán nhằm khắc phục các nhược điểm của các thuật toán Apriori và đồng

thời tùy vào độ phức tạp của dữ liệu mà nên quyết định chọn hoặc kết hợp các thuật
toán cho phù hợp như: Aprioritid, AprioriHybrid… Từ đó giúp cho các nhà quản lý
trong các lĩnh vực khác như chứng khoán, bất động sản, y tế, siêu thị…có thể tự tin
áo dụng phương pháp này nhằm tìm ra những tri thức mới từ kho dữ liệu đã có để
phục vụ vì lợi ích của toàn doanh nghiệp.
HVTH: Lê Minh Trí – Nguyễn Văn Sang Trang 25

×