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

Công nghệ tri thức và ứng dụng

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 (934.79 KB, 24 trang )

Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 1

MỤC LỤC
MỞ ĐẦU 2
CHƢƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 3
1.1. Đặt vấn đề 3
1.2. Khai phá dữ liệu 3
1.3. Quy trình phát hiện tri thức trong CSDL 4
1.4. Các kỹ thuật khai phá dữ liệu 5
1.4.1. Các kỹ thuật tiếp cận trong khai phá dữ liệu 5
1.4.2. Các dạng dữ liệu có thể khai phá 5
CHƢƠNG 2: LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU 6
2.1. Khai phá luật kết hợp 6
2.2. Lý thuyết về luật kết hợp 6
2.2.1. Khái niệm 6
2.2.2. Một số tính chất liên quan đến các hạng mục phổ biến: 8
2.2.3. Một số hƣớng tiếp cận trong khai phá luật kết hợp 9
CHƢƠNG 3: MỘT SỐ THUẬT TOÁN PHÁT HIỆN LUẬT KẾT HỢP 11
3.1. Thuật toán Apriori 11
3.1.1. Ý tƣởng thuật toán Apriori 11
3.1.2. Thuật toán Apriori 11
3.1.3. Sinh các luật kết hợp từ tập mục phổ biến: 13
3.2. Thuật toán FP-growth 16
3.2.1. Ý tƣởng thuật toán 16
3.2.2. Thuật toán FP-growth. 17
3.2.3. Đánh giá thuật toán FP-growth. 19
CHƢƠNG 4: ỨNG DỤNG LUẬT KẾT HỢP - PHÂN TÍCH DỮ LIỆU BÁN HÀNG 19
4.1. Màn hình chính: 20


4.2. Thiết kế chƣơng trình 20
4.3. Màn hình kết quả: 23
KẾT LUẬN 24
TÀI LIỆU THAM KHẢO 24


Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 2

MỞ ĐẦU
Trong xã hội hiện đại hôm nay, có vô số thông tin và tri thức đƣợc sáng tạo và
phát triển hằng ngày. Việc khai phá các dữ liệu để phục vụ cho mục đích nghiên cứu,
kinh doanh đang càng ngày đƣợc xem trọng. Một trong những yếu tố thành công trong
hoạt động kinh doanh ngày nay là biết sử dụng, khai thác thông tin một cách hiệu quả.
Điều đó có nghĩa là từ các dữ liệu có sẵn phải tìm ra những thông tin tìm ẩn chƣa đƣợc
phát hiện, khai thác. Thực hiện công việc đó chính là quá trình phát hiện tri thức trong cơ
sở dữ liệu mà trong đó kỹ thuật cho phép ta lấy đƣợc các tri thức là nhờ vào kỹ thuật khai
phá dữ liệu. Mặt khác, 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ó.
Từ 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. Mục tiêu chính của khai phá dữ liệu là lấy đƣợc những thông
tin hữu ích từ lƣợng dữ liệu khổng lồ.
Trong bài tiểu luận em tập trung nghiên cứu thuật toán khai phái luật kết hợp và
xây dựng một chƣơng trình phân tích cơ sở dữ liệu bán hàng nhằm phát hiện hành vi mua
sắm của khách hàng. Từ đó có thể nhận thấy tầm quan trọng trong việc tìm ra luật kết
hợp đến việc tăng doanh thu cho cơ sở kinh doanh.
Em xin chân thành cảm ơn GS.TSKH Hoàng Văn Kiếm đã truyền đạt kiến thức

chuyên đề môn Công nghệ tri thức & ứng dụng qua đó giúp em có đầy đủ kiến thức để
hoàn thành chuyên đề này.

Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 3

CHƢƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU
1.1. Đặt vấn đề
Trong kỷ nguyên Internet, Intranets, Warehouses, đã mở ra nhiều cơ hội cho
những nhà doanh nghiệp trong việc thu thập và xử lý thông tin. Hơn nữa, các công nghệ
lƣu trữ và phục hồi dữ liệu phát triển một cách nhanh chóng vì thế cơ sở dữ liệu ở các cơ
quan, doanh nghiệp, đơn vị ngày càng nhiều thông tin tiềm ẩn phong phú và đa dạng.
Cơ sở dữ liệu trong các doanh nghiệp thì dữ liệu giao dịch đóng một vai trò rất
quan trọng cho việc hoạch định kế hoạch kinh doanh trên thƣơng trƣờng vào những năm
tiếp theo. Hiện tại, việc sử dụng các dữ liệu này tuy đã đạt đƣợc một số kết quả nhất định
song vẫn còn một số vấn đề tồn đọng nhƣ:
 Dựa hoàn toàn vào dữ liệu, không sử dụng tri thức có sẳn về lĩnh vực, kết
quả phân tích khó có thể làm rõ đƣợc.
 Phải có sự hƣớng dẫn của ngƣời dùng để xác định phân tích dữ liệu nhƣ thế
nào và ở đâu.
Trong điều kiện và yêu cầu của thƣơng trƣờng, đòi hỏi phải có những phƣơng
pháp nhanh, phù hợp, tự động, chính xác và có hiệu quả để lấy đƣợc thông tin có giá trị.
Các tri thức chiết xuất đƣợc từ cơ sở dữ liệu trên sẽ là một nguồn tài liệu hỗ trợ cho lãnh
đạo trong việc lên kế hoạch hoạt động hoặc trong việc ra quyết định sản xuất kinh doanh.
Vì vậy, tính ứng dụng của khai thác luật kết hợp từ cơ sở dữ liệu giao dịch là một vấn đề
đang đƣợc quan tâm đặc biệt trong bài viết này.

Mục đích của việc nghiên cứu là xây dựng một giải pháp hiệu quả tính ứng dụng

luật kết hợp trong việc ra quyết định của cơ quan doanh nghiệp dựa trên cơ sở dữ liệu
giao dịch.
1.2. Khai phá dữ liệu
Khai phá dữ liệu là một khái niệm ra đời vào những năm cuối của thập kỹ 1980.
Nó là quá trình khám phá thông tin ẩn đƣợc tìm thấy trong các cơ sở dữ liệu và có thể
xem nhƣ là một bƣớc trong quá trình khám phá tri thức. Data Mining là giai đoạn quan
trọng nhất trong tiến trình khai phá tri thức từ cơ sở dữ liệu, các tri thức này hỗ trợ trong
việc ra quyết định trong khoa học và kinh doanh.
Những thông tin có giá trị tiềm ẩn trong kho cơ sở dữ liệu sẽ đƣợc chiết xuất ra và
sử dụng một cách hữu ích nhờ khai phá dữ liệu. Chức năng khai phá dữ liệu gồm có gộp
nhóm phân loại, dự báo, dự đoán và phân tích các liên kết. Năm 1989 Fayyad, Smyth và
Piatestsky-Shapiro đã dùng khái niệm Phát hiện tri thức từ cơ sở dữ liệu (Knowledge
Discovery in Database-KDD). Trong đó, khai phá dữ liệu là một giai đoạn rất đặc biệt
trong toàn bộ quá trình, nó sử dụng các kỹ thuật để tìm ra các mẫu từ dữ liệu.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 4

