Thành phố Hồ Chí Minh - Tháng 05 Năm 2012BẢ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
Trang 1Khoa Khoa Học Máy Tính
********** **********
TÌM LUẬT KẾT HỢP TRONG KHO DỮ LIỆU SIÊU THỊ
GVHD : GS-TSKH Hoàng Văn Kiếm
Nguyễn Văn Sang (CH1101128)
Trang 2Thà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
Trang 3MỤC LỤC
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
Trang 4LỜ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
Trang 5Chươ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ư
Trang 6liệ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
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
Trang 7e) 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
Trang 8d) 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ứ
Trang 9khô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
Trang 10thà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, Ti
⊆I Mỗi giao tác Ti 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
Trang 11Luậ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)= Card Card(X(D∪)Y)
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
)(
)(
X Card
Y X Card ∪
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).
Trang 12 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
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 LargeItemSetfor each s (tập con khác rỗng) của l
if confidence=count(l)/count(s) >= minconf then
+ 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ó
Trang 13+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 C1 là các tập 1-Itemset (L1) phổ biến Sau đó kết nối L1 với L1 để được tập các tập 2-Itemset C2 Duyệt CSDL xác định độ hỗ trợ của các tập mục trong C2 Duyệt C2
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 C2 là tập các tập Itemset (L2) phổ biến L2 lại được sử dụng để sinh ra L3 và cứ tiếp tục như vậy cho đến