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

Khai phá tập mục cổ phần theo giao tác cao

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 (783.84 KB, 61 trang )

 

1


LỜI CẢM ƠN

Luận  văn  này  được  hoàn  thành  với  sự  hướng  dẫn  tận  tình  của  TS  Lê  Văn 
Phùng – Viên Công nghệ thông tin - Viện Hàn Lâm Khoa học Việt Nam. Trước tiên 
tôi xin chân thành bày tỏ lòng biết ơn sâu sắc tới TS. Lê Văn Phùng người đã tận 
tình hướng dẫn, động viên giúp đỡ tôi trong suốt thời gian thực hiện luận văn. Tôi 
cũng  xin  chân  thành  cảm  ơn  các  thầy  cô  trong  trường  Công  Nghệ  thông  tin  và 
Truyền thông – Đại học Thái Nguyên, tạo điều kiện thuận lợi cho tôi hoàn thành tốt 
khóa học. 
Xin  chân  thành  cảm  ơn  các  anh,  các  chị  và  các  bạn  học  viên  lớp  Cao  học 
CHK11g đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với tôi những kinh nghiệm 
học tập, công tác trong suốt khoá học. 
 Cuối cùng, tôi xin gửi lời cảm ơn sâu sắc đến gia đình, người thân, bạn bè đã 
động viên, khuyến khích và hỗ trợ cần thiết để tôi hoàn thành luận văn này.  
Mặc dù rất cố gắng, song luận văn này không thể tránh khỏi những thiếu sót, 
kính mong được sự chỉ dẫn của các quý thầy cô và các bạn. 
Thái Nguyên, ngày 5 tháng 7 năm 2014
Người viết

Nông Thị Ninh

 

2



LỜI CAM ĐOAN

Tôi xin cam  đoan rằng số liệu và kết quả nghiên cứu trong luận văn này là 
trung thực và không trùng lặp với các đề tài khác. Tôi cũng xin cam đoan rằng mọi 
sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích 
dẫn trong luận văn đã được chỉ rõ nguồn gốc.

Thái Nguyên, ngày tháng năm 2014
Người cam đoan

Nông Thị Ninh

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 
 

 

3


BẢNG KÝ HIỆU CHỮ VIẾT TẮT

S
TT

Ký hiệu viết tắt

Giải thích

ABBM: Algorithm Based on 
1Boolean Matrix 

Thuật toán dựa trên ma trận Boolean 

  CSDL 

Cơ sở dữ liệu 

  DBMS 

Hệ quản trị cơ sở dữ liệu 


  IR (Information Retrieval) 

Truy xuất thông tin 

  KPDL 

Khai phá dữ liệu 

OODBMS 
Object Oriented Database 

Hệ quản trị cơ sở dữ liệu hướng đối 

6Management System 

tượng 

RDBMS 
Ralational Database 
7Management System 

Hệ quản trị cơ sở dữ liệu quan hệ 

8 I  i1 , i2 ,..., in   

Tập n mục dữ liệu 

9 DB  T1 , T2 ,..., Tm  

Cơ sở dữ liệu có m giao tác 


1

Cơ sở dữ liệu giao tác con của DB, db  
db



DB 

1
ip



Mục dữ liệu thứ p 

1
Tq



Giao tác thứ q 

1

Số mục dữ liệu một cơ sở dữ liệu giao 
n




tác 

1


Số giao tác của một cơ sở dữ liệu giao 
m

tác 

1A,B,C…..

 

Tên các mục dữ liệu trong cơ sở dữ liệu 

4




giao tác 
1
minsup



Ngưỡng độ hỗ trợ 


1
minshare



Ngưỡng cổ phần tối thiểu 

1
minconf



Ngưỡng độ tin cậy tối thiểu 

1


 

│X│ 

Số phần tử của tập hợp X 

5


DANH MỤC CÁC BẢNG 

Bảng 1. Biểu diễn cơ sở dữ liệu giao tác ngang...................................................... 13 
Bảng 2. Biểu diễn cơ sở dữ liệu giao tác dọc ......................................................... 13 

Bảng 3. Biểu diễn cơ sở dữ liệu giao tác ma trận ................................................... 14 
Bảng 4. Cơ sở dữ liệu minh họa thực hiện thuật toán COFI-tree ............................ 26 
Bảng 5. Các mục dữ liệu và độ hỗ trợ .................................................................... 27 
Bảng 6. Các mục dữ liệu và độ hỗ trợ .................................................................... 27 
Bảng 7. Các mục dữ liệu trong giao tác sắp xếp giảm dần theo độ hỗ trợ ............... 27 
Bảng 8.  Cơ sở dữ liệu ví dụ .................................................................................. 34 
Bảng 9. Giá trị lmv và cổ phần của các mục dữ liệu trong CSDL bảng 8 ............... 35 
Bảng 10: Các tập mục cổ phần cao của CSDL bảng 8 ............................................ 36 
Bảng 11: CSDL minh họa ngữ nghĩa của tập mục cổ phần cao .............................. 37 
Bảng 12: Các giá trị lmv và hàm tới hạn với k=1. .................................................. 44 
Bảng 13. Các giá trị lmv và hàm tới hạn với k=2. .................................................. 45 
Bảng 14.  Các giá trị lmv và hàm tới hạn với k=3. ................................................. 46 
Bảng 15: CSDL minh họa có trường hợp hai hàm tới hạn bằng nhau. .................... 51 
Bảng 16: CSDL minh họa trường hợp hai hàm tới hạn luôn bằng nhau.................. 51 
Bảng 17: Giá trị hai hàm tới hạn khi k=1. .............................................................. 52 

 