1.3. Quy trình phát hiện tri thức trong CSDL
Một trong những yếu tố thành công trong hoạt động kinh doanh ngày nay là biết sử
dụng, khai thác thông tin một cách hiệu quả. Điều đó có nghĩa là từ các dữ liệu có sẵn
phải tìm ra những thông tin tìm ẩn chƣa đƣợc phát hiện, khai thác. Thực hiện công việc
đó chính là quá trình phát hiện tri thức trong cơ sở dữ liệu mà trong đó kỹ thuật cho phép
ta lấy đƣợc các tri thức là nhờ vào kỹ thuật khai phá dữ liệu.
Khi lƣu trữ các dữ liệu khổng lồ thì chúng ta thấy rằng chắc chắn chúng phải chứa
những giá trị nhất định nào đó. Tuy nhiên, theo thống kê thì chỉ có một lƣợng nhỏ của
những dữ liệu này (khoảng từ 5% đến 10%) là đƣợc phân tích, số còn lại họ không biết sẽ
phải làm gì hoặc có thể làm gì với chúng nhƣng họ vẫn tiếp tục thu thập rất tốn kém với ý
nghĩ lo sợ rằng sẽ có cái gì đó quan trọng đã bị bỏ qua sau này có lúc cần đến nó. Mặt

khác, 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ó. Từ 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. Mục tiêu chính của khai phá dữ liệu là lấy đƣợc những thông tin hữu ích từ lƣợng
dữ liệu khổng lồ. Các bƣớc chính của quá trình khai phá dữ liệu bao gồm:
 Gom dữ liệu (Gathering): tập hợp dữ liệu là bƣớc đầu tiên trong quá trình
khai phá dữ liệu. Đây là bƣớc đƣợc khai thác trong một cơ sở dữ liệu, một kho dữ liệu và
thậm chí các dữ liệu từ các nguồn ứng dụng Web.

 Trích lọc dữ liệu (Selection): ở giai đoạn này dữ liệu đƣợc lựa chọn hoặc
phân chia theo một số tiêu chuẩn nào đó, ví dụ chọn tất cả những ngƣời có tuổi đời từ hai
lăm đến ba lăm và có trình độ đại học.

 Làm sạch, tiền xử lý và chuẩn bị trƣớc dữ liệu (Cleansing, Pre-processing
and Preparation): giai đoạn thứ ba này là giai đoạn hay bị sao lãng, nhƣng thực tế nó là
một bƣớc rất quan trọng trong quá trình khai phá dữ liệu. Một số lỗi thƣờng mắc phải
trong khi gom dữ liệu là tính không đủ chặt chẽ, logic. Vì vậy, dữ liệu thƣờng chứa các
giá trị vô nghĩa và không có khả năng kết nối dữ liệu. Giai đoạn này sẽ tiến hành xử lý
những dạng dữ liệu không chặt chẽ nói trên. Những dữ liệu dạng này đƣợc xem nhƣ
thông tin dƣ thừa, không có giá trị. Bởi vậy, đây là một quá trình rất quan trọng vì dữ liệu
này nếu không đƣợc “làm sạch - tiền xử lý - chuẩn bị trƣớc” thì sẽ gây nên những kết quả
sai lệch nghiêm trọng.

 Chuyển đổi dữ liệu (Transformation): tiếp theo là giai đoạn chuyển đổi dữ
liệu, dữ liệu đƣa ra có thể sử dụng và điều khiển đƣợc bởi việc tổ chức lại nó. Dữ liệu đã
đƣợc chuyển đổi phù hợp với mục đích khai thác.

 Phát hiện và trích mẫu dữ liệu (Pattern Extraction and Discovery): đây là
bƣớc mang tính tƣ duy trong khai phá dữ liệu. Ở giai đoạn này nhiều thuật toán khác

nhau đã đƣợc sử dụng để trích ra các mẫu từ dữ liệu. Thuật toán thƣờng dùng là nguyên
tắc phân loại, nguyên tắc kết hợp hoặc các mô hình dữ liệu tuần tự, v.v…
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 5


 Đánh giá kết quả mẫu (Evaluation of Result): đây là giai đoạn cuối trong
quá trình khai phá dữ liệu. Ở giai đoạn này, các mẫu dữ liệu đƣợc chiết xuất ra bởi phần
mềm khai phá dữ liệu. Không phải bất cứ mẫu dữ liệu nào cũng đều hữu ích, đôi khi nó
còn bị sai lệch. Vì vậy, cần phải ƣu tiên những tiêu chuẩn đánh giá để chiết xuất ra các tri
thức cần chiết xuất ra.
Quá trình này có thể đƣợc lặp lại nhiều lần, qua một hay nhiều giai đoạn dựa trên
phản hồi từ kết quả của các giai đoạn phía sau.
1.4. Các kỹ thuật khai phá dữ liệu
1.4.1. Các kỹ thuật tiếp cận trong khai phá dữ liệu
Căn cứ vào lớp các bài toán cần giải quyết, khai phá dữ liệu có các kỹ thuật áp dụng
sau:
Phân lớp và dự đoán: xếp một đối tƣợng vào một trong những lớp đã biết trƣớc. Ví
dụ: phân lớp các bệnh nhân dữ liệu trong hồ sơ bệnh án. Hƣớng tiếp cận này thƣờng sử
dụng một số kỹ thuật của học máy nhƣ cây quyết định, mạng nơ ron nhân tạo.
Luật kết hợp: Mục đích của luật kết hợp là tìm ra sự kết hợp (association) hay
tƣơng quan (correlation) giữa các items. Những luật kết hợp này có dạng X =>Y.
Luật kết hợp X =>Y có thể hiểu rằng những ngƣời mua các mặt hàng trong tập X
cũng thƣờng mua các mặt hàng trong tập Y. (X và Y gọi là itemset).
Ví dụ, nếu X = {Apple, Banana} và Y = {Cherry, Durian} và ta có luật kết hợp X
=>Y thì chúng ta có thể nói rằng những ngƣời mua Apple và Banana thì cũng thƣờng
mua Cherry và Durian.
Phân tích chuỗi theo thời gian: Tƣợng tự nhƣ khai phá luật kết hợp nhƣng có thêm

tính thứ tự và tính thời gian. Hƣớng tiếp cận này đƣợc ứng dụng nhiều trong lĩnh vực tài
chính và thị trƣờng chứng khoán vì nó có tính dự báo cáo.
Gom nhóm dữ liệu: xếp các đối tƣợng theo từng nhóm dữ liệu tự nhiên.
Mô tả khái niệm: thiên về mô tả, tổng hợp và tóm tắt khái niệm. Ví dụ: tóm tắt văn
bản.
1.4.2. Các dạng dữ liệu có thể khai phá
Do khai phá dữ liệu đƣợc ứng dụng rộng rãi nên nó có thể làm việc với rất nhiều
kiểu dữ liệu khác nhau. Sau đây là một số dạng dữ liệu điển hình: CSDL quan hệ, CSDL
đa chiều (multidimentional structures, data warehouses), CSDL dạng giao dịch, CSDL
quan hệ-hƣớng đối tƣợng, dữ liệu không gian và thời gian, Dữ liệu chuỗi thời gian,
CSDL đa phƣơng tiện, dữ liệu Text và Web
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 6

CHƢƠNG 2: LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU
2.1. Khai phá luật kết hợp
Khai phá luật kết hợp là tìm các mẫu phổ biến, sự kết hợp, sự tƣơng quan, hay các
cấu trúc nhân quả giữa các tập đối tƣợng trong các cơ sở dữ liệu giao tác, cơ sở dữ liệu
quan hệ, và những kho thông tin khác.
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 quý hiếm và mang nhiều thông tin từ cơ sở dữ liệu
tác nghiệp 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.
Luật kết hợp là một biểu thức có dạng: X Y, trong đó X và Y là tập các trƣờng
gọi là item. Ý nghĩa của các luật kết hợp khá dễ nhận thấy: Cho trƣớc một cơ sở dữ liệu
có D là tập các giao tác - trong đó mỗi giao tác T  D là tập các item - khi đó X Y diễn
đạt ý nghĩa rằng bất cứ khi nào giao tác T có chứa X thì chắc chắn T có chứa Y.
Độ hỗ trợ (Support) và độ tin cây (Confidence) là 2 tham số dùng để đo lƣờng luật kết

