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

KHẢO SÁT BÀI TOÁN TÌM LUẬT KẾ 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 (720.72 KB, 27 trang )

Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Contents
Contents 1
1. GIỚI THIỆU 1
2. TỔNG QUAN VỀ QUÁ TRÌNH KHAI PHÁ TRI THỨC 2
2.1 Khái niệm về khai phá dữ liệu (datamining) và ứng dụng 2
2.2. Các hướng tiếp cận khai phá dữ liệu (datamining) 4
3. BÀI TOÁN KHAI PHÁ DỮ LIỆU TỪ MẠNG XÃ HỘI 5
3.1 Mạng xã hội 5
3.2 Mạng xã hội Facebook 5
3.3 Mạng xã hội Twitter 6
3.4 Mạng xã hội Zing Me 7
3.5 Mạng xã hội – Jomsocial 7
4. KHẢO SÁT BÀI TOÁN TÌM LUẬT KẾ HỢP 11
4.1 Mô tả bài toán tìm Luật kết hợp 11
4.2 Phân tích bài tóan : 12
4.3 Thuật toán Apriori 13
5. CÀI ĐẶT CHƯƠNG TRÌNH : 15
5.1 Giới thiệu CSDL : 15
5.2 Giới thiệu chương trình : 17
5.4 Kết quả đạt được – hạn chế - hướng phát triển 21
5.5 Giới thiệu một số source code chính của chương trình: 22
Tài liệu tham khảo : 27
1. GIỚI THIỆU
Như chúng ta đã biết mạng xã hội như facebook, twitter, zingme … đã trở nên rất phổ
biến hiện nay. Nhiều bạn trẻ xem nó như là một thế giới thứ 2 của mình – thế giới ảo
trong việc tìm bạn, chia sẻ thông tin, kiến thức… Mỏi ngày một lượng số lượng lớn các
thao tác được thực hiện trên mạng xã hội và đồng nghĩa với việc một số lượng rất lớn
Nguyễn Xuân Nghề 1
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
database được sinh vào và lưu trữ. Khai phá dữ liệu cho mạng xã hội một chủ đề khá mới


nhưng lại gây nhiều quan tâm cho giới nghiên cứu.
Khai phá dữ liệu cho mạng xã hội là một chủ đề rất rộng bao gồm link prediction, xác
định trạng thái một nhân tố (actor) tại thời gian t, dự đoán những liên kết với nhân tố này
tại thời điểm t+1. Cho thông tin về những nhân tố, dự đoán những lien kết xã hội giữa
chúng. Tìm ra những nhân tố nổi bật, những nhân tố có tầm hưởng nhiều nhất trong mạng
xã hội. Tìm kiếm trong mạng xã hội và tính thật trong mạng xã hội…
Vì thời gian có hạn nên Em chỉ xin trình bày chi tiết phần Data Mining với bài toán
tìm luật kết hợp bằng thuật toán Apriori trong quá trình khai phá tri thức và thông qua đó
xây dựng một chương trình tìm luật kết hợp tiềm ẩn trong CSDL. Dựa vào các mối lien
hệ của từng user đã kết bạn với những user khác trong mạng xã hội và sử dụng thuật toán
apriori để có thể đoán được những user có thể kết bạn với nhau và dự đoán nếu một user
đã kết bạn với user A thì sẽ kết bạn với user B.
Mạng xã hội Em nghiên cứu ở đây là Jomsocial là một thành phần cộng đồng
(com_community) của Joomla CMS. Đây là một giải pháp xây dựng các website cộng
đồng với mã nguồn mở Joomla CMS được thiết kế mô phỏng theo facebook hiện nay.
2. TỔNG QUAN VỀ QUÁ TRÌNH KHAI PHÁ TRI THỨC
2.1 Khái niệm về khai phá dữ liệu (datamining) và ứng dụng
Trong môi trường cạnh tranh, người ta ngày càng cần có nhiều thông tin với tốc
độ nhanh để trợ giúp việc ra quyết định và ngày càng có nhiều câu hỏi mang tính chất
định tính cần phải trả lời dựa trên một khối lượng dữ liệu khổng lồ đã có. Với những lý
do như vậy, các phương pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng
không đáp ứng được thực tế đã làm phát triển một khuynh hướng kỹ thuật mới đó là Kỹ
thuật phát hiện tri thức và khai phá dữ liệu (KDD - Knowledge Discovery and Data
Mining).Với những ưu điểm đó, khai phá dữ liệu đang được áp dụng một cách rộng rãi
trong nhiều lĩnh vực kinh doanh và đời sống khác nhau: marketing, tài chính, ngân hàng
và bảo hiểm, khoa học, y tế, an ninh, internet… Kỹ thuật phát hiện tri thức và khai phá dữ
liệu đã và đang được nghiên cứu, ứng dụng trong nhiều lĩnh vực khác nhau ở các nước
trên thế giới, tại Việt Nam kỹ thuật này tương đối còn mới mẻ tuy nhiên cũng đang được
nghiên cứu và dần đưa vào ứng dụng. Khai phá dữ liệu (Data Mining) được định nghĩa
Nguyễn Xuân Nghề 2