6


DANH MỤC CÁC HÌNH

Hình 1.1. Kiến trúc điển hình của hệ thống khai phá dữ liệu .................................. 10 
Hình 1.2. Hình cây FP-Growth .............................................................................. 28 
Hình 1.3. Cây COFI-tree của mục D ...................................................................... 29 
Hình 1.4.. Các bước khai phá cây D-COFI-tree.......................................................22.
 

 


     

7


MỞ ĐẦU
1. Đặt vấn đề
Chúng ta đang sống trong thời đại bùng nổ về dữ liệu và máy tính đang giữ 
vai trò ngày càng trở nên quan trọng trong việc lưu trữ và xử lý thông tin. Bên cạnh 
đó,  những thiết bị thu  thập  dữ  liệu  tự  động  cũng phát  triển  mạnh  góp phần  tạo  ra 
những  kho  dữ  liệu khổng lồ. Mặc  dù  trong môi trường  tràn  ngập  dữ  liệu  như  vậy 
nhưng con người vẫn thiếu thông tin. Theo thống kê của một tổ chức uy tín thì chỉ 
có 2% - 3% lượng dữ liệu được chuyển thành thông tin có ích. Khi xã hội càng phát 
triển, lượng thông tin cần càng nhiều thì công việc tổ chức, khai phá dữ liệu ngày 
càng khó khăn. 
Như vậy, trong quá trình sử dụng và khai thác thông tin người ta nhận thấy 
rằng có rất nhiều tri thức còn tiềm ẩn trong dữ liệu. Vấn đề đặt ra là làm thế nào để 
khai thác được thông tin và khai thác một cách có hiệu quả. 
Trong  quá  trình  khai  phá  dữ  liệu,  có  rất  nhiều  kỹ  thuật  đã  và  đang  được 
nghiên cứu. Đặc biệt là các bài toán về khai phá luật kết hợp. Năm 1997, Hilderman 
đề xuất bài toán khai phá tập mục cổ phần cao. Cổ phần hay đóng góp của một tập 
mục là số đo tỷ lệ đóng góp của tập mục trong cơ sở dữ liệu. Khai phá tập mục cổ 
phần cao là  khám phá  tất cả  các  tập  mục  có  cổ phần  không  nhỏ  hơn  ngưỡng  quy 
định.  Loại  bài  toán  này  đang  được  sự  quan  tâm  đặc  biệt  trong  nghiên  cứu  và  đời 
sống xã hội vì sự đáp ứng to lớn của chúng đối với nhu cầu của thực tiễn. Chính vì 
vậy, chúng tôi đã chọn đề tài về khai phá tập mục cổ phần cao làm luận văn thạc sỹ 
của mình. 
2. Đối tượng và phạm vi nghiên cứu 
- Đối tượng nghiên cứu là cơ sở dữ liệu giao tác 

-Phạm  vi  nghiên  cứu  trong  khuôn  khổ  tập  mục  cổ  phần  cao  cùng  với  các 
phương pháp,  thuật toán khai phá, đặc biệt là tập trung thuật toán khai phá tập mục 
cổ phần theo giao tác cao là các giá trị theo giao tác của tập mục cần lớn hơn giá trị 
cổ phần tối thiểu. 

 

8


3. Hướng nghiên cứu của đề tài- Nghiên cứu về khai phá dữ liệu, tập trung 
vào khai phá tập mục thường xuyên, tập mục cổ phần cao, đặc biệt là tập mục cổ 
phần cao theo giao tác cao. 
- Cài đặt thực nghiệm tìm tập mục cổ phần cao theo giao tác cao từ dữ liệu 
bán hàng của một siêu thị cụ thể ở Thái Nguyên. 
4. Những nội dung nghiên cứu chính
Ngoài phần mở đầu thì luận văn gồm 3 chương sau: 
Chương 1. KHÁI QUÁT KHAI PHÁ DỮ LIỆU VÀ BÀI TOÁN KHAI
PHÁ TẬP MỤC THƯỜNG XUYÊN
Chương 2. KHAI PHÁ TẬP MỤC CỔ PHẦN CAO
Chương 3. ỨNG DỤNG KHAI PHÁ TẬP MỤC CỔ PHẦN CAO THEO
GIAO TÁC CAO
5. Phương pháp nghiên cứu
- Kết hợp lý thuyết với đánh giá thực nghiệm 
- Sưu tâp và tổng hợp các kết quả nghiên cứu về tập mục thường xuyên, Khái 
phá tập mục cổ phần cao và tập mục cổ phần cao theo giao tác cao từ nguồn sách và 
các bài báo khoa học, hội thảo chuyên ngành trong nước và ngoài nước. 
- Phân tích bài toán ứng dụng và chọn lọc thuật toán thử nghiệm thích hợp. 
6. Ý nghĩa khoa học của đề tài
Nghiên cứu tập mục cổ phần cao theo giao tác cao là một nhiệm vụ khai phá 

dữ  liệu  quan  trọng  nhằm  phát  hiện  những  tri  thức  có  ý  nghĩa  lớn,  bảo  đảm cơ  sở 
khoa học  trong chuyên ngành khoa học máy tính. Trong lĩnh vực kinh doanh việc 
tìm ra những tập mục cổ phần cao theo giao tác cao là thật sự cần thiết nhằm tăng 
hiệu suất và lợi nhuận hoạt động kinh tế của các doanh nghiệp. 
 

 

9


Chương 1

KHÁI QUÁT KHAI PHÁ DỮ LIỆU VÀ
BÀI TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN

1.1. Tổng quan về khai phá dữ liệu
1.1.1 Kiến trúc của một hệ thống khai phá dữ liệu
Kiến trúc của một hệ thống (KPDL) điển hình có thể có các thành phần như 
hình 1.1. 

 
Hình 1.1. Kiến trúc điển hình của hệ thống khai phá dữ liệu 
-  Cơ  sở  dữ  liệu  (CSDL),  kho  dữ  liệu  hoặc  các  lưu  trữ  thông  tin  khác 
(Databases,  Data  warehouse,  …):  Đây  là  một hay  một  tập  các  CSDL,  các kho  dữ 
liệu, các trang tính hay các dạng lưu trữ thông tin khác. Các kỹ thuật làm sạch dữ 
liệu và tích hợp dữ liệu có thể được thể hiện trên những dữ liệu này.  
- Máy chủ CSDL hay máy chủ kho dữ liệu (Database or warehouse server): 
Máy chủ này có trách nhiệm lấy những dữ liệu thích hợp dựa trên các yêu cầu khai 
phá của người dùng.  


 

10


- Cơ sở tri thức (Knowledge base): Đây là miền tri thức được dùng để hướng 
dẫn việc tìm kiếm hay đánh giá độ quan trọng của các hình mẫu kết quả.  
- Máy KPDL (Data mining engine): Một hệ thống KPDL cần phải có một tập 
các modun chức năng để thực hiện công việc như: đặc trưng hoá, kết hợp, phân lớp, 
phân cụm, phân tích sự tiến hoá.  
- Modun đánh giá mẫu (Pattern evaluation): Bộ phận này tương tác với các 
modun KPDL để duyệt tìm các mẫu đáng được quan tâm. Nó có thể dùng các 
ngưỡng về độ quan tâm để lọc mẫu đã khám phá được. Cũng có thể modun đánh giá 
mẫu được tích hợp vào modun khai phá, tuỳ theo sự cài đặt của phương pháp khai 
phá được dùng.  
- Giao diện đồ họa người dùng (Graphical user interface): Bộ phận này cho 
phép người dùng giao tiếp với hệ thống KPDL. Ngoài ra, bộ phận này còn cho phép 
người dùng xem các lược đồ CSDL, lược đồ kho dữ liệu (hay các cấu trúc dữ liệu), 
các đánh giá mẫu và hiển thị các mẫu trong khuôn dạng khác nhau.  
1.1.2. Nhiệm vụ chính của khai phá dữ liệu
Các bài toán liên quan đến KPDL về bản chất là các bài toán thống kê. Điểm 
khác  biệt  giữa  các  kỹ  thuật KPDL  và  các  công  cụ  phục  vụ  tính  toán  thống  kê  mà 
chúng ta đã biết là ở khối lượng cần tính toán. Khi dữ liệu đã trở nên khổng lồ thì 
những khâu như: thu thập dữ liệu, tiền xử lý và xử lý dữ liệu đều đòi hỏi phải được 
tự động  hóa. Tuy nhiên ở công đoạn cuối cùng, việc phân tích kết  quả sau khi đã 
KPDL vẫn luôn là công việc của con người. 
Do là một lĩnh vực đa ngành, KPDL thu hút các lĩnh vực khoa học khác như 
trí tuệ nhân tạo, cơ sở dữ liệu, hiển thị dữ liệu, marketing, toán học, vận trù học, tin 
sinh học, nhận dạng mẫu, tính toán thống kê … 

Điều  mà  KPDL  có  thể  làm  rất  tốt  là  phát  hiện  ra  những  giả  thuyết  mạnh 
trước khi sử dụng những công cụ tính toán thống kê. Mô hình dự báo sử dụng kỹ 
thuật phân cụm (Crustering) để chia nhóm các sự vật, sự kiện sau đó rút ra các luật 
nhằm  tìm  ra  đặc  trưng  cho  mỗi  nhóm  và  cuối  cùng  đề  nghị  một  mô  hình.  Ví  dụ, 
những bạn đọc đăng ký dài hạn của một tạp chí có thể phân nhóm dựa theo nhiều 

 

11


tiêu chí khác nhau (lứa tuổi, giới tính, thu nhập…), sau đó tạp chí căn cứ vào đặc 
trưng riêng của từng nhóm để đề ra mức phí thu trong năm sao cho phù hợp nhất. 
Những nhiệm vụ cơ bản nhất của KPDL là: 
 Phân  cụm,  phân  loại,  phân  nhóm,  phân  lớp.  Nhiệm  vụ  là  trả  lời  câu  hỏi: 
Một dữ liệu mới thu thập sẽ thuộc về nhóm nào? Quá trình này thường được thực 
hiện một cách tự động. 
 Khai phá luật kết hợp. Nhiệm vụ là phát hiện ra những mối quan hệ giống 
nhau của các bản ghi giao dịch. Luật kết hợp X=>Y có dạng tổng quát là: Nếu một 
giao dịch đã sở hữu các tính chất X thì đồng thời nó cũng sở hữu các tính chất Y, ở 
một mức độ nào đó. Khai phá luật kế thợp được hiểu theo nghĩa: Biết trước các tính 
chất X, vậy các tính chất Y là những tính chất nào? 
 Lập  mô hình dự báo, bao gồm hai nhiệm vụ: Hoặc là phân nhóm dư liệu 
vào một hay nhiều lớp dữ liệu đã xác định từ trước, hoặc là sử dụng các trường đã 
cho trong một cơ sở dữ liệu để dự báo sự xuất hiện (hoặc không xuất hiện) của các 
trường hợp khác. 
 Phân tích đối tượng ngoài cuộc: Một cơ sở dữ liệu có thể có thể chứa các 
đối tượng không tuân theo mô hình dữ liệu. Các đối tượng dữ liệu như vậy gọi là 
các đối tượng ngoài cuộc. Hầu hết các phương pháp KPDL đều coi các đối tượng 
ngoài cuộc là nhiễu và loại bỏ chúng. Tuy nhiên trong một số ứng dụng, chẳng hạn 

như phát hiện nhiễu thì sự kiện hiếm khi xảy ra lại được chú ý hơn những gì thường 
xuyên gặp phải. Sự phân tích dữ liệu ngoài cuộc được coi như là phai phá các đối 
tượng  ngoài  cuộc.  Một  số  phương  pháp  được  ứng  dụng  để  phát  hiện  đối  tượng 
ngoài cuộc: Sử dụng các hình thức kiểm tra mang tính thống kê trên cơ sở một phân 
phối dữ liệu hay một mô hình xác suất cho dữ liệu, dùng các độ đo khoảng cách mà 
theo đó các đối tượng có một khoảng cách đáng kể đến cụm bất kỳ khác được coi là 
đối tượng ngoài cuộc, dùng các phương pháp dựa trên độ lệch để kiểm tra sự khác 
nhau trong những đặc trưng chính của các nhóm đối tượng. 
 Phân  tích  sự  tiến  hóa:  Phân  tích  sự  tiến  hóa  thực  hiện  việc  mô  tả  và  mô 
hình hóa các quy luật hay khuynh hướng của những đối tượng mà ứng xử của chúng 

 

12


thay đổi theo thời gian. Phân tích sự tiến hóa có thể bao gồm cả đặc trưng hóa, phân 
biệt, tìm luật kết hợp, phân lớp hay phân cụm dữ liệu liên quan đến thời gian, phân 
tích dữ liệu theo chuỗi thời gian, so sánh mẫu theo chu kỳ và phân tích dữ liệu dựa 
trên tính tương tự. [3] 
1.2. Bài toán khai phá tập mục thường xuyên
1.2.1. Khái niệm Tập mục thường xuyên
Định nghĩa 1.1:  Cho  tập  mục  (item)  I={I1,I2,…,Im}.  Một  giao  tác 
(transaction) T là một tập con của I, T I. Cơ sở dữ liệu giao tác là tập các giao tác 
DB={T1,T2, …, Tm}. Mỗi giao tác được gán một định danh Tid. Một tập mục con X 
 I, gồm k mục phân biệt được gọi là k-tập mục. Giao tác T gọi là chứa tập mục X 
nếu X  T. 
Biểu diễn cơ sở dữ liệu giao tác: Cơ sở dữ liệu giao tác thường được biểu 
diễn ở dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác. 
Biểu diễn ngang: cơ sở dữ liệu là một danh sách các giao tác. Mỗi giao tác 

có một định danh Tid và một danh sách các mục dữ liệu trong giao tác đó. 
Bảng 1. Biểu diễn cơ sở dữ liệu giao tác ngang
Giao tác 

Mục dữ liệu 

T1 

A, C, D 

T2 

B, C, E 

T3 

A, B, C, E 

T4 

B, E 

Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục dữ 
liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này. 
Bảng 2. Biểu diễn cơ sở dữ liệu giao tác dọc
 
Mục dữ liệu   Các giao tác 


 


T1, T3 

13




T2, T3, T4 



T1, T2, T3 



T1 



T2, T3, T4 

Biểu diễn ma trận nhị phân: Cơ sở dữ liệu giao tác trên tập mục (item) được 
biểu diễn bởi ma trận nhị phân M = (mpq)mxn ở đó 

 
Bảng 3. Biểu diễn cơ sở dữ liệu giao tác ma trận
Mục 

T1 


T2 

T3 

T4 




















































1.2.2. Tập mục thường xuyên và luật kết hợp
Định nghĩa 1.2: Cho  tập  mục  X    I.  Độ  hỗ  trợ  (Support)  của  tập  mục  X 
trong cơ sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm của các giao tác 

chứa tập mục X trên tổng số giao tác trong DB, tức là: 

sup( X ) 

 

| {T  DB | T  X } |
 
| DB |

14


Định nghĩa 1.3:  Cho  tập  mục  XI  với  ngưỡng  hộ  trợ  tối  thiểu  (minimum 
support) minsup  [0,1] (được xác định trước bởi người sử dụng). X được gọi là tập 
mục  thường  xuyên  (frequent  itemset  hoặc  large  itemset)  với  độ  hỗ  trợ  tối  thiểu 
minsup nếu sup(X)  minsup, ngược lại X gọi là tập mục không thường xuyên. 
Định nghĩa 1.4: Một luật kết hợp là một biểu thức dạng X Y, trong đó X 
và Y là các tập con của I, XY=; X gọi là tiên đề, Y gọi là kết luận của luật. 
Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy. 
Định nghĩa 1.5: Độ hỗ trợ (support) luật kết hợp, ký hiệu là sup(X Y), là 
độ hỗ trợ của tập mục XY, sup(X Y) = sup(XY). 
Như vậy độ hỗ trợ của luật kết hợp X Y chính là xác suất P(XY) của sự 
xuất hiện đồng thời của X và Y trong một giao tác. 
Ta có 0  sup (X Y )  1 
Định nghĩa 1.6: Độ  tin  cậy  (confidence)  luật  kết  hợp,  ký  hiệu  là 
conf(XY), là tỷ lệ phần trăm giữa số giao tác chứa XY và số giao tác chứa X 
trong cơ sở dữ liệu DB. 

conf ( X  Y ) 


sup( X  Y )
 
sup( X )

Độ tin cậy của luật kết hợp X Y chính là xác suất có điều kiện P(X/Y): 
P( X / Y ) 

| {T  DB | X  T  Y  T } | | {T  DB | X  Y  T } | sup( X  Y )


 
| {T  DB | X  T } |
| {T  DB | X  T } |
sup( X )

Và ta có 0  conf(X Y )  1. 
1.2.3. Bài toán khai phá luật kết hợp
Xác  định  tất  cả  XY  thỏa  mãn  độ  hỗ  trợ  và  độ  tin  cậy  tối  thiểu  thì  luật 
XY được gọi là luật kết hợp mạnh. 
1.2.4. Một số tính chất của tập mục thường xuyên
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup. Các tập 
mục thường xuyên có tính chất sau: 
(1) Nếu X, Y là các tập mục và X  Y thì sup(X) ≥ sup(Y) 

 

15



(2) Nếu một tập mục là không thường xuyên thì mọi tập cha của nó cũng là 
không thường xuyên 
(3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nó cũng 
là tập mục thường xuyên 
Tính chất (3) là tính chất quan trọng, nó được gọi là tính chất Apriori, tính 
chất này là cơ sở để rút gọn không gian tìm kiếm các tập mục thường xuyên. 
1.2.5. Mô tả bài toán khai phá luật kết hợp
Khai phá luật kết hợp là một kỹ thuật quan trọng của khai phá dữ liệu. Vấn 
đề này được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào 
năm  1993  [9].  Sau  đó  năm  1996  được  Rakesh  Agrawal,  Heikki  Mannia, 
Ramakrishnan Srikant, Hannu Toivonen, A.Inkeri Verkamo tiếp tục cải tiến.  Ngày 
nay bài toán khai thác các luật kết hợp nhận được rất nhiều sự quan tâm của nhiều 
nhà  khoa  học.  Việc  khai  thác  các  luật  như  thế  nào  vẫn  là  một  trong  các  phương 
pháp khai thác mẫu phổ biến nhất trong việc khám phá tri thức và khai thác dữ liệu 
(KDD – Knowledge Discovery and Data Minning). 
Mục đích chính của khai phá dữ liệu là trích rút tri thức một cách  tự động, 
hiệu quả và “thông minh” từ kho dữ liệu. 
Trong hoạt động sản xuất kinh doanh, ví dụ kinh doanh các mặt hàng tại siêu 
thị,  các  nhà  quản  lý  rất  thích  có  được  những  thông  tin  mang  tính  thống  kê  như: 
“90% phụ nữ có xe máy màu đỏ và đeo đồng hồ Thụy Sỹ thì dùng nước hoa hiệu 
Chanel”  hoặc  “70%  khách  hàng  là  công  nhân  thì  mua  TV  thường  mua  loại  21 
inches”.  Những  thông  tin  như  vậy  rất  hữu  ích  trong  việc  định  hướng  kinh  doanh. 
Vậy vấn đề đặt ra là liệu có tìm được các luật như vậy bằng các công cụ khai phá dữ 
liệu hay không? Câu trả lời là hoàn toàn có thể. Đó chính là nhiệm vụ khai phá luật 
kết hợp. 
Giả sử chúng ta có một CSDL D. Luật kết hợp cho biết phạm vi mà trong đó 
sự xuất hiện của tập các thuộc tính S nào đó trong các bản ghi (records) của D sẽ 
kéo theo sự xuất hiện của một tập những thuộc tính khác U cũng trong những bản 
ghi  đó. Mỗi luật kết  hợp được đặc trưng  bởi  một cặp  tỉ  lệ  hỗ  trợ  (support  ration). 
Mỗi tỉ lệ hỗ trợ được biểu diễn bằng tỉ lệ % những bản ghi trong D chứa cả S và U. 


 

16


Vấn đề khám phá luật kết hợp được phát biểu như sau: 
Cho trước tỉ lệ hỗ trợ (support ration)  và độ tin cậy (confidence)  
Đánh số tất cả các luật trong D có các giá trị tỉ lệ hỗ trợ và tin cậy lớn hơn  
và  tương ứng. 
Ví dụ: Gọi D là CSDL mua bán và với  = 40%,  = 90% 
Vấn đề phát hiện luật kết hợp được thực hiện như sau: 
Liệt kê (đếm) tất cả những quy luật chỉ ra sự xuất hiện một số các mục kéo 
theo một số mục khác. 
Chỉ xét  những  quy  luật mà tỉ lệ  hỗ trợ  lớn  hơn  40%  và  độ  tin  cậy  lớn  hơn 
90% 
Hay chúng ta hãy tưởng tượng, một công ty bán hàng qua mạng Internet. Các 
khách hàng được yêu cầu điền vào các mẫu bán hàng để công ty có một CSDL về 
các yêu cầu của khách hàng. Giả sử công ty quan tâm đến mối quan hệ “tuổi, giới 
tính, nghề nghiệp => sản phẩm”. Khi đó có thể có rất nhiều câu hỏi tương ứng với 
luật trên. Ví dụ: trong lứa tuổi nào thì những khách hàng nữ là công nhân đặt mua 
mặt  hàng  gì  đó,  ví  dụ áo  dài  chẳng  hạn  là  nhiều  nhất  (thỏa  mãn  một  ngưỡng  nào 
đó)? 
Cho cơ sở dữ liệu giao tác DB, ngưỡng độ hỗ trợ tối thiểu minsup và ngưỡng 
độ tin cậy minconf. 
Yêu cầu: Tìm tất cả các luật kết hợp X  Y trên cơ sở dữ liệu DB sao cho 
sup(XY) ≥ minsup và conf(XY) ≥ minconf 
Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài toán 
nhị phân, vì ở đây, giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuất hiện 
hay không xuất hiện) 

Bài toán khai phá luật kết hợp được chia thành 2 bài toán con. 
Bài toán thứ nhất: Tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho 
trước, tức là tìm tất cả các tập mục thường xuyên 
Bài toán thứ hai: Sinh ra các luật kết  hợp từ các tập  mục thường xuyên đã 
tìm được thỏa mãn độ tin cậy tối thiểu cho trước 

 

17


Bài toán thứ hai này đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết 
các nghiên cứu về luật kết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các 
tập mục thường xuyên. 
Bài  toán  thứ  hai  có  thể  giải  quyết  như  sau:  Giả  sử  X  là  tập  mục  thường 
xuyên, ta sinh ra luật kết hợp bằng cách tìm mọi Y là tập con của X, kiểm tra độ tin 
cậy của X\Y  Y có thỏa mãn độ tin cậy tối thiểu không. 
1.2.6. Một số tiếp cận khai phá tập mục thường xuyên
Các  nghiên  cứu  về  khai  phá  tập  mục  thường  xuyên  tập  trung  vào  tìm  các 
thuật toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có. Phần 
này sẽ trình bày khái quát các kỹ thuật chính để khai phá tập mục thường xuyên. 
Bài toán khai phá tập mục thường xuyên: tìm các tập  mục ứng viên và tìm 
các tập mục thường xuyên. Tập mục ứng viên là tập mục mà ta hy vọng nó là tập 
mục thường xuyên, phải tính độ hỗ trợ của nó để kiểm tra. Tập mục thường xuyên 
là  tập  mục  có  độ hỗ  trợ lớn  hơn  hoặc  bằng ngưỡng  tối  thiểu  cho  trước.  Đã  có  rất 
nhiều thuật toán tìm tập mục thường xuyên được công bố, ta có thể phân chúng theo 
2 tiêu chí: 
- Phương pháp duyệt qua không gian tìm kiếm 
- Phương pháp xác định độ hỗ trợ của tập mục 
Phương pháp duyệt qua không gian tìm kiếm được phân làm hai cách: duyệt 

theo chiều rộng (Breadth First Search - BFS) và duyệt theo chiều sâu (Depth First 
Search - DFS) 
Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ của tất 
cả các tập mục ứng viên có (k-1) mục trước khi tính độ hỗ trợ của các tập mục ứng 
viên có k mục. Với CSDL có n mục, lần lặp thứ k phải kiểm tra độ hỗ trợ của tất cả 
Ckn tập ứng viên có k mục 
Duyệt  theo  chiều  sâu  là  duyệt  qua  CSDL  đã  được  chuyển  thành  cấu  trúc 
dạng cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây. Với cơ sở dữ liệu có n 
mục dữ liệu, không gian tìm kiếm có 2n tập con, rõ ràng đây là bài toán NP khó, do 
đó cần phải có phương pháp duyệt thích hợp, tỉa nhanh các tập ứng viên. 

 

18


Phương pháp xác định độ hỗ trợ của tập mục X được chia làm 2 cách: cách 
thứ nhất là đếm số giao tác chứa X trong cơ sở dữ liệu và cách thứ 2 là tính phần 
giao của các tập chứa định danh của các giao tác chứa X. 
1.2.7. Một số tiếp cận khai phá luật kết hợp
Luật  kết  hợp  nhị  phân  (binary  association  rule  hoặc  boolean  associaiton 
rule): là hướng nghiên cứu đầu tiên của luật kết hợp. Hầu hết các nghiên cứu ở thời 
kỳ đầu về luật kết hợp đều liên quan đến luật kết hợp nhị phân. Trong dạng luật kết 
hợp này, các 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à  1  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 hóa, mờ hóa… Một ví 
dụ về dạng luật này: “gọi liên tỉnh = ‘yes’ AND gọi di động = ‘yes’ => gọi quốc tế 

=’yes’ AND gọi dịch vụ 108 = ‘yes’, với độ hỗ trợ 20%và độ tin cậy 80%. 
Luật  kết  hợp  có  thuộc  tính  số  và  thuộc  tính  hạng  mục  (quantitative  and 
categorial  association  rule):  Các  thuộc  tính  của  các  CSDL  thực  tế  có  kiểu  rất  đa 
dạng (nhị phân – binary, số - quantitative, hạng mục – categorial,…). Để phát hiện 
luật kết hợp với các thuộc tính này, các nhà nghiên cứu đã đề xuất một số phương 
pháp rời rạc hóa nhằm chuyển dạng luật này về dạng nhị phân để có thể áp dụng các 
thuật toán đã có. Một ví dụ về dạng luật này “phương thức gọi” = ‘Tự động’ AND 
giờ gọi IN [’23:00:39..23:00:59’] AND thời gian đàm thoại IN [‘200..300’] => gọi 
liên tỉnh =’có’, với độ hỗ trợ là 23.53% và độ tin cậy là 80%”. 
Luật kết hợp tiếp cận  theo hướng tập thô (mining association rules base on 
rough set): 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  (multi  –  level  association  rule):  với  cách  tiếp  cận  theo 
luật này sẽ tìm kiếm thêm những luật 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 

 

19


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 hóa 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ờ  (fuzzy  association  rule):  với  những  hạn  chế  còn  gặp  phải 
trong quá trình rời rạc hóa các thuộc tính số (quantitave attributes), các nhà nghiên 
cứu đã đề xuất luật kết hợp mờ nhằm khắc phục các hạn chế trên và chuyển luật kết 
hợp về 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ợ  là  4%  và  độ  tin  cậy  là  85%”. 
Trong luật trên, điều kiện thời gian đàm thoại lớn ở về trái của luật là một thuộc tính 

đã được mờ hóa. 
Luật  kết    hợp  với  thuộc  tính  được  đánh  trọng  số  (association  rule  with 
weighted items): 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 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 nhiều hơn 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). 
Khai thác luật kết hợp song song (parallel mining of association rules): 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 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 
hóa 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 đò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ề những 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. 

 

20


Ngoài ra, còn một số phương pháp 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 tiếp 
đến  các  kho  dữ  liệu  đa  chiều  (Multidimensional  data,  data  warehouse)  thông  qua 

công  nghệ  OLAP  (Online  Analysis  Processing),  MOLAP  (Multidimensional 
OLAP), ROLAP (Relational OLAP), ADO (Active X Data Object) for OLAP… 
1.3. Một số thuật toán khai phá tập mục thường xuyên và luật kết hợp
1.3.1.Thuật toán APRIORI
Bước 1: Đếm 1-tập mục  
Bước lặp: 
- Kết hợp các (k-1)-tập mục sinh ra tập ứng viên Ck  
- Tỉa các kết nối để thu được k-tập mục, xác định các tập mục thường xuyên 
dựa trên độ hỗ trợ. 
- Thuật toán Apriori
Input: CSDL D, minsup.
Output: Tập các tập mục thường xuyên
L1= {Các 1-tập mục thường xuyên}
k=2;
While(Lk-1!=)
{

Ck = apriori_gen(Lk-1, minsup); //các ứng cử mới theo chương trình

con dưới đây.
for( giao dịch tD)
{

Ct=Subset(Ck,t);//ứng cử viên được chứa trong t
for(ứng cử cCt)
c.count++;

}
Lk={cCk|c.count ≥ minsup}
k++;

}
Return L=kLk;

 

21


//sinh tập ứng viên mới (**)
void apriori_gen(Lk-1, minsup)
{ for(itemset l1Lk-1)
for(itemset l2Lk-1)
if((L1(1)==L2(1)&&L1(2)==L2(2)&&…&&L1(k-2)==L2(k-2)
&&L1(k-1)==L2(k-1))
{ c=L1 kết nối với L2;
if(has_infrequent_subset(c, Lk-1)) delete c;
else add c to Ck;
}
Return Ck;
}
Boolean has_infrequent_subset(c,Lk-1)
{

for((k-1)-subset s  c)
if(s Lk-1)return TRUE;
else return FALSE;

}
1.3.1.1. Ý tưởng thuật toán Apriori 
Apriori  là  một  giải  thuật  được  Rakesh  Agrawal,  Tomasz  Imielinski,  Arun 

Swami đề xuất lần đầu vào năm 1993 [9]. Thuật toán tìm giao dịch t có độ hỗ trợ và 
độ tin cậy thỏa mãn lớn hơn một ngưỡng giá trị nào đó. 
Thuật toán được tỉa bớt những tập ứng viên có tập con không thường xuyê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  (hashtree).  Tìm  kiếm đi  xuống  trên  cấu 
trúc cây mỗi khi ta chạm vào lá, ta tìm được một tập ứng cử viên có tiền tố chung 
được bao gồm trong các 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.  

 

22


1.3.1.2. 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  1tập mục thường xuyên. Lần duyệt thứ k (k≥2) sẽ bao gồm 2 giai đoạn: 
Giai đoạn 1: tập mục thường xuyên Lk-1 đã tìm thấy ở các lần duyệt thứ   k-1 
được sử dụng để sinh ra các tập ứng cử viên bằng việc sử dụng hàm apriori_gen. 
Tập các k–tập mục ứng viên Ck được sinh ra bởi việc kết nối Lk-1 với chính nó. Hai 
tập mục l1 và l2 của Lk-1 được nối nếu chúng có (k-2) mục dữ liệu đầu bằng nhau, 
mục dữ liệu thứ k-1 của l1 nhỏ hơn của l2. 
(L1(1)==L2(1)&&L1(2)==L2(2)&&…&&L1(k-2)==L2(k-2)&&L1(k1)==L2(k-1)
Giai đoạn 2: Dựa vào CSDL, tính độ hỗ trợ của các tập ứng viên trong Ck. 
Các ứng viên trong Ck 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): xóa bỏ các tập c  Ck sao cho một vài 
(k-1)–tập mục con của c không nằm trong Lk-1. Thủ tục này là đầy đủ đối với bất kỳ 
tập nào Lk 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 Lk-1 với tất cả các tập mục có thể và sau 

đó xóa tất cả các tập mà (k-1)–tập mục con của nó không nằm trong Lk-1, ta sẽ nhận 
được tập các tập trong Lk. 
Việc kết nối là tương đương với việc mở rộng Lk-1 với mỗi mục nằm trong 
CSDL và sau đó xóa bỏ các tập này mà đối với nó (k-1)–tập mục nhận được bằng 
việc xóa đi mục thứ (k-1) không nằm trong Lk-1. Ở giai đoạn này Ck  Lk. Với lập 
luận như vậy, giai đoạn tỉa là giai đoạn người ta xóa khỏi Ck tất cả các tập mà các 
(k-1) tập con của nó không nằm trong Lk-1, cũng không xóa bất kỳ một tập nào có 
thể nằm trong Lk. 
Hàm Subset: các tập ứng viên Ck đượ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  nút trong,  mỗi 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 một 
nút ở độ sâu d+1. Các tập được lưu trữ trong các lá. Khi ta bổ sung thêm một tập c, 

 

23


ta bắt đầu 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 ở 
độ sau 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 viên được chứa trong giao 
dịch t như sau: Nếu ta bắt đầu tại một nú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à đế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 này đó đố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 xế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 nhỏ hơn trong t nó xuất hiện sau i. 
//Bước tỉa: Xóa bớt tất cả các tập mục c  Ck mà (k-1) tập con của c không 
phụ thuộc Lk-1. 
for( tập mục c  Ck)
for( (k-1 – tập con s của c)
if(s  Lk-1)
delete c khỏi Ck; 
1.3.2.Thuật toán FP-Growth
Thuật toán FP-Growth
Thuật toán Apriori gặp phải 2 chi phí lớn:
- Chi phí sinh ra số lượng khổng lồ các tập ứng viên. Ví dụ, nếu có 104 mục 
thường xuyên thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng viên 2-tập mục 
và thực hiện kiểm tra độ hỗ trợ của chúng.

 

24


- Lặp nhiều lần duyệt CSDL, số lần duyệt CSDL của thuật toán Apriori bằng 
độ dài của tập mục thường xuyên dài nhất tìm được. Thuật toán Apriori chỉ phù hợp 
với CSDL thưa (sparse), với CSDL dày (dense) thì thuật toán thực hiện kém hiệu 
quả.
Để khắc phục nhược điểm trên của thuật toán Apriori, J. Han, J. Pei, Y. Yin 

và  R.  Mao  đề  xuất  thuật  toán  FP-Growth  [14].  Thuật  toán  FP-Growth  được  xây 
dựng với 3 kỹ thuật chính
- Nén dữ liệu thích hợp vào một cấu trúc cây gọi là cây FP-tree. Chỉ có các 1tập  mục  (1-itemset)  ở  trong  cây  và  các  nút  của  cây  được  sắp  xếp  để  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.
-  Thực  hiện  phương  pháp  khai  phá  phát  triển  (growth)  từng  đoạn  dựa  trên 
cây FP-tree gọi là phương pháp FP-growth
- Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia để trị”, 
phân rã nhiệm vụ khai phá thành các nhiệm vụ nhỏ hơn.
Do nén CSDL lên cây nên tránh việc duyệt nhiều lần CSDL. Phát triển dần 
các mẫu mà không sinh tập ứng viên tránh được khối lượng bộ nhớ lớn. Tuy nhiên, 
thuật toán FP-growth khai phá cây FP-tree sử dụng phương pháp đệ quy nên đòi hỏi 
khối lượng tính toán lớn. Năm 2003, nhóm tác giả Mohammad El-Hajj và Osmar R. 
Zaiane ở đại học Alberta Edmonton, Canada đề xuất thuật toán không đệ quy khai 
phá cây FP-tree dựa trên cấu trúc cây COFI-tree [5]. Thuật toán COFI-tree có nhiều 
ưu điểm hơn thuật toán FP-growth
Thuật toán COFI-tree gồm 2 giai đoạn chính.
- Giai đoạn thứ nhất: Xây dựng cây FP-tree
- Giai đoạn thứ hai: Khai phá cây FP-tree chia thành nhiều bước tương ứng 
với các mục dữ liệu trng bảng đầu mục của cây FP-tree, mỗi bước sử dụng một cấu 
trúc dữ liệu phụ trợ là cây COFI-tree của mục dữ liệu đó.
Mỗi nút của cây FP-tree gồm 3 trường:
+ Tên mục dữ liệu
+ Độ hỗ trợ

 

25



×