hợp:
 Độ hỗ trợ (Support) của luật kết hợp X =>Y là tần suất của giao dịch chứa tất cả
các items trong cả hai tập X và Y. Ví dụ, support của luật X =>Y là 5% có nghĩa
là 5% các giao dịch X và Y đƣợc mua cùng nhau.
 Độ tin cậy (Confidence) của luật kết hợp X =>Y là xác suất xảy ra Y khi đã biết
X. Ví dụ độ tin cậy của luật kết hợp {Apple} =>Banana} là 80% có nghĩa là 80%
khách hàng mua Apple cũng mua Banana.
Nhƣ vậy, khai phá luật kết hợp là một phƣơng pháp xử lý thông tin quan trọng và
phổ biến, nó nhằm khám phá mối liên hệ giữa các mẫu dữ liệu. Tiếp theo, khoá luận sẽ đề
cập đến luật kết hợp. Đây là một hƣớng nghiên cứu quan trọng trong lĩnh vực khai phá dữ
liệu và là nội dung tìm hiểu, nghiên cứu trọng tâm của khoá luận.
2.2. Lý thuyết về luật kết hợp
2.2.1. Khái niệm
Cho một tập I = {I1, I2, , Im} các tập m mục, một giao dịch T đƣợc định nghĩa
nhƣ một tập con của các khoản mục trong I (TI).
Tƣơng tự nhƣ khái niệm tập hợp, các giao dịch không đƣợc trùng lặp, nhƣng có thể
nới rộng tính chất này của tập hợp và trong các thuật toán sau này, ngƣời ta đều giả thiết
rằng các khoản mục trong một giao dịch và trong tất cả các tập mục khác, có thể coi
chúng đã đƣợc sắp xếp theo thứ tự từ điển của các mục.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 7

 
D
TXDT 
)sup(
)sup(
)(

)TX(
X
YX
TXp
TYp 



Gọi D là CSDL của n giao dịch và mỗi giao dịch đƣợc đánh nhãn với một định danh
duy nhất. Nói rằng, một giao dịch T  D hỗ trợ một tập X  I nếu nó chứa tất cả các item
của X.
Điều này nghĩa là X  T, trong một số trƣờng hợp ngƣời ta dùng ký hiệu T(X) để
chỉ tập các giao dịch hỗ trợ cho X. Kí hiệu support(X) (hoặc sup(X), s(X)) là tỷ lệ phần
trăm của các giao dịch hỗ trợ X trên tổng các giao dịch trong D, nghĩa là:
sup(X) = (2.1)
Độ hỗ trợ tối thiểu minsup là một giá trị cho trƣớc bởi ngƣời sử dụng. Nếu tập mục
X có sup(X)  minsup thì ta nói X là một tập các mục phổ biến. Một tập phổ biến đƣợc
sử dụng nhƣ một tập đáng quan tâm trong các thuật toán, ngƣợc lại, những tập không
phải tập phổ biến là những tập không đáng quan tâm. Các phần sau sẽ sử dụng những
cụm từ khác nhƣ “X có độ hỗ trợ tối thiểu”, hay “X không có độ hỗ trợ tối thiểu” cũng để
nói lên rằng X thỏa mãn hay không thỏa mãn support(X)  minsup.
Một khoản mục X đƣợc gọi là k-itemset nếu lực lƣợng của X bằng k, tức là
kX 
.
Một luật kết hợp có dạng R: X => Y, trong đó X, Y là tập các mục, X, Y  I và X
Y = . X đƣợc gọi là tiên đề và Y đƣợc gọi là hệ quả của luật.
Luật X => Y tồn tại một độ tin cậy c . Độ tin cậy c đƣợc định nghĩa là khả năng
giao dịch T hỗ trợ X thì cũng hỗ trợ Y. Ta có công thức tính độ tin cậy c nhƣ sau:
conf(X =>Y) = p(Y  I | X  I ) = (2.2)
Tuy nhiên, không phải bất cứ luật kết hợp nào có mặt trong tập các luật có thể đƣợc

sinh ra cũng đều có ý nghĩa trên thực tế. Mà các luật đều phải thoả mãn một ngƣỡng hỗ
trợ và tin cậy cụ thể. Thực vậy, cho một tập các giao dịch D, bài toán phát hiện luật kết
hợp là sinh ra tất cả các luật kết hợp mà có độ tin cậy conf lớn hơn độ tin cậy tối thiểu
minconf và độ hỗ trợ sup lớn hơn độ hỗ trợ tối thiểu minsup tƣơng ứng do ngƣời dùng
xác định. Khai phá luật kết hợp đƣợc phân thành hai bài toán con:
Bài toán 1: Tìm tất cả các tập mục mà có độ hỗ trợ lớn hơn độ hỗ trợ tối thiểu do
ngƣời dùng xác định. Các tập mục thoả mãn độ hỗ trợ tối thiểu đƣợc gọi là các tập mục
phổ biến.
Bài toán 2: Dùng các tập mục phổ biến để sinh ra các luật mong muốn. Quy trình
khai thác luật kết hợp
+ Bƣớc một:Tìm tất cả các tập phổ biến (theo ngƣỡng minsup)
+ Bƣớc hai: Tạo ra các luật từ các tập phổ biến Đối với mỗi tập phổ biến S, tạo ra
tất cả các tập con khác rỗng của S. Đối với mỗi tập con khác rỗng A của S thì luật A =>
(S - A) là luật kết hợp cần tìm nếu: conf (A => (S - A)) = supp(S) / supp(A) ≥ minconf
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 8

)sup(
)sup(
AB
ABCD
conf 
(2.3)
Nếu conf ≥ minconf thì luật đƣợc giữ lại (luật này sẽ thoả mãn độ hỗ trợ tối thiểu vì
ABCD là phổ biến).
2.2.2. Một số tính chất liên quan đến các hạng mục phổ biến:
2.2.2.1. Với tập mục phổ biến, có 3 tính chất sau:
Tính chất 1 (Độ hỗ trợ của tập con):

Với A và B là tập các mục, nếu A  B thì sup(A)  sup(B)
Điều này là rõ ràng vì tất cả các giao tác của D hỗ trợ B thì cũng hỗ trợ A.
Tính chất 2:
Một tập chứa một tập không phổ biến thì cũng là tập không phổ biến.
Nếu một mục trong B không có độ hỗ trợ tối thiểu trên D nghĩa là A  B và sup(A)<
minsup thì B sẽ không phải là một tập phổ biến vì support(B)  support(A) < minsup
(theo tính chất 1)
Tính chất 3: Các tập con của tập phổ biến cũng là tập phổ biến
Nếu mục B là mục phổ biến trên D, nghĩa là support(B)  minsup thì mọi tập con A
của B là tập phổ biến trên D vì support(A)  support(B) > minsup.
2.2.2.2. Với luật kết hợp, có 4 tính chất sau:
Tính chất 1:( Không hợp các luật kết hợp)
Nếu có XZ và YZ trong D thì không nhất thiết XYZ là đúng
Xét trƣờng hợp X Z = và các tác vụ trong D hỗ trợ Z nếu và chỉ nếu chúng hỗ trợ
mỗi X hoặc Y, khi đó luật XYZ có độ hỗ trợ 0%.
Tƣơng tự : XY  XZ  XYZ
Tính chất 2:(Không tách luật)
Nếu XYZ thì XZ và YZ chƣa chắc xảy ra
Ví dụ trƣờng hợp Z có mặt trong một giao tác chỉ khi cả hai X và Y cũng có mặt, tức
là sup(XY)= sup(Z), nếu độ hỗ trợ của X và Y đủ lớn hơn sup(XY), tức là sup(X) >
sup(XY) và sup(Y) > sup(XY) thì hai luật riêng biệt sẽ không đủ độ tin cậy
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 9

)sup(
)sup(
)sup(
)sup(

CL
L
DL
L



Tuy nhiên đảo lại: XYZ  XY  XZ
Tính chất 3: (Các luật kết hợp không có tính bắc cầu)
Nếu XY và YZ, chúng ta không thể suy ra XZ.
Ví dụ: giả sử T(X)  T(Y)  T(Z), ở đó T(X), T(Y), T(Z) tƣơng ứng là các giao dịch
chứa X,Y,Z, và độ tin cậy cực tiểu minconf
conf(XY) =conf(YZ)=minconf thế thì: conf(XY) =minconf2 < minconf vì
minconf < 1, do đó luật XZ không đủ độ tin cậy
Tính chất 4:
Nếu A(L - A) không thoả mãn độ tin cậy cực tiểu thì luật
B (L -B) cũng không thoả mãn, với các tập mục L,A,B và B  A  L
Vì supp(B)  sup(A) (theo tính chất 1) và định nghĩa độ tin cậy, chúng ta nhận đƣợc:
conf(B (L-B)) =
)sup(
)sup(
)sup(
)sup(
A
L
B
L

< minconf (2.4)
Cũng nhƣ vậy: Nếu có (L-C) C thì ta cũng có luật (L – D)D, với DC và D.

Bởi vì DC nên (L - D)  (L - C), do đó sup(L - D)  sup(L-C)

 minconf (2.5)
Các tính chất này sẽ đƣợc sử dụng trong thuật toán mô tả trong các chƣơng sau.
2.2.3. Một số hƣớng tiếp cận trong khai phá 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… và có một số hƣớng chính nhƣ sau.
Luật kết hợp nhị phân 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 mụ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 CSDL chứ không quan tâm về “mức độ” xuất hiện. Ví dụ: Trong hệ
thống tính cƣớc điện thoại thì việc gọi 10 cuộc điện thoại và một cuộc đƣợc xem là giống
nhau. Thuật toán tiêu biểu nhất khai phá 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 hoá, mờ hoá, …
Luật kết hợp có thuộc tính số và thuộc tính hạng mục: Các thuộc tính của các CSDL
thực tế có kiểu rất đa dạng, nhƣ số nhị phân, giá trị định tính, định lƣợng Để 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
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 10

rời rạc hoá 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ó.
Luật kết hợp tiếp cận theo hƣớng tập thô: Tìm kiếm luật kết hợp dựa trên lý thuyết
tập thô.
Luật kết hợp nhiều mức: Cách tiếp cận theo luật này sẽ tìm kiếm thêm những luật
có dạng “mua máy tính PC => mua hệ điều hành AND mua phần mềm tiện ích văn

phòng, …” thay vì chỉ những luật quá cụ thể nhƣ “mua máy tính IBM PC => mua hệ điều
hành Microsoft Windows AND mua phần mềm tiện ích văn phòng Microsoft Office, …”.
Nhƣ vậy dạng luật đầu là dạng luật tổng quát hoá của dạng luật sau và tổng quát theo
nhiều mức khác nhau.
Luật kết hợp mờ: Với những hạn chế còn gặp phải trong quá trình rời rạc hoá 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ê 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ờ hoá.
Luật kết hợp với thuộc tính đƣợc đánh trọng số: Trong thực tế, các thuộc tính trong
CSDL không phải lúc nào cũng có vai trò nhƣ nhau. Có một số thuộc tính đƣợc chú trọng
hơn và có mức độ quan trọng cao hơn các thuộc tính khác. Ví dụ khi khảo sát về doanh
thu hàng tháng, thông tin về thời gian đàm thoại, vùng cƣớc là quan trọng hơn nhiều so
với thông tin về phƣơng thức gọi Trong quá trình tìm kiếm luật, chúng ta sẽ gán thời
gian gọi, vùng cƣớc các trọng số lớn hơn thuộc tính phƣơng thức gọi. Đây là hƣớng
nghiên cứu rất thú vị và đã đƣợc một số nhà nghiên cứu đề xuất cách giải quyết bài toán
này. Với luật kết hợp có thuộc tính đƣợc đánh trọng số, chúng ta sẽ khai thác đƣợc những
luật “hiếm” (tức là có độ hỗ trợ thấp, nhƣng có ý nghĩa đặc biệt hoặc mang rất nhiều ý
nghĩa).
Luật kết hợp song song: Bên cạnh khai thác luật kết hợp tuần tự, các nhà làm tin
học cũng tập trung vào nghiên cứu các thuật giải song song cho quá trình phát hiện luật
kết hợp. Nhu cầu song song hoá và xử lý phân tán là cần thiết bởi kích thƣớc dữ liệu ngày
càng lớn hơn nên đòi hỏi tốc độ xử lý cũng nhƣ dung lƣợng bộ nhớ của hệ thống phải
đƣợc đảm bảo. Có rất nhiều thuật toán song song khác nhau đã đề xuất để có thể không
phụ thuộc vào phần cứng.
Bên cạnh những nghiên cứu về các biến thể của luật kết hợp, các nhà nghiên cứu
còn chú trọng đề xuất những thuật toán nhằm tăng tốc quá trình tìm kiếm tập phổ biến từ
CSDL.

Ngoài ra, còn có một số hƣớng nghiên cứu khác về khai thác luật kết hợp nhƣ: khai
thác luật kết hợp trực tuyến, khai thác luật kết hợp đƣợc kết nối trực tuyến đến các kho
dữ liệu đa chiều thông qua công nghệ OLAP, MOLAP, ROLAP, ADO.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 11


CHƢƠNG 3: MỘT SỐ THUẬT TOÁN PHÁT HIỆN LUẬT KẾT HỢP
3.1. Thuật toán Apriori
3.1.1. Ý tƣởng thuật toán Apriori
Apriori là một thuật giải đƣợc do Rakesh Agrawal, Tomasz Imielinski, Arun
Swami đề xuất lần đầu vào năm 1993. Thuật toán tìm giao dịch t có độ hỗ trợ và độ tin
cậy thoả mãn lớn hơn một giá trị ngƣỡng nào đó.
Thuật toán đƣợc tỉa bớt những tập ứng cử viên có tập con không phổ biến trƣớc
khi tính độ hỗ trợ.
Thuật toán Apriori tính tất cả các tập ứng cử của tập k trong một lần duyệt CSDL.
Apriori dựa vào cấu trúc cây băm. Tìm kiếm đi xuống trên cấu trúc cây mỗi khi ta chạm
lá, ta tìm đƣợc một tập ứng cử viên có tiền tố chung đƣợc bao gồm trong giao dịch. Sau
đó các tập ứng cử này đƣợc tìm trong giao dịch đã đƣợc ánh xạ trƣớc đó. Trong trƣờng
hợp tìm thấy biến đếm đƣợc tăng lên 1.
Ký hiệu: Giả sử các mục trong mỗi giao dịch đƣợc lƣu giữ theo trật tự từ điển. Gọi
số các mục trong một tập mục là kích thƣớc của nó và gọi tập mục có kích thƣớc k là tập
k-mục (tập k mục). Các mục trong mỗi tập mục cũng đƣợc giữ ở trật tự từ điển. Ta sử
dụng các ký hiệu sau:
L
k
: Tập các tập k-mục phổ biến (với độ hỗ trợ cực tiểu minsup nào đó)
C

k
: Tập các tập k-mục ứng cử (các tập mục phổ biến tiềm năng)
3.1.2. Thuật toán Apriori
Input: CSDL D, minsup.
Output: Tập các tập mục phổ biến.

1. L
1
= {Các 1 - itemset phổ biến};
2. k=2;
3. While( L
k-1
! =

)
4. { C
k
= apriori_gen(L
k-1
, minsup);// các ứng cử mới theo chương trình
con ở dưới đây.
5. for(  giao dịch t D)
6. { C
t
=Subset (C
k
,t);// ứng cử viên được chứa trong t
7. for ( ứng cử c  C
t
)

8. c.count ++;
10. }
11. L
k
={ c

C
k

c.count

minsup}
12. k++;
13. }
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 12

14. Return L=

k
L
k'
;

// sinh ứng cử viên mới (**)
Void apriori_gen(L
k-1
, minsup )

1. { for (

itemset l
1

L
k-1
)
2. for (

itemset l
2

L
k-1
)
3. if((L
1
(1)== L
2
(1)&&L
1
(2) == L
2
(2)&& && L
1
(k-2) == L
2
(k-2)) &&L
1

(k-
1) == L
2
(k-1))
4. { c= L
1
kết nối L
2
;
5. if( has_inrequent_subset(c, L
k-1
)) delete c;
6. else add c to C
k
;
7. }
8. return C
k

9.}

Boolean has_infrequent_subset(c,L
k-1
)
1.{ for (

(k-1)-subset s

c)
2. if(s  L

k-1
) return TRUE;
3. else return FALSE ;
4.}
Giải thích: Lần duyệt đầu tiên, sẽ tính số lần xuất hiện của mỗi mục để xác định các
1- itemset phổ biến. Lần duyệt thứ k (k  2) sẽ bao gồm 2 giai đoạn:
 Tập phổ biến L
k-1
đã tìm thấy ở lần duyệt thứ k-1 đƣợc sử dụng để sinh ra các tập
ứng cử viên C
k
bằng việc sử dụng hàm Apriori_gen.
 Dựa vào CSDL, tính độ hỗ trợ của các ứng của viên trong Ck. Các ứng cử viên
trong C
k
mà đƣợc chứa trong giao dịch t có thể đƣợc xác định một cách hiệu quả bằng
việc sử dụng cây băm đƣợc mô tả nhƣ sau:
Trong giai đoạn 2 (giai đoạn sửa, tỉa): xoá bỏ các tập c

C
k
sao cho một vài (k-1) –
tập con của c không nằm trong L
k-1
. Thủ tục này là đầy đủ bởi đối với bất kì tập nào L
k
với độ hỗ trợ tối thiểu thì các tập con kích cỡ (k-1) cũng có độ hỗ trợ tối thiểu, do đó nếu
ta mở rộng mỗi tập trong L
k-1
với tất cả các tập mục có thể và sau đó xoá tất cả các tập mà

(k-1) – tập con của nó không nằm trong L
k-1
, ta sẽ nhận đƣợc tập các tập trong L
k.

Việc kết nối là tƣơng đƣơng với việc mở rộng L
k-1
với mỗi mục nằm trong CSDL và
sau đó xoá bỏ các tập này mà đối với nó (k-1) –itemset nhận đƣợc bằng việc xoá đi mục
thứ (k-1) không nằm trong L
k-1
. Ở giai đoạn này C
k


L
k
. Với lập luận nhƣ vậy, giai đoạn
tỉa là giai đoạn ngƣời ta xoá khỏi C
k
tất

cả các tập mà các (k-1) tập con của nó không nằm
trong L
k-1
, cũng không xoá bất kỳ một tập nào có thể nằm trong L
k
.
Hàm Subset: Các tập ứng cử viên C
k

đƣợc lƣu trữ trong một cây băm. Một nút của
cây này hoặc là chứa một danh sách của các tập (nút lá) hoặc bảng băm ( một nút trong).
Trong mỗi một nút trong, mỗi cụm (bucket) của bảng băm chỉ đến một nút khác. Gốc của
cây băm đƣợc xem ở độ sâu là 1. Một nút trong ở độ sâu d sẽ dẫn đến nút ở độ sâu d+1.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 13

Các tập đƣợc lƣu trữ trong các lá. Khi ta bổ sung thêm một tập c, ta bắt từ nút gốc và đi
xuống cây cho đến khi ta chạm vào một lá. Tại một nút ở độ sâu d, ta quyết định sẽ đi
theo cành nào bằng việc áp dụng hàm băm đối với mục thứ d của tập đó và theo con trỏ
trong Bucket tƣơng ứng. Tất cả các nút ban đầu đƣợc tạo ra nhƣ là nút lá. Khi số các tập
trong một nút lá vƣợt quá ngƣỡng đƣợc chọn, nút lá này đƣợc chuyển thành một nút
trong.
Bắt đầu từ nút gốc, hàm Subset tìm tất cả các ứng cử viên đƣợc chứa trong giao dịch t
nhƣ sau: Nếu ta bắt đầu tại một lá, ta tìm những tập trong nút lá này đƣợc chứa trong giao
dịch t và bổ sung các mối quan hệ với chúng đối với tập kết quả mong muốn. Nếu ta đang
ở một nút trong và ta đến đƣợc nó bằng việc băm mục i, ta băm trên mỗi mục đi sau i
trong t và áp dụng một cách đệ quy thủ tục đó đối với nút này trong Bucket tƣơng ứng.
Đối với nút gốc, ta băm theo mỗi mục trong t.
Để thấy đƣợc tại sao hàm Subset trả lại tập các tham khảo mong muốn hãy để ý đến
những gì sẽ xảy ra tại nút gốc. Đối với bất kỳ tập c nào đƣợc chứa trong giao dịch t, mục
đầu tiên cần phải có trong t. Tại nút gốc, việc băm mọi mục trong t đảm bảo đƣợc rằng ta
chỉ không biết các tập mà nó bắt đầu với một mục không nằm trong t. Những lí luận
tƣơng tự áp dụng cho các mức sâu hơn. Vì các mục trong bất kì tập nào cũng đƣợc sắp
thứ tự, nếu ta đến đƣợc một nút hiện tại bằng việc băm mục i, ta chỉ cần quan tâm đến
những mục trong t nó xuất hiện sau i.
// Bƣớc tỉa: Xoá bớt tất cả các tập mục c  C
k

mà (k-1) tập con của c không
phụ thuộc L
k-1
.
1. for ( tập mục c  C
k
)
2. for ( (k-1) – tập con s của c)
3. if(s  L
k-1
)
4. delete c khỏi C
k
;
Nhận xét: Thuật toán Apriori với n là độ dài lớn nhất của tập đƣợc sinh ra. Vậy thì
thuật toán sẽ thực hiện duyệt toàn bộ các giao tác n+1 lần. Nhƣ vậy, nếu bỏ qua thời gian
so sánh tìm sự xuất hiện của một mẫu trong một giao tác thì độ phức tạp của thuật toán
Apriori là O(A) > O(n*L) trong đó L là kích thƣớc CSDL còn n là độ dài cần đạt đƣợc
của các mẫu.
Ngoài ra, nếu độ hỗ trợ tối thiểu minsup bị thay đổi thì thuật toán sẽ phải thực hiện lại
từ đầu, điều này sẽ rất mất thời gian. Thuật toán Apriori đƣợc xây dựng nhằm phát hiện
các luật kết hợp giữa các đối tƣợng với độ hỗ trợ và độ tin cậy tối thiểu.
3.1.3. Sinh các luật kết hợp từ tập mục phổ biến:
Sau khi các tập mục phổ biến từ các tác vụ trong CSDL đã đƣợc tìm thấy, nó có thể
sinh ra các luật kết hợp mạnh, ở đó luật kết hợp mạnh (strong association rule) là luật
thoả mãn cả hai độ hỗ trợ cực tiểu và độ tin cậy cực tiểu. Điều đó có thể thực hiện bằng
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 14


việc sử dụng tính độ tin cậy của luật, ta nhắc lại: độ tin cậy của luật X  Y là: conf (X 
Y) = P(Y/X) = sup(XY)/sup(X)
ở đó sup(XY) là độ hỗ trợ của XY và sup(X) là độ hỗ trợ của X.
Có thể coi tỷ số trên là tỷ số giữa: số các tác vụ chứa XY và số các tác vụ chứa X.
Dựa trên biểu thức tính toán đó, các luật kết hợp có thể đƣợc sinh nhƣ sau:
Với mỗi tập mục phổ biến l, sinh ra tất cả các tập con không rỗng của l
Với mỗi tập con không rỗng a của l, ta có luật a  (l-a) nếu
)sup(
)sup(
a
l
 minconf ở đó
minconf là ngƣỡng độ tin cậy cực tiểu
Vì các luật đƣợc sinh ra từ các tập mục phổ biến nên độ hỗ trợ của luật đã đƣợc thoả
mãn, tức là độ hỗ trợ của luật chính là sup(l).
Thuật toán đơn giản.
Chúng ta cải tiến thủ tục xử lý bằng cách sinh ra các tập con của mục lớn theo kiểu đệ
qui ƣu tiên độ sâu. Ví dụ: với tập mục ABCD, đầu tiên chúng ta xét tập con ABC, sau đó
đến AB,
Tiếp đến, nếu tập con a của tập mục lớn l không sinh ra đƣợc luật thì không cần xét
đến các tập con của nó nữa. Chẳng hạn: nếu luật ABC D không đủ độ tin cậy thì ta
không cần xét đến luật AB CD.
Điều này có thể chứng minh đơn giản nhƣ sau:
Nếu luật a (l-a) không thoả mãn độ tin cậy, tức là: conf(al-a)) nhỏ hơn minconf,
thế thì với bất kỳ tập con b nào của a ta có:
Vì b a nên supp(b)supp(a), do vậy:
Conf(b(l-b)) =
)sup(
)sup(

)sup(
)sup(
a
l
b
l

=conf((a(l-a))<minconf
Tức là độ tin cậy của luật b(l-b) cũng nhỏ hơn minconf
Thuật toán đơn giản này có thể mô tả nhƣ sau:
Thuật toán 1.
For all large itemsets l
k
, k2 do call genrules(l
k
,l
k
)
Procedure genrules(l
k
:large k-itemsets, a
m
: large m-itemsets)
A={(m-1)-itemsets a
m-1
|a
m-1
 a
m
};

Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 15

for all a
m-1
 A do again
conf=support(l
k
)/support(a
m-1
);
if (conf  minconf) then
begin
output the rule a
m-1
(l
k
-a
m-1
),
with confidence=conf and support=support(l
k
)
if (m-l > l) then call genrules(l
k
,a
m-1
);

//để sinh ra các luật với tập con của a
m-1
là phần tiền đề
end
end
Ở trên ta đã chỉ ra rằng nếu một luật không thoả mãn với tập cha a thì cũng không
thoả mãn với tập con của nó. Ví dụ nhƣ trên đã xét: nếu ABCD không đủ độ tin cậy thì
luật ABCD cũng không đủ độ tin cậy. Điều đó cũng có thể áp dụng theo hƣớng ngƣợc
lại nhƣ sau: nếu xảy ra luật với tập con thì cũng xảy ra luật với tập cha. Ví dụ: nếu luật
ABCD có đủ độ tin cậy thì luật ABCD cũng đủ độ tin cậy.
Thuật toán 2.
For all larger itemsets l
k
, k 2 do
Begin
H
l
={các phần kết luận của các luật nhận đƣợc từ l
k
với l-mục ở kết luận};
Call ap_genrules(l
k
,H
l
)
End
Procedure ap_genrules(l
k
:large k-itemsets, H
m

:set of m-item consequents)
If (k>m+1) then
begin
H
m+1
=apriori_gen(H
m
);
For all h
m+1
H
m-1
do
Begin
Conf = support(l
k
)/support(l
k
-h
m+1
);
If (conf minconf) then
Output the rule(l
k
-h
m+1
)h
m+1

//với độ tin cậy là conf và độ hỗ trợ là support (l

k
)
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 16

Else
Delete h
m+1
from H
m+1

End
Call ap_genrules(l
k
, H
m+1
)
End
Thuật toán nhanh hơn này sử dụng thủ tục apriori_gen mô tả ở phần thuật toán
Apriori ở trên. Ta xem tại sao thuật toán 2 này nhanh hơn thuật toán 1 trên:
Ví dụ, ta xét tập mục ABCDE: Giả sử rằng ACDEB, ADECB là các luật có l-
mục ở phần kết luận thoả mãn độ hỗ trợ cực tiểu minconf.
Trong thuật toán đơn giản trên, gọi đệ quy genrules(ABCDE, ACD) sẽ kiểm tra các
luật với 2-mục ở phần kết luận là: ACDBE, ADEBC, CDEAB và ACEBD
Luật thứ nhất không xảy ra vì E  BE và ABCD E không thoả mãn độ tin cậy. Các
luật thứ hai và thứ ba cũng không thoả mãn độ tin cậy với lý do tƣơng tự.
Chỉ có một luật với 2 - mục ở phần kết luận nhận đƣợc là ACEBD, ở đó B và D là
các kết luận của các luật kết hợp có 1- mục ở phần kết luận. Thuật toán nhanh hơn mô tả

ở trên chỉ kiểm tra một luật này.
3.2. Thuật toán FP-growth
3.2.1. Ý tƣởng thuật toán
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 mẫu nhiều,
mẫu dài hoặc độ hỗ trợ cực tiểu thấp, các thuật toán Apriori gặp phải 2 chi phí lớn:
Chi phí cho số lƣợng khổng lồ các tập ứng cử. Ví dụ: nếu có 10
4
tập 1-mục phổ
biến thì thuật toán Apriori sẽ cần sinh ra hơn 10
7
các ứng cử 2-mục và thực hiện kiểm tra
sƣ xuất hiện của chúng. Hơn nữa, để khám phá đƣợc một số mẫu phổ biến kích thƣớc (độ
dài) là l, thuật toán phải kiểm tra (2
l
-2 ) các mẫu phổ biến tiềm năng. Ví dụ l=100, chẳng
hạn là {a
1
,a
2
, ,a
100
}, nó phải sinh ra tổng số 2
100
 10
30
các ứng cử (đây chính là số tập
con của tập có 100 phần tử)
Đòi hỏi lặp lại nhiều lần duyệt CSDL để kiểm tra tập rất lớn các ứng cử. 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.

Trong trƣờng hợp mẫu phổ biến dài hơn và CSDL lớn, có nhiều bản ghi, điều này là
không thể thực hiện đƣợc. Thuật toán Apriori chỉ thích hợp cho các CSDL thƣa (sparse),
với các CSDL dày (dense) thì thuật toán thực hiện kém hiệu quả hơn.
Thuật toán mới xuất hiện gần đây có tên là FP-growth đƣợc giới thiệu bởi Jiawei
Hai Jian Pei và Yiwen Yin năm 2000, sẽ khắc phục đƣợc các nhƣợc điểm nêu trên. Thuật
toán tìm các tập phổ biến hiệu qủa hơn thuật toán Apriori bằng việc sử dụng một kỹ thuật
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 17

khác không cần sinh các ứng cử. Sự hiệu quả của khai phá nhận đƣợc với 3 kỹ thuật
chính:
Thứ nhất nó mở rộng của cấu trúc cây prefix (prefix tree), đƣợc gọi là cây mẫu
phổ biến (frequent pattern tree hoặc gọi tắt là FP- tree) dùng để nén dữ liệu thích hợp.
Chỉ có các mục độ dài l (l-item) ở trong cây và các nút của cây đƣợc sắp đặt để các nút
xuất hiện thƣờng xuyên hơn có thể dễ dàng chia sẻ với các nút xuất hiện ít hơn. CSDL
lớn đƣợc nén chặt tới cấu trúc dữ liệu nhỏ hơn (FP-tree), tránh đƣợc chi phí lặp lại duyệt
qua CSDL.
Thứ hai, phƣơng pháp khai phá phát triển (growth) từng đoạn dựa trên Fp-tree gọi
là phƣơng pháp FP – growth đã đƣợc thực hiện. Bắt đầu từ mẫu phổ biến độ dài 1, FP-
growth chỉ xem xét cơ sở mẫu phụ thuộc của nó (condition pattern base) nhƣ là CSDL
con (sub-database) bao gồm tập các mục phổ biến cùng xuất hiện với mẫu hậu tố (suffix
pattern), xây dựng condition FP-tree tƣơng ứng của nó và thực hiện khai phá đệ qui trên
cây này. Mẫu phát triển là nhận đƣợc qua việc nối mẫu hậu tố (suffix pattern) với một
đoạn mẫu đƣợc sinh ra từ condition FP-tree. Khai phá dựa trên FP-tree đƣợc thực hiện
theo cách phát triển (growth) các đoạn mẫu để tránh chi phí cho việc sinh ra số lƣợng lớn
các tập ứng cử.
Thứ ba, kỹ thuật tìm kiếm đƣợc dùng ở đây là dựa vào sự phân chia và chế ngự
(divide-and-conquer method) để phân rã nhiệm vụ khai phá thành tập các nhiệm vụ nhỏ

hơn với giới hạn các mẫu trong các CSDL nhằm thu gọn không gian tìm kiếm.
Phƣơng pháp FP-growth đã chứng tỏ đƣợc tính hiệu quả của nó và thể hiện khai
phá cho cả các mẫu ngắn và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL
2 lần.
3.2.2. Thuật toán FP-growth.
Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của các tập mục (đếm
số lần xuất hiện của từng mục).
Tiếp đến, những mục không đủ độ hỗ trợ bị loại. Các mục còn lại đƣợc sắp theo thứ
tự giảm dần của độ hỗ trợ (cũng tức là giảm dần theo số lần xuất hiện trong CSDL), ta
nhận đƣợc danh sách L các mục đã sắp.
Duyệt CSDL lần thứ 2, với mỗi tác vụ t, loại các mục không đủ độ hỗ trợ, các mục
còn lại theo thứ tự giống nhƣ xuất hiện trong L (tức là thứ tự giảm dần theo độ hỗ trợ)
đƣợc đƣa vào cây FP-tree.
Phần tiếp theo thuật toán khai phá tìm các mẫu phổ biến trên cây FP-tree đã xây dựng
mà không cần duyệt lại CSDL nữa.
Cấu trúc cây FP-tree nhƣ sau:
Gốc của cây nhãn null, các đƣờng đi trên cây biểu diễn item prefixs
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 18

Các liên kết trên cây: liên kết các mục xuất hiện có tên giống nhau
Mỗi nút, (trừ nút gốc) bao gồm:
Tên mục (item identifier)
Count: số đếm
Node link: liên kết đến nút tiếp theo trên cây có cùng tên
Bảng các đầu mục phổ biến (header table): bắt đầu cho các liên kết
Thủ tục thêm một dãy các mục (đã sắp giảm dần theo độ hỗ trợ) của một tác vụ vào
cây thực hiện đệ quy nhƣ sau:

Procedure insert_tree(string [p|P], tree có gốc T)
(ở đó p là mục thứ nhất của dãy các mục và P là phần còn lại. Trong lần duyệt
thứ hai, với mỗi tác vụ t, gọi thủ tục insert_tree(t’,T), ở đó t’ là nội dung của tác vụ t sau
khi đã bỏ các mục không phổ biến và sắp theo thứ tự giảm dần của độ hỗ trợ, T là gốc
của cây)
Procedure insert_tree(string[p|P],tree có gốc T)
Nếu T có nút con N mà N.itemname=p thì N.count++
ngƣợc lại
Tạo một nút mới N;
N.itemname:=p;N.count:=1
Thay đổi nút liên kết cho p bao gồm N;
Nếu p khác rỗng
gọi thủ tục insert_tree(P,N);
Tìm tập mục phổ biến:
Sau khi xây dựng xong FP-tree cho CSDL, việc khai phá tìm các mẫu phổ biến chỉ
thực hiện trên cây FP-tree mà không cần duyệt CSDL nữa.
Thuật toán FP-growth như sau:
Bắt đầu từ dƣới lên của bảng header và cây, với mỗi mục A: dùng n liên kết duỵêt
qua tất cả các nút trên cây mà xuất hiện A, với mỗi nút mà n.itemname=A, xác định các
tập phổ biến có xuất hiện A, thực hiện bằng cách chỉ cần tìm các đƣờng đi từ gốc tới n.
Thuật toán FP – growth.
Khai phá Fp-tree đƣợc thực hiện bởi gọi lần đầu FP-growth (Fp-tree, null), thực
hiện nhƣ sau:
Procedure FP-growth(Tree,)
Nếu cây Tree chứa một đƣờng đơn P thì
Với tất cả các tổ hợp (ký hiệu ) của các nút trong đƣờng đi P
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 19


Sinh ra mẫu  với support=độ hỗ trợ nhỏ nhất của các nút trong ;
Ngƣợc lại: với mỗi mục a
i
trong header table của Tree{
Sinh ra := a
i
 với support=a
i
.count;
Xây dựng cơ sở mẫu phụ thuộc của  và sau đó FP-tree phụ thuộc của  là
Tree

;
Nếu Tree

 thì gọi FP-growth(Tree

,)}

3.2.3. Đánh giá thuật toán FP-growth.
Thuật toán này nhƣ đã phân tích ở trên, nó thực hiện hiệu quả hơn thuật toán
Apriori, thực hiện tốt cho mẫu phổ biến ngắn cũng nhƣ dài. Ta có một số nhận xét về
thuật toán nhƣ sau:
Độ phức tạp về thời gian:
 Chỉ duyệt CSDL 2 lần
 Thời gian xây dựng cây là o(n), ở đó n là số các tác vụ của CSDL. Tức là tuyến
tính với số các tác vụ.
Độ phức tạp về không gian:
 O(n), n là số các tác vụ của CSDL

 Độ cao của cây đƣợc giới hạn bởi kích thƣớc của tác vụ lớn nhất
Thuật toán không bao giờ bị ngắn bởi một mẫu dài nào của mọi tác vụ. Cây FP-tree
duy trì đầy đủ thông tin cho khai phá các mẫu phổ biến. Đồng thời thuật toán cũng rút
gọn hợp lý các thông tin không cần thiết bởi cách là các mục không phổ biến đã bị loại
bỏ ngay từ đầu.
Dùng kỹ thuật sắp theo trật tự giảm dần của tần số xuất hiện, điều đó dẫn đến các mục
phổ biến hơn đƣợc chia sẻ nhiều hơn. Cây FP-tree không bao giờ lớn hơn CSDL gốc.
CHƢƠNG 4:
ỨNG DỤNG LUẬT KẾT HỢP - PHÂN TÍCH DỮ LIỆU BÁN HÀNG
Nhƣ vậy, nhiệm vụ của khai thác dữ liệu là phải tìm đƣợc mối liên hệ giữa các mặt
hàng trong giao dịch đó. Mối quan hệ này có dạng X => Y, đây chính là các tri thức chiết
xuất đƣợc trong khi khai thác với độ hỗ trợ cho trƣớc (minsupp), độ tin cậy cho trƣớc
(minconf). Sau khi tìm hiểu về thuật toán khai phá luật kết hợp, tôi thực hiện viết một
chƣơng trình phân tích cơ sở dữ liệu bán hàng để minh hoạ cho việc ứng dụng thuật toán.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 20

Ngôn ngữ sử dụng để hiện thực chƣơng trình là C# cùng với bộ công cụ Visual
Studio của Microsoft. Lƣu trữ dữ liệu dựa trên công nghệ XML.
Chƣơng trình cho phép ngƣời dùng nhập vào sản phẩm cần quản lý, hóa đơn giao
dịch của các sản phẩm, độ tác động (Support) và độ tin cậy (confidence) để tìm ra các
luật kết hợp.
4.1. Màn hình chính:



Khi chƣơng trình khởi chạy, dữ liệu sản phẩm và hoá đơn đƣợc nạp nhằm phục vụ
thực hiện tìm luật kết hợp.

Các nút chức năng:
 “Thêm sản phẩm”: nhập thêm cơ sở dữ liệu tên các sản phẩm cần đƣợc quản
lý.
 “Xóa sản phẩm”: xoá bớt sản phẩm cần quản lý. Chọn item trên bảng và xóa.
 “Thêm hóa đơn”: chọn các sản phẩm cần giao dịch trên danh sách sản phẩm
và thêm vào dữ liệu hoá đơn.
 “Xóa giao dịch chọn”, “Xoá toàn bộ”: xóa hoá đơn trong database.

Sau khi đã nhập đầy đủ thông tin cho sản phẩm và hóa đơn, ta tiến hành nhập vào
độ tác động ở text box Min Sup và độ tin cậy ở text box Min Conf và nhấn button “Tìm
luật kết hợp” để tìm các luật dựa trên các hóa đơn hiện có.
4.2. Thiết kế chƣơng trình
Dữ liệu
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 21

Input: chƣơng trình dùng xml để lƣu trữ dữ liệu bán hàng. Bao gồm hai tập tin
1) Items.xml chứa các thông tin về các mặt hàng.
<Items>
<Item ID="1" Name="Bánh mì" />
<Item ID="2" Name="Nƣớc ngọt" />
<Item ID="3" Name="Bia" />
<Item ID="4" Name="Sữa" />
<Item ID="5" Name="Khăn giấy" />
</Items>
2) Orders.xml chứa thông tin đơn hàng
<Orders>
<Order ID="1">

<Item ID="1" Price="50" Amount="4" />
<Item ID="2" Price="50" Amount="4" />
<Item ID="4" Price="50" Amount="4" />
</Order>

</Orders>
Khi chƣơng trình chạy sẽ load 2 tập tin này.
Cài đặt
Thuật toán cài đặt tìm kiếm luật kết hợp là Apriori.ProcessTransaction
đặt trong lớp Apriori.cs

Prototype của hàm
// items: danh sách các mặt hàng cửa hàng kinh doanh
//transactions/itemset: danh sách các tổ hợp/nhóm các mặt hàng thực tế khách hàng mua
trong 1 lần giao dịch
public Output ProcessTransaction(double minSupport, double minConfidence,
IEnumerable<string> items, string[] transactions)
{
// trả về kết cấu trúc kết quả tìm luật kết hợp
}
Kết quả output của hàm:
 List<Rule> StrongRules: các luật kết hợp
 ItemsDictionary FrequentItems: có tổ hợp có ý nghĩa

Mã giả:
1. Tìm tất cả các tập phổ biến
- Tính tần suất của các tổ hợp 1 sản phẩm
- Chọn các tổ hợp lớn có tần suất >= minsup.
Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM



HVTH:Trần Khánh An - CH1301076 22

- Lặp tạo các tổ hợp i phần tử mới đến khi không thể tạo tổ hợp nào khác
- Tạo ra các tổ hợp i từ các tập tổ hợp thế hệ (i-1).
- Loại kết quả các tổ hợp có tần suất < minsup

2. Tạo luật kết hợp từ tập phổ biến
Chọn các luật đáp ứng các ngƣỡng minsup và minconf.
Chạy thử:
Giả sử ta có dữ liệu đơn hàng nhƣ sau (đã đƣợc rút gọn tên mặt hàng)
với minsup=0.5, minconf=0.8.
 Dòng không đƣợc tô màu nghĩa là tổ hợp đó bị loại (thấp hơn minsup).
 Dòng đƣợc tô màu nghĩa là tổ hợp sản phẩm của dòng đó có ý nghĩa.
Bƣớc 1: Tìm tập phổ biến (minsup=0.5)
dữ liệu đơn hàng

C1
support
1, 3, 4

{1}
2
2, 3, 5

{2}
3
1, 2, 3, 5

{3}

3
2, 5

{4}
1


{5}
3










C2
support


{1,2}
1


{1,3}
2



{1,5}
1


{2,3}
2


{2,5}
3


{3,5}
2










C3
support


{1,2,3}

0


{1,2,5}
1


{1,2,3,5}
1


{1,3,5}
1


{2,3,5}
2










Dừng



Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 23

Bƣớc 2: Tạo luật kết hợp (minconf=0.8)
rule
support (X,Y)
support (X)
confidence
{1} => {3}
2
2
1
{2} => {3}
2
3
0.6
{2} => {5}
3
3
1
{3} => {5}
2
3
0.6
{2} => {3,5}
2
3
0.6

{3} => {2,5}
2
3
0.6
{5} => {2,3}
2
3
0.6
{3} => {1}
2
3
0.6
{3} => {2}
2
3
0.6
{5} => {2}
3
3
1
{5} => {3}
2
3
0.6
{3,5} => {2}
2
2
1
{2,5} => {3}
2

3
0.6
{2,3} => {5}
2
2
1
4.3. Màn hình kết quả chƣơng trình:


Công nghệ tri thức và ứng dụng GVHD: GS.TSKH. HOÀNG KIẾM


HVTH:Trần Khánh An - CH1301076 24

KẾT LUẬN
Qua quá trình thực nghiệm và nghiên cứu lý thuyết, bài tiểu luận đã đạt đƣợc một số
kết quả nhƣ sau:
 Tìm hiểu tổng quát những vấn đề về khai phá dữ liệu và khám phá tri thức.
 Tìm hiểu phƣơng pháp khai phá dữ liệu bằng tập phổ biến & luật kết hợp.
 Áp dụng những vấn đề đã tìm hiểu vào xây dựng hệ thống phân tích hành vi
mua sắm của khách hàng.
Đề tài đã đi sâu vào tính ứng dụng, đƣa ra cách thức xử lý thi hành các tri thức đƣợc
chiết xuất một cách hiệu quả. Nghiên cứu này đã đƣa ra một cách nhìn tổng quan về quy
trình khai phá dữ liệu từ các nguồn dữ liệu khác nhau đến việc ứng dụng các tri thức đã
chiết xuất vào thực tế cuộc sống. Một ví dụ minh hoạ ứng dụng đã làm rõ cách nhìn này.

TÀI LIỆU THAM KHẢO

[1] Hoàng Văn Kiếm, Slide bài giảng (2014) chuyên đề Công nghệ tri thức và ứng
dụng, trƣờng Đại học Công nghệ thông tin TP. HCM.

[2] Nguyễn Hoàng Tú Anh, Slide bài giảng môn Khai thác dữ liệu và ứng dụng,
trƣờng Đại học Khoa học tự nhiên TP. HCM.
[3] Đỗ Phúc, Giáo trình khai mỏ dữ liệu và data warehousing, Đại học quốc gia TP
HCM.
[4] Rakesh Agrawal, Ramakrishnan Srikant, Fast Algorithms for Mining Association
Rules, IBM Almaden Research Center.
[5] Ms Shweta, Dr. Kanwal Garg, Mining Efficient Association Rules Through Apriori
Algorithm Using Attributes and Comparative Analysis of Various Association Rule
Algorithms, 6 June 2013, ISSN: 2277 128X
[6]



×