Knowledge
Pattern
Discovery
Transformed
Data
Cleansed
Preprocessed
Preparated
Data
Target
Data
Gathering
Data Mining
Selection
Transformation
non
Cleansing Pre-processing
Preparation

Envalution of
Rule
Internet,

Internet,

Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
là: quá trình trích xuất các thông tin có giá trị tiềm ẩn bên trong lượng lớn dữ liệu được
lưu trữ trong các CSDL, kho dữ liệu… Hiện nay, ngoài thuật ngữ khai phá dữ liệu, người
ta còn dùng một số thuật ngữ khác có ý nghĩa tương tự như: khai phá tri thức từ CSDL
(knowlegde mining from databases), trích lọc dữ liệu (knowlegde extraction), phân tích

dữ liệu/mẫu (data/pattern analysis), khảo cổ dữ liệu (data archaeology),nạo vét dữ liệu
(data dredging).
Quá trình này bao gồm các bước 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) Tích hợp dữ liệu (data integration): 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 dữ liệu (data selection): Ở bước này, 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.
d) Chuyển đổi dữ liệu (data transformation): Trong bước này, 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 thiết yếu, 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.
Đây là mô hình minh họa cho các quá trình khai thác dữ liệu :
Nguyễn Xuân Nghề 3
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
(Hình 1 – Quá Trình Khai Thác Dữ Liệu)
g) Trình 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. Khai phá dữ liệu là một lĩnh vực liên quan tới rất nhiều
ngành học khác như: hệ CSDL, thống kê, trực quan hóa Hơn nữa, tuỳ vào cách tiếp cận
được sử dụng, khai phá dữ liệu còn có thể áp dụng một số kĩ thuật như mạng nơ ron, lí
thuyết tập thô hoặc tập mờ, biểu diễn tri thức… So với các phương pháp này, khai phá dữ
liệu có một số ưu thế rõ rệt:
2.2. Các hướng tiếp cận khai phá dữ liệu (datamining)
- Phân lớp và dự đoán (classification & prediction) : xếp đối tượng vào một trong
các lớp đã biết trước. Ví dụ: trong mạng xã hội ta có thể phân lớp user tùy thuộc vào độ
tuổi, giới tính, trình độ học vấn…
Hướng tiếp cận phân lớp có giám sát (supervised learning) thường sử dụng một số kỹ

thuật của học máy như cây quyết định (decision tree), mạng nơ ron nhân tạo (neural
network) .v.v
- Luật kết hợp (association rules) : là dạng luật biểu diễn tri thức ở dạng tương đối
đơn giản. Luật kết hợp có khả năng ứng dụng trong nhiều lĩnh vực khác nhau trong đó có
lĩnh vực mạng xã hội.
Nguyễn Xuân Nghề 4
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
- Khai thác mẫu tuần tự (sequential/temporal patterns): Tương tự như khai thác
luật kết hợp nhưng có thêm tính thứ tự và tính thời gian. Một luật mô tả mẫu tuần tự có
dạng tiêu biểu 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. Hướng tiếp cận này có tính dự báo cao.
- Phân cụm (clustering/segmentation) : Sắp xếp các đối tượng theo từng cụm (số
lượng và tên của cụm chưa được biết trước). Các đối tượng được gom cụm sao cho mức
độ tương tự giữa các đố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. Phân cụm còn được gọi là học
không có giám sát (unsupervised learing).
Trong các hướng tiếp cận trên, luật kết hợp là tri thức quan trọng nhất tiềm ẩn
trong CSDL. Có rất nhiều thuật toán khai mỏ luật kế hợp. Do vì thời gian hạn chế Em chỉ
trình bài thuật toán Apriori trong bài luận này.
3. BÀI TOÁN KHAI PHÁ DỮ LIỆU TỪ MẠNG XÃ HỘI
3.1 Mạng xã hội
Ngày nay, các mạng xã hội đang có sự phát triển bùng nổ, với số lượng người dùng
lên đến hàng trăm triệu. Các mạng xã hội đang dần trở thành một môi trường mạng
không thể thiếu với hàng triệu người dùng. Nơi mang lại cho người dùng một cơ hội to
lớn để kết nối và chia sẻ thông tin dễ dàng. Nó cũng phản ánh nhu cầu tâm lý tất yếu của
con người là chia sẻ và trao đổi thông tin. Khi mà xã hội càng hiện đại thì áp lực cuộc
sống, sự thiếu thốn về thời gian càng tăng… Điều đó làm cho các mạng xã hội trở thành
một môi trường tiện dụng để người dùng có thể chia sẻ nhanh chóng những thông tin
mình có với bạn bè.
3.2 Mạng xã hội Facebook

Facebook là mạng xã hội lớn nhất thế giới, được thành lập vào tháng 2 năm 2004,
Facebook ban đầu có tên là Facemash. Đây là một phiên bản Hot or Not của trường đại
học Harvard. Sau đó, MarkZuckerberg thành lập “The Facebook” đặt trên domain
thefacebook.com. Dịch vụ mạng xã hội này ban đầu chỉ dành riêng cho các sinh viên của
Nguyễn Xuân Nghề 5
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Đại học Harvard. Chỉ sau một tháng, hơn nửa số sinh viên Đại học Harvard đã đăng ký sử
dụng dịch vụ này.
Tháng 9 năm 2004, Mark Zuckerberg đã chuyển trụ sở của thefacebbook.com về
Palo, Alto, California và bỏ chữ “the” trong tên miền thefacebook.com, chuyển thành
facebook.com.
Facebook nhanh chóng trở thành cái tên quen thuộc đối với người sử dụng các dịch
vụ mạng xã hội. Đến tháng 12 năm 2004, tức chỉ 10 tháng sau khi thành lập, Facebook đã
gần chạm mốc 1 triệu người dung.
Một năm sau đó, số người dung đã dung vọt lên tới 5.5 triệu người. Facebook dần
dần mở rộng hoạt động ra phạm vi bên ngoài các trường đại học. Các trường trung học tại
Hoa Kỳ bắt đầu được dung vào hệ thống.
Tháng 4 năm 2008, Facebook chính thức có mặt trên nhiều quốc gia và vùng lãnh
thổ với 21 ngôn ngữ khác nhau. Số thành viên của mạng xã hội này đã lên tới 100 triệu
người.
Thành công đến với Facebook nhanh hơn mong đợi khi số lượng thành viên của
mạng xã hội này lần lượt chạm mốc 200 triệu vào tháng 4, 300 triệu vào tháng 9 năm
2009, 400 triệu vào tháng 2 năm 2010. Mới đây nhất, Facebook đã vượt mốc 500 triệu
người dung.
3.3 Mạng xã hội Twitter
Twitter cũng là một trong những mạng xã hội lớn nhất thế giới. Nó còn được biết
đến như một mạng “tiểu” blog khi mà mỗi người 6ung chỉ được phép đăng một tin
(tweet) có đồ dài không vượt quá 104 kí tự. Mặc dù vậy, nhưng Twitter đáp ứng đúng
yêu cầu của người dùng trong một xã hội ngày càng “vội vã”.
Ngày 21/3/2011 vừa qua Twitter kỉ niệm sinh nhật lần thứ 5 của mình. Đó một dấu

mốc quan trọng trong sự phát triển nhiều thăng trầm mạng tiểu blog này. Đã có thời
Twitter phải chật vật để níu giữ người 6ung. Nhưng ngày nay Twitter đã trở nên trưởng
thành hơn và giữ một vai trò quan trọng trong xã hội, chính trị, truyền thông, thể thao và
nhiều lĩnh vực khác.
Người 6ung Twitter hiện nay gửi đi 140 triệu đoạn tweet mỗi ngày. Trước đây,
Twitter đã mất 3 năm, 2 tháng và 1 ngày để đạt được 1 tỷ tweet đầu tiên, nhưng giờ đây,
cứ 8 ngày thì có 1 tỷ tweet được gửi đi.
Nguyễn Xuân Nghề 6
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Tương tự, Twitter đã mất 18 tháng để có 500 ngàn người 7ung, nhưng giờ đây, mỗi
ngày lại có 7ung 500 ngàn tài khoản mới được đăng ký.
3.4 Mạng xã hội Zing Me
Đáp ứng xu thế mạng xã hội, tại Việt Nam đã có 7ung loạt mạng xã hội ra đời. Tiêu
biểu trong số đố là mạng xã hội Zing Me do tập VNG làm chủ. Đây có thể nói là mạng xã
hội lớn nhất Việt Nam. Chỉ sau hơn một năm phát triển Zing Me đã có hơn 5 triệu người
7ung.
Với giao diện được việt hóa thân thiện, cùng sự tích hợp nhiều ứng dụng và dịch vụ
khác nhau, Zing Me đã nhanh chóng thu hút được một lượng lớn người 7ung. Đặc biệt là
nhóm những người 7ung trẻ tuổi. Zing Me cung cấp một môi trường chia sẻ và kết nối dễ
dàng. Đồng thời Zing Me cũng cung cấp nhiều công cụ khác nhau để các doanh nghiệp tổ
chức các sự kiện, thực hiện các điều tra thăm dò. Zing Me cũng mở các API để các bên
thứ ba phát triển các ứng dụng dựa trên nền tảng Zing Me. Zing Me ngày càng chiếm
được cảm tình của người 7ung, đặc biệt là nhóm người 7ung trẻ tuổi. Đó là cơ sở cho sự
phát triển bền vững tại thị trường Việt Nam sau này.
Trên đây là một số mạng xã hội phổ biến ở trên thế giới và ở Việt Nam. Nó cho
thấy mạng xã hội đã trở thành một xu hướng chi phối đời sống xã hội, nó chiếm được
cảm tính và sự quan tâm của tất cả mọi lứa tuổi, tầng lớp và trên phạm vi toàn cầu rộng
lớn. Xu hướng đó tạo ra sự phát triển bùng nổ của mạng xã hội. Đồng thời nó cũng biến
mạng xã hội trở thành một kho chứa thông tin khổng lồ. Bởi mạng xã hội gần như trở
thành một môi trường xã hội ảo. Nó ghi nhận một cách đa dạng các hoạt động khác nhau

của người 7ung. Nó nắm giữ từ các thông tin cá nhân, cho tới các thông tin về các mối
quan hệ, về sở thích, về thói quen của người 7ung. Mạng xã hội trở thành một kho dữ liệu
khổng lồ mà nếu khai thác hiệu quả người ta có thể tìm được rất nhiều thông tin hữu ích.
Có thể đoán nhận được sở thích của một người, phân tích các xu hướng về nhu cầu của
người 7ung, hay mối quan hệ giữa những người 7ung…
3.5 Mạng xã hội – Jomsocial
JomSocial được ra mắt năm 2007 bởi Slashes and Dots Sdn. Bhd, một công ty ở
Malaysia. JomSocial là một extension thương mại và được tích hợp vào Joomla CMS.
Sau nhiều năm phát triển, nó đã trở thành một trong những extensions hang đầu về mạng
xã hội của Joomla.
Nguyễn Xuân Nghề 7
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Năm 2010, JomSocial nhận giải thưởng “best joomla application” tại 2010 CMS
Expo. Năm 2012 nhận giải thưởng 2012 CMS Expo Spotlight Awards, Extension này có
những tính năng sau:
• Tạo và quản lý profile của bạn
• Thêm các applications vào profile của bạn(ứng dụng lien quan như: hình ảnh,
tường, videos, google map…)
• Tích hợp với những third-party components khác
• Thiết lập hệ thống bạn bè, send email riêng tư đến bạn bè, mời bạn bè tham
gia, và lien kết với những người khác trong mạng xã hội
• Thiết lập quyền riêng tư cho profile, applications
• Tích hợp với các mạng xã hội khác như facebook, Twitter…
• Tạo photo album, videos – users có thể comment về chúng trên profile của
bạn
• Lưu trữ những hoạt động của các thành viên
• Tạo groups, events và user có thể subscribe với những hoạt động của groups,
events
• …
Mạng xã hội với Jomsocial:

Website đang dung Jomsocial cho cộng đồng người sử dụng linux:
Nguyễn Xuân Nghề 8
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
(Hình 2 – linux.com sử dụng Jomsocial)
Website là mạng xã hội về sự liên kết kinh doanh, quảng bá sản phẩm:
(Hình 3 – giblink.com sử dụng Jomsocila)
Nguyễn Xuân Nghề 9
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Website tổng hợp các đài radio. Users có thể share những
đài radio và những nhân tố thú vị khác về chúng:
(Hình 4 – onlineradiostation.com sử dụng Jomsocial)
Còn rất rất nhiều website khác sử dụng Jomsocial cho giải pháp mạng xã hội của
mình. Ở đây do giới hạn thời gian nên em chỉ nghiên cứu việc kết bạn giữa các thành
viên qua table jos_community_connection:
Table’s name: jos_community_connection
Connection_id
Connect_from
Connect_to
Status
Groups
Msg
Created
Cơ chế hoạt động việc kết bạn của Jomsocial như sau: khi user A kết bạn với user
B, tại table jos_community_connection sẽ lưu trữ id của user A vào trường
connect_from và id của user B vào connect_to.
Dựa vào thuật toán Apriori ta có thể áp dụng để tìm những tập phổ biến là những
users có liên quan với nhau. Nếu những users trong cùng trong một tập phổ biến đã chưa
Nguyễn Xuân Nghề 10
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
kết bạn với nhau thì họ là những ứng viên tốt nhất cho việc dự đoán họ sẽ là bạn của

nhau. Những luật kết hợp đã tìm được ví dụ với C->D,E ta có thể dự đoán Nếu một user
kết bạn với C thì suy ra họ sẽ kết bạn với D và E
4. KHẢO SÁT BÀI TOÁN TÌM LUẬT KẾ HỢP
Luật kết hợp là một trong những kỹ thuật được nghiên cứu tốt nhất cũng như quan
trọng nhất của khai mỏ dữ liệu, nó được giới thiệu lần đầu tiên vào năm 1993. Mục đích
của luật kết hợp là rút ra những mối lien quan thú vị, những tập mẫu phỏ biến, những cấu
trúc kết hợp hay cấu trúc ngẫu nhiên giữa những tập hợp Item trong các transaction
database hoặc trong những kho dữ liệu.
4.1 Mô tả bài toán tìm Luật kết hợp
• Gọi I={i
1
,i
2
,…,i
n
} là tập các trường gọi là items.
• D là tập giao tác, ở đó mỗi giao tác T
i
là tập các item T
i
⊆ I.
• Ta gọi 1 giao tác T chứa X nếu X ⊆ T (Với X ⊆ I)
• Mỗi giao tác T
i
có chỉ danh là TID.
• Luật kết hợp là một mối quan 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.
Chúng ta có luật kết hợp : X=>Y, nếu : X ⊂ I, Y ⊂ I và X ∩ Y =∅
Có hai đơn vị đo cơ bản quan trọng cho luật kết hợp là : support là s và
confidence là c.

• Độ tác động (Support) : Thể hiện phạm vi ảnh hưởng của luật trên tòan bộ
CSDL.
Luật X=>Y có độ support là s nếu s% số giao tác trong D có chứa X∪Y.
Hay là :
Support(X=>Y) = Support(X ∪ Y)
= Card(X ∪ Y) / Card(D)% =s%
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 của luật.
Card(D) : Tập tất cả các dòng trên CSDL.
Nguyễn Xuân Nghề 11
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
• Độ tin cậy (Confidence) : Thể hiện độ 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(xác định bởi độ đo support).
Luật X=>Y có độ tin cậy là c (confidence) nếu có c% số giao tác trong D
chứa X ∪ Y so với tổng số giao tác có trong D chỉ chứa X. Khi đó ta có :
Confidence(X=>Y) = Card(X ∪ Y) / Card(X)% = c%
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 của luật.
Card(X) : Tổng số dòng chứa vế trái của luật trên CSDL.
• Tóm lại tìm luật kết hợp là đi tìm những luật X=>Y trong CDSL sao cho luật
thỏa những giới hạn tối thiểu support và confidence cho trước.
4.2 Phân tích bài tóan :
Để giải quyết bài toán tìm tất cả các luật kết hợp người ta thường chia bài toán
thành hai bài toán con sau :
• Tìm tập các hạng mục dữ liệu gọi là ItemSet có độ support lớn hơn hay bằng
giá trị ngưỡng nhỏ nhất (gọi là minsupp) được gọi là Large ItemSet (còn được
gọi là : Frequent ItemSet ). Các ItemSet còn lại được gọi là các Small ItemSet.
• Sử dụng tập Large Item để phát sinh những luật mong muốn.Với mỗi một

Large ItemSet – L, tìm tất cà tập con khác rộng của L gọi là A, Với mỗi tập
con A 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 (gọi là minconf) thì ta có luật kết hợp A=>(L\A).
Thuật tóan xác định luật kết hợp :
• Tìm tất cả các luật R : X=>Y sao cho :
Support(R) ≥ minsup và confidence(R) ≥ minconf.
o Bước 1 : Liệt kê tất cả các tập con P của I : | P | > I.
o Bước 2 : Với mỗi tập con P, liệt kê tất cả các tập con X khác trống của
P ( X khác P ). Luật R hình thành bởi :
Nguyễn Xuân Nghề 12
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
R : X => P\X
• Chọn các luật R thỏa ngưỡng minsup và minconf.
Như vậy độ phức tạp tối thiểu (2
n
) (trong đó n: số phần tử trong tập I ban đầu)
4.3 Thuật toán Apriori
Ký hiệu :
o D : là cơ sở dữ liệu có các trường <TID,item>, với TID là chỉ danh
của giao tác
o Size : là số lượng các item trong một tập itemset.
o c[1],c[2],…,c[k] thể hiện một tậm k-item c có k-itemset c có k item
bao gồm c[1],c[2],…,c[k], với c[1]>c[2]>…>c[k].
o Nếu c=X.Y và Y là m-itemset, thì ta cũng gọi Y là m-extension
của X.
o Mỗi itemset có trường count để lưu số support cho itemset
đó.Trường count được khởi tạo giá trị zero khi item được tạo lần đầu.
Bảng tóm tắc các ký hiệu.
k-itemset Một itemset có k items
L

k
Tập phổ biến k-itemsets (các thánh viên có support count ≥ minsuf)
Mỗi thành viên của tập hợp này có 2 trường :
• itemset.
• Support count
C
k
Tập ứng viên k-itemsets.(Là tập tiềm năng của L
k
)
Mỗi thành viên của tập hợp này có 2 trường :
• itemset.
• Support count.
• Thuật toán Apriori :
Đầu tiên đếm số items và xác định L
1

Bước tiếp theo gồm 2 phần chính :
Nguyễn Xuân Nghề 13
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
* C
k
tạo được bằng cc kết L
k-1
với chính nĩ.
* Những tập kích thước (k-1) khơng phổ biến khơng thể l tập con
của tập phổ biến kích thước k.
1) L
1
= {large 1-itemsets};

2) for ( k = 2; L
k-1
≠ ∅; k++ ) do begin
3) C
k
= apriori-gen(L
k-1
); // Ứng viên mới
4) forall transactions t ∈ D do begin
5) C
t
= subset(C
k
, t); // Ứng viên chứa trong t
6) forall candidates c ∈ C
t
do
7) c.count++;
8) end
9) L
k
= {c ∈ C
k
| c.count≥ minsup}
10) end
11) Answer = U
k
L
k
;

• Tạo Apriori Candidate :
Hàm apriori-gen nhận đối số L
k-1
là tất cả các tập (k-1)_itemset. Hàm
này trả về xác tập k _itemset.
apriori-gen(L
k-1
)
o Đầu tiên ở bước kết ta kết L
k-1
với L
k-1
:
insert into C
k
select p.item
1
, p.item
2
, , p.item
k-1
, q.item
k-1

from L
k-1
p, L
k-1
q
where p.item

1
= q.item
1
, . . ., p.item
k-2
= q.item
k-2,
p.item
k-1
<
q.item
k-1
; (Điều kiện p.item
k-1
< q.item
k-1 để
đảm bảo sẽ không có
bộ trùng được phát sinh).
o Kế tiếp bước xén bớt, chúng tôi xóa tất cả itemsets c∈C
k
. Sao cho
tập con của c không ở trong L
k-1.

forall itemsets c ∈ C
k
do
Nguyễn Xuân Nghề 14
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
forall (k-1)-subsets s of c do

if (s ∉ L
k-1
) then
delete c from C
k
;
Ví dụ : Tập L
3=
{{1, 2, 3},{1, 2, 4}, {1, 3, 4}, {1,3, 5}, {2, 3, 4}}.
Sau khi kết ta có , C
4
sẽ là {1, 2, 3,4}, {1, 3, 4, 5}. Bước xén bớt sẽ xóa
itemset {1, 3, 4, 5} bởi vì itemset {1, 4, 5}∉ L3. Do đó C
4
chỉ chứa{1, 2,
3, 4}.
5. CÀI ĐẶT CHƯƠNG TRÌNH :
Em xin cụ thể hóa những kiến thức đã học thông qua viết 1 chương trình hỗ trợ
tìm luật kết hợp.
Chương trình được viết bằng ngôn ngữ Java
5.1 Giới thiệu CSDL :
CSDL Jomsocial bao gồm các bảng sau : (Ở đây Em chỉ trình bày những bản
chính và trường dữ liệu chính của hệ thống để mô tả quy mô của một hệ thống mạng xã
hội)
Community_users
Userid
Status
Points
Avatar
Thumb

Friendcount
Profile_id
Nguyễn Xuân Nghề 15
Community_activities
id
actor
target
title
content
phoints
Community_connection
Connection_id
Connect_from
Connect_to
status
group
Community_events
Id
Contented
Title
Location
Description
Creator
Invitedcount
wallcount
Community_avatar
Id
Apptype
Path
Type

Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Community_events_members
Id
Eventid
Membereid
Status
Invited_by
Community_likes
Id
Element
Uid
Like
Dislike
Nguyễn Xuân Nghề 16
Community_friendlist
Group_id
Group_name
User_id
Community_friendgroup
Group_id
User_id
Community_groups_discuss
Id
Groupid
Creator
Title
message
Community_groups_invite
Groupid
Userid

Creator
Community_photos
Id
Albumid
Caption
Creator
Image
Thumbnail
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Tổng quan về CSDL : Ta thấy tất cả mô tả và hoạt động đều liên quan đến user.
User có profile, có avatar, kết bạn, like, dislike, tham gia nhóm, tham gia sự kiện, tạo
photo, tạo video, viết lên tường…
CSDL này mang tính đặc thù của một mạng xã hội không thuận tiện để mining.
Do đó trước khi mining chúng ta phải thực hiện các giai đoạn : Chọn lọc dữ liệu, làm
sạch dữ liệu, làm giàu dữ liệu và mã hóa dữ liệu. Sau khi thực hiện ta có bảng như sau :
User_friendlist
Userid
friendlist(userid1, userid2,
userid3…)
5.2 Giới thiệu chương trình :
Chương trình thiết kế trên nền tảng thuật tóan Apriori. Chương trình theo dạng
mở, nghĩa là không những dùng để mining CSDL mạng xã hội Jomsocial. Mà có thể
Nguyễn Xuân Nghề 17
Community_msg
Id
From
Parent
Deleted
From_name
Subject

body
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
mining CSDL bất kỳ. Tuy nhiên phải chuyển các dạng về dạng cấu trúc bảng như ví dụ
sau để chương trình mining có thể thực hiện được :
Ví dụ: đối với dữ liệu user_friendlist trên:
5.3 Cải tiến thuật toán Apriori :
• Đếm tập dựa vào kỹ thuật băm : Một tập kích thước k có hasing bucket
count tương ứng nhỏ hơn giới hạn thì không thể phổ biến.
• Thu nhỏ giao tác : Một giao tác không chứa tập phổ biến kích thước k nào
thì không cần xét đến ở các lần duyệt tiếp theo.
Nguyễn Xuân Nghề 18
useridFriendlist (list user id)1
2
3
4
5
6
7
811,13
11,14
15,16,20
12,16, 17
14,19,20
12,13,17
15,18,19
11,12,16,19,20
User_idFriend_id1
1
2
2

3
3
3
4
4
4
5
5
5
6
6
6
7
7
7
8
8
8
8
811
13
11
14
15
16
20
12
16
17
14

19
20
12
13
17
15
18
19
11
12
16
19
20
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
• Chi nhỏ : Tập nào có khả năng phổ biến trong database thì sẽ phổ biến
trong ít nhất một phần chia của database.
• Lấy mẫu : Khai thác trên tập con của dữ liệu được cho, ngưỡng của độ ủng
hộ thấp hơn một phương thức để xác định tính đầy đủ.
• Suy ra các luật kết hợp từ các tập :
 For mỗi tập phổ biến l
Tạo tất cả các tập con khác rộng s của l
 For mỗi tập con khác rỗng s của l
Cho ra luật “s -> (l-s) nếu support(l)/support(s) ≥ minconf”,
trong đó minconf là ngưỡng độ tin cậy tối thiểu.
Giao diện và cách sử dụng chương trình :
1/ tạo dữ liệu vào và nhập thông tin :
Để chường trình chạy được ta ta cần 2 file .txt
• Config.txt: chứa 4 dòng:
o Số lượng items
o Số lượng các giao tác

o Minimum support
o Minimum confidence
• transa.txt: chứa các dòng:
o chứa đựng database giao tác như một table n x m, với n dòng và m
cột.
o mỗi dòng hiển thị một giao tác
o những cột được chia ra và cách nhau một khoảng trắng và hiển thị
những items
o 1 ám chỉ rằng item hiển thị trong giao tác và 0 là không hiển thị.
Trong Demo này file transa.txt có 10000 dòng (giao tác) với giá trị
cho 8 items mỗi dòng
• Ví dụ chúng ta sử dụng database như sau:
Nguyễn Xuân Nghề 19
User_idFriend_id1
1
2
2
3
3
3
4
4
4
5
5
5
6
6
6
7

7
7
8
8
8
8
811
13
11
14
15
16
20
12
16
17
14
19
20
12
13
17
15
18
19
11
12
16
19
20

Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
TID A B C D E
T
1
1 1 1 0 0
T
2
1 1 1 1 1
T
3
1 0 1 1 0
T
4
1 0 1 1 1
T
5
1 1 1 1 0
Transa.txt sẽ chứa 5 dòng của 5 giao tác, và 5 cột cho 5 items
1 1 1 0 0
1 1 1 1 1
1 0 1 1 0
1 0 1 1 1
1 1 1 1 0
Config.txt: có các giá trị như sau:
5
5
40
50
Sau khi thực thi, giao diện chương trình như sau:
( Hình 5 - minsup=40% và mincon=75%)

Nguyễn Xuân Nghề 20
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
(Hình 6 - minsup=40% và mincon=70%)
Total items per row :số items có trong hệ thống
Total rows : Số rows (transaction) có trong hệ thống
DatSet Table : Hiển thị toàn bộ thông tin trong file transa.txt
MinSup : quy định số support của hệ thống (0.00->1.00)
MinCon : quy định số confidence của hệ thống (0.00->1.00)
2/ Thực thi và xem kết quả chương trình :
Thực thi với trường hợp (minsup=40% và mincon=70%) – hình 6
- Frequent 2-itemsets : Là tất cả các tập tối đại tìm được mà có support thỏa
minsup (Tập phổ biến)
- The Rules list : Tất cả các luật thỏa minsup và mincon tìm được.
5.4 Kết quả đạt được – hạn chế - hướng phát triển
Kết quả:
• tìm hiểu và trình bày các kiến thức sau:
o tổng quan về khai thác dữ liệu (Data mining): các loại tri thức
trong cơ sở dữ liệu và kỹ thuật khai thác chúng.
Nguyễn Xuân Nghề 21
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
o Tổng quan về mạng xã hội và khai thác dữ liệu trên mạng xã
hội
o Trình bài luật kết hợp, thuật toán khai thác luật kết hợp – thuật
toán Apriori
o Trình bài cài đặt chương trình khai thác luật kết hợp cho mạng
xã hội Jomsocial
o Cài đặt được giải thuật apriori bằng ngôn ngữ java
Hạn chế:
• Chưa kết nối với database server của mạng xã hội (Mysql) và tích hợp
database vào giải thuật apriori một cách tự động.

• Chưa test ứng dụng thực tế giải thuật Apriori vào mạng xã hội
Jomsocial bằng việc sử dụng những luật kết hợp để viết những module
hiển thị trên giao diện website mạng xã hội như: module gợi ý những
thành viên có thể bạn biết. module dự đoán bạn của user A chắc chắn
sẽ là ai…
Hướng phát triển:
• Kết nối với database server của mạng xã hội và tích hợp vào thuật toán
apriori một cách tự động.
• Đưa kết quả thuật toán vào thực tế website mạng xã hội.
• Tiếp tục nghiên cứu các thuật toán khác: PHP(Perfect Hashing and
Prunning), FP Tree, Tree decision, Bayes networks, social networks
analysics… để thực hiện luận văn “Data mining for social network”
và ứng dụng vào thực tế.
5.5 Giới thiệu một số source code chính của chương trình:
//
// Method Name: createcandidate
// Purpose : generate candidate n-itemset
// Parameter : int n : n-itemset
// Return : Vector : candidate is stored in a Vector
//
public Vector createcandidate(int n)
{
Vector<String> tempcandlist=new Vector<String>();
Nguyễn Xuân Nghề 22
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
Vector ln_1=new Vector();
int i,j,length1;
String cand1=new String();
String cand2=new String();
String newcand=new String();

if (n==1)
for (i=1;i<=N;i++){
tempcandlist.addElement(Integer.toString(i));
}
//if its 2 or more itemset
else
{
ln_1=(Vector)largeitemset.elementAt(n-2);
length1=ln_1.size();
//for each item in the set
for (i=0;i<length1;i++)
{
cand1=(String)ln_1.elementAt(i);
//check from the next one until the end and make new item sets
for (j=i+1;j<length1;j++)
{
cand2=(String)ln_1.elementAt(j);
newcand=new String();
if (n==2) //if depth = 2, then no formula to determine which ones
can combine
{
newcand=cand1.concat(" ");
newcand=newcand.concat(cand2);
tempcandlist.addElement(newcand.trim());
}
else //first n-2 items in the itemset must be same for itemsets to
be combined
{
int c;
String i1,i2;

boolean same=true;
for (c=1;c<=n-2;c++)
{
i1=getitemat(c,cand1);
i2=getitemat(c,cand2);
if ( i1.compareToIgnoreCase(i2)!=0 )
{
same=false ;
break;
}
else
{
newcand=newcand.concat(" ");
newcand=newcand.concat(i1);
}
}
if (same) //if the first n-2 items are the same, combine the sets
{
Nguyễn Xuân Nghề 23
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
i1=getitemat(n-1,cand1);
i2=getitemat(n-1,cand2);
newcand=newcand.concat(" ");
newcand=newcand.concat(i1);
newcand=newcand.concat(" ");
newcand=newcand.concat(i2);
tempcandlist.addElement(newcand.trim());
}
} //end if n==2 else
} //end for j

} //end for i
} //end if n==1 else
if (n<=2)
return tempcandlist;
Vector<String> newcandlist=new Vector<String>();
//for each candidate, if already has the itemset (tokenizer splits at ",")
then don't add it
for (int c=0; c<tempcandlist.size(); c++)
{
String c1=(String)tempcandlist.elementAt(c);
String subset=gensubset(c1);
StringTokenizer stsubset=new StringTokenizer(subset,",");
boolean fake=false;
while (stsubset.hasMoreTokens())
if (!ln_1.contains(stsubset.nextToken()))
{
fake=true;
break;
}
if (!fake)
newcandlist.addElement(c1);
}
return newcandlist;
} //end public createcandidate(int n)
//
// Method Name: createlargeitemset
// Purpose : find all itemset which have their counters>=minsup
// Parameter : int n : n-itemset
// Return :
//

public void createlargeitemset(int n)
{
Vector candlist=new Vector();
Vector<String> lis=new Vector<String>(); //large item set
hashtreenode htn=new hashtreenode();
int i;
candlist=((candidateelement)candidate.elementAt(n-1)).candlist;
htn=((candidateelement)candidate.elementAt(n-1)).htroot;
Nguyễn Xuân Nghề 24
Công Nghệ Tri Thức Và Ứng Dụng Data Mining – Apriori algorithm
getlargehash(0,htn,fullitemset,lis);
largeitemset.addElement(lis);
} // end public void createlargeitemset(int n)
//
// Method Name: getlargehash
// Purpose : recursively traverse candidate hash tree
// : to find all large itemset
// Parameter : htnf is a hashtreenode (when other method call this method,it
is the root)
// : cand : candidate itemset string
// : int i : recursive depth
// : Vector lis : Vector that stores large itemsets
// Return :
//
public void getlargehash(int i,hashtreenode htnf,String
transa,Vector<String> lis)
{
Vector tempvec=new Vector();
int j;
if (htnf.nodeattr==IL)

{
tempvec=htnf.itemsetlist;
for (j=1;j<=tempvec.size();j++)

if (((itemsetnode)tempvec.elementAt(j-1)).counter >= ((minsup * M) /
100)){

resultVec.addElement(((itemsetnode)tempvec.elementAt(j-1)));
lis.addElement( ((itemsetnode)tempvec.elementAt(j-1)).itemset );

}
}
else
{
if (htnf.ht==null)
return;
for (int b=i+1;b<=N;b++)
if (htnf.ht.containsKey((getitemat(b,transa))))
getlargehash(b,
(hashtreenode)htnf.ht.get((getitemat(b,transa))),transa,lis);
}
}
//
//Method Name: getItemsets()
//Purpose : get the itemsets - tap pho bien
//Parameters : resultVec
//Return : itemsets
//
Nguyễn Xuân Nghề 25

×