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

Khai phá tập mục thường xuyên đóng trên dòng dữ liệu

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 (937.24 KB, 64 trang )


Số hóa bởi Trung tâm Học liệu

1
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG












PHẠM THỊ LÝ



Tên đề tài:
KHAI PHÁ TẬP MỤC THƢỜNG XUYÊN ĐÓNG
TRÊN DÕNG DỮ LIỆU

Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số : 60.48.01


LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH




Hƣớng dẫn khoa học: TS. NGUYỄN HUY ĐỨC











Thái Nguyên - 2014

Số hóa bởi Trung tâm Học liệu

2
MỞ ĐẦU

Khai phá dữ liệu (Data Mining), hiện nay đang đƣợc rất nhiều ngƣời chú ý.
Nó thực sự đã đem lại những lợi ích đáng kể trong việc cung cấp những thông tin
tiềm ẩn trong các cơ sở dữ liệu lớn, giúp ngƣời sử dụng thu đƣợc những tri thức
hữu ích từ những cơ sở dữ liệu hoặc các kho dữ liệu khổng lồ khác. Những “tri
thức” chiết xuất từ nguồn cơ sở dữ liệu đó phục vụ các yêu cầu trợ giúp quyết
định ngày càng có ý nghĩa quan trọng và là nhu cầu to lớn trong mọi lĩnh vực
hoạt động kinh doanh, quản lý. Tiến hành công việc nhƣ vậy chính là thực hiện
quá trình phát triển tri thức trong cơ sở dữ liệu (Knowledge Discovery in
Database) mà trong đó kỹ thuật khai phá dữ liệu (Data Mining) cho phép phát

hiện những tri thức tiềm ẩn.
Một trong các nội dung cơ bản trong khai phá dữ liệu là khai phá luật kết
hợp. Khai phá luật kết hợp gồm hai bƣớc: Bƣớc thứ nhất, tìm tất cả các tập mục
thƣờng xuyên, đòi hỏi sự tính toán lớn. Bƣớc thứ hai, dựa vào các tập mục
thƣờng xuyên tìm các luật kết hợp, đòi hỏi tính toán ít hơn, song gặp phải một
vấn đề là có thể sinh ra quá nhiều luật, vƣợt khỏi sự kiểm soát của ngƣời khai phá
hoặc ngƣời dùng, trong đó có nhiều luật không cần thiết. Để giải quyết vấn đề đó,
trong bƣớc thứ nhất, không cần thiết khai phá tất cả các tập mục thƣờng xuyên
mà chỉ cần khai phá các tập mục thƣờng xuyên đóng. Khai phá luật kết hợp dựa
trên tập mục thƣờng xuyên đóng cho hiệu quả cao hơn, nó đảm bảo không tìm ra
các tập mục thƣờng xuyên không cần thiết, không sinh ra các luật dƣ
thừa.Với ý nghĩa đó và mục đích tìm hiểu về bài toán tìm tập mục thƣờng xuyên
trên dòng dữ liệu, em đã quyết định lựa chọn đề tài “Khai phá tập mục thƣờng
xuyên đóng trên dòng dữ liệu”.
Nội dung luận văn gồm 3 chƣơng:
Chương 1: Tổng quan về khai phá dữ liệu
Chương 2: Khai phá tập mục thường xuyên đóng trên dòng dữ liệu
Chương 3: Chương trình thực nghiệm ứng dụng


Số hóa bởi Trung tâm Học liệu

3
CHƢƠNG 1 TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

1.1. Khái niệm về khám phá tri thức và khai phá dữ liệu.
KPDL (Khai phá dữ liệu) là việc rút trích tri thức một cách tự động và hiệu
quả từ một khối dữ liệu lớn. Tri thức đó thƣờng ở dạng các mẫu có tính chất
không tầm thƣờng, không tƣờng minh (ẩn), chƣa đƣợc biết đến và có tiềm năng
mang lại lợi ích. Có một số nhà nghiên cứu còn gọi khai phá dữ liệu là phát hiện

tri thức trong cơ sở dữ liệu
(Knowledge Discovery in Database - KDD). Ở đây
chúng ta có thể coi KPDL là cốt lõi của quá trình phát hiện tri thức. Quá
trình phát hiện tri thức gồm các bƣớc sau :
Bước 1: Trích chọn dữ liệu
(Data Selection). Là bƣớc trích chọn những
tập dữ liệu cần đƣợc khai phá từ các tập dữ liệu lớn
(databases, data
warehouses).
Bước 2: Tiền xử lý dữ liệu ( Data preprocessing) là bƣớc làm sạch dữ liệu
(Xử lý dữ liệu không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán…rút gọn dữ
liệu (Sử dụng các phƣơng pháp thu gọn dữ liệu, histograms, lấy mẫu, v v ) rời rạc
hóa dữ liệu (dựa vào histograms, entropy, phân khoảng.v v ). Sau bƣớc này dữ liệu
sẽ nhất quán, đầy đủ, đƣợc rút gọn và đƣợc rời rạc hóa.
Bước 3: Biến đổi dữ liệu (Data transformation) Là bƣớc chuẩn hóa và làm mịn
dữ liệu để đƣa dữ liệu về dạng thuận lợi nhất nhằm phục vụ cho các kỹ thuật khai
thác ở bƣớc sau.
Bước 4 : Khai phá dữ liệu (Data mining) Đây là bƣớc quan trọng và tốn nhiều
thời gian nhất của quá trình khai phá tri thức, áp dụng các kỹ thuật khai phá phần lớn
là các kỹ thuật của machine learning) để khai phá, trích chọn đƣợc các mẫu
(pattern) thông tin, các mối liên hệ đặc biệt trong dữ liệu.
Bước 5: Đánh giá và biểu diễn tri thức (Knowledge representation &
evaluation) Dùng các kỹ thuật hiển thị dữ liệu để trình bày các thông tin (tri thức)
và mối liên hệ đặc biệt trong dữ liệu đã đƣợc khai thác ở bƣớc trên biểu diễn dƣới
dạng gần gũi với ngƣời sử dụng nhƣ đồ thị, cây, bảng biểu, luật…Đồng thời bƣớc
này cũng đánh giá những tri thức khám phá đƣợc theo những tiêu chí nhất định.

Số hóa bởi Trung tâm Học liệu

4

Trong giai đoạn khai phá dữ liệu, có thể cần sự tƣơng tác của ngƣời dung
để điều chỉnh và rút ra các tri thức cần thiết. Các tri thức nhận đƣợc cũng có thể
đƣợc lƣu và sử dụng lại.





















Hình 1.1:
Qúa trình phát hiện tri thức

Việc KPDL có thể đƣợc tiến hành trên một lƣợng lớn dữ liệu có trong các
CSDL (Cơ sở dữ liệu), các kho dữ liệu hoặc trong các loại lƣu trữ thông tin khác.
Các mẫu đáng quan tâm có thể đƣợc đƣa đến ngƣời dung hoặc đƣợc lƣu

trữ trong một số cơ sở tri thức.
1.2. 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.2, [5], [9]
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ực hiện trên những dữ liệu này.
Dữ liệu đã chọn
Dữ liệu đã sạch
Các mẫu
Kho dữ liệu
Các tri thức
2. Tiền xử lý dữ liệu
data preprocessing

1. Trích chọn dữ liệu
data selection

4 . Khai phá dữ liệu
Data mining
3. Biến đổi dữ liệu
data transformation

5. Đánh giá và biểu diễn tri thức
knowledge representation &
evaluation

Số hóa bởi Trung tâm Học liệu


5





















Hình 1.2:
Kiến trúc của một hệ thống khai phá dữ liệu

- 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 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.
- Cơ sở tri thức (Knowledge base). Đây là nhiều 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 hóa, kết hợp, phân lớp,
phân cụm, phân tích sự tiến hóa.
- 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ể dung 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 khám phá, tùy theo sự cài đặt của phƣơng pháp
(Graphical interface)
Giao diện đồ họa cho
ngƣời dùng
Đánh giá mẫu
Máy khai phá dữ liệu
Máy chủ CSDL
hay kho dữ liệu
Làm sạch, tích hợp dữ liệu, lọc
Cơ sở dữ liệu
Kho dữ liệu
Các lƣu trữ
thông tin khác
Cơ sở tri thức
(Knowledge-base)
( Pattern evaluation)
(Data mining engine)
(Database or Warehouse Server)



Số hóa bởi Trung tâm Học liệu

6
khai phá đƣợc dùng.
- Giao diện người dung
(
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 dung 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.3 Các giai đoạn của quá trình khai phá dữ liệu
Các giải thuật khai phá dữ liệu thƣờng đƣợc miêu tả nhƣ những chƣơng
trình hoạt động trực tiếp trên tệp dữ liệu. Với các phƣơng pháp học máy và
thống kê trƣớc đây, thƣờng thì bƣớc đầu tiên là các giải thuật nạp toàn bộ tệp
dữ liệu vào trong bộ nhớ. Khi chuyển sang các ứng dụng công nghiệp liên quan
đến việc khai phá các kho dữ liệu, mô hình này không thể đáp ứng đƣợc. Không
chỉ bởi vì nó không thể nạp hết dữ liệu vào trong bộ nhớ mà còn vì khó có thể
chiết xuất dữ liệu ra các tệp đơn giản để phân tích đƣợc.
Quá trình khai phá dữ liệu đƣợc thể hiện bởi mô hình sau [3]:











Hình 1.3. Quá trình khai phá dữ liệu

+ Xác định nhiệm vụ: Xác định chính xác vấn đề cần giải quyết.
+ Xác định dữ liệu liên quan: Dùng để xây dựng giải pháp.
+ Thu thập các dữ liệu có liên quan và xử lý chúng thành dạng sao cho giải
thuật khai phá dữ liệu có thể hiểu đƣợc. Ở đây có thể gặp một số vấn đề: dữ liệu
phải đƣợc sao ra nhiều bản (nếu đƣợc chiết xuất vào các tệp), quản lý tập các tệp dữ
Thống kê
tóm tắt
Xác định
nhiệm vụ
Xác định dữ
liệu liên quan
Thu thập và
tiền xử lý
DL
Dữ
liệu
trực
tiếp
Giải thuật
khai phá dữ
liệu

Mẫu

Số hóa bởi Trung tâm Học liệu


7
liệu, phải lặp đi lặp lại nhiều lần toàn bộ quá trình (nếu mô hình dữ liệu thay đổi
v.v ).
+ Chọn thuật toán khai phá dữ liệu thích hợp và thực hiện việc khai phá dữ
liệu: nhằm tìm đƣợc các mẫu (pattern) có ý nghĩa dƣới dạng biểu diễn tƣơng ứng
với các ý nghĩa đó.
1.4. Một số kỹ thuật khai phá dữ liệu
Mục đích của khai phá dữ liệu là chiết xuất ra các tri thức có lợi cho kinh
doanh hay cho nghiên cứu khoa học… Do đó, ta có thể xem mục đích của khai
phá dữ liệu sẽ là mô tả các sự kiện và dự đoán. Các mẫu khai phá dữ liệu phát
hiện đƣợc nhằm vào mục đích này. Dự đoán liên quan đến việc sử dụng các biến
hoặc các đối tƣợng (bản ghi) trong CSDL để chiết xuất ra các mẫu, dự đoán đƣợc
những giá trị chƣa biết hoặc những giá trị tƣơng lai của các biến đáng quan tâm.
Mô tả tập trung vào việc tìm kiếm các mẫu mô tả dữ liệu mà con ngƣời có thể
hiểu đƣợc.
Một số kỹ thuật phổ biến thƣờng đƣợc sử dụng để KPDL hiện nay là :
Phân lớp dữ liệu
Mục tiêu của phân lớp dữ liệu là dự đoán nhãn lớp cho các mẫu dữ liệu.
Quá trình gồm hai bƣớc: xây dựng mô hình, sử dụng mô hình để phân lớp dữ
liệu. Mô hình đƣợc sử dụng để dự đoán nhãn lớp khi mà độ chính xác của mô
hình chấp nhận đƣợc.
Phân nhóm dữ liệu
Phân nhóm là kỹ thuật khai phá dữ liệu tƣơng tự nhƣ phân lớp dữ liệu.
Tuy nhiên, sự phân nhóm dữ liệu là quá trình học không đƣợc giám sát, là quá
trình nhóm những đối tƣợng vào trong những lớp tƣơng đƣơng, đến những
đối tƣợng trong một nhóm là tƣơng đƣơng nhau, chúng phải khác với những đối
tƣợng trong những nhóm khác. Trong phân lớp dữ liệu, một bản ghi thuộc
về lớp nào là phải xác định trƣớc, trong khi phân nhóm không xác định trƣớc
Trong phân nhóm, những đối tƣợng đƣợc nhóm lại cùng nhau dựa vào sự

giống nhau của chúng. Sự giống nhau giữa những đối tƣợng đƣợc xác định

Số hóa bởi Trung tâm Học liệu

8
bởi những chức năng giống nhau. Thông thƣờng những sự giống nhau về định
lƣợng nhƣ khoảng cách hoặc độ đo khác đƣợc xác định bởi những chuyên gia
trong lĩnh vực của mình.
Đa số các ứng dụng phân nhóm đƣợc sử dụng trong sự phân chia thị
trƣờng. Với sự phân nhóm khách hàng vào trong từng nhóm, những doanh
nghiệp có thể cung cấp những dịch vụ khác nhau tới nhóm khách hàng một cách
thuận lợi. Ví dụ: dựa vào chi tiêu, số tiền trong tài khoản và việc rút tiền của
khách hàng, một ngân hàng có thể xếp những khách hàng vào những nhóm khác
nhau. Với mỗi nhóm, ngân hàng có thể cho vay những khoản tiền tƣơng ứng cho
việc mua nhà, mua xe, … Trong trƣờng hợp này ngân hàng có thể cung cấp
những dịch vụ tốt hơn, và cũng chắc chắn rằng tất cả các khoản tiền cho vay đều
có thể thu hồi đƣợc. Ta có thể tham khảo một khảo sát toàn diện về kỹ thuật và
thuật toán phân nhóm trong.
Khai phá luật kết hợp
Mục tiêu của phƣơng pháp này là phát hiện và đƣa ra mối liên hệ giữa các
giá trị dữ liệu trong cơ sở dữ liệu. Đầu ra của giải thuật luật kết hợp là tập luật kết
hợp tìm đƣợc. Phƣơng pháp khai phá luật kết hợp gồm có hai bƣớc:
-Bƣớc 1: Tìm ra tất cả các tập mục thƣờng xuyên. Một tập mục thƣờng
xuyên đƣợc xác định thông qua việc tính độ hỗ trợ và thoả mãn độ hỗ trợ cực
tiểu.
-Bƣớc 2: Sinh ra các luật kết hợp mạnh từ tập mục thƣờng xuyên, luật
phải thoả mãn độ hỗ trợ và độ tin cậy cực tiểu.
Hồi quy
Phƣơng pháp hồi quy tƣơng tự nhƣ là phân lớp dữ liệu. Nhƣng khác ở chỗ
nó dùng để dự đoán các giá trị liên tục còn phân lớp dữ liệu dùng để dự đoán các

giá trị rời rạc.
Phát hiện sự thay đổi và độ lệch (change and deviation dectection):
Nhiệm
vụ này tập trung vào khám phá những thay đổi có ý nghĩa trong dữ liệu dựa
vào các giá trị chuẩn hay độ đo đã biết trƣớc, phát hiện độ lệch đáng kể giữa

Số hóa bởi Trung tâm Học liệu

9
nội dung của tập con dữ liệu và nội dung mong đợi. Hai mô hình độ lệch
thƣờng dùng là lệch theo thời gian và lệch theo nhóm. Độ lệch theo thời gian
là sự thay đổi có nghĩa của dữ liệu theo thời gian. Độ lệch theo nhóm là sự
khác nhau giữa dữ liệu trong hai tập con dữ liệu, tính cả trƣờng hợp tập con
của đối tƣợng này thuộc tập con kia, nghĩa là xác định dữ liệu trong một
nhóm con của đối tƣợng có khác nhau đáng kể so với toàn bộ đối tƣợng.
1.5. Các cơ sở dữ liệu phục vụ cho khai phá dữ liệu.
Dựa vào những kiểu dữ liệu mà kỹ thuật khai phá áp dụng, có thể chia dữ
liệu thành các loại khác nhau.
Cơ sở dữ liệu quan hệ
Đến nay, hầu hết dữ liệu đƣợc lƣu giữ dƣới dạng cơ sở dữ liệu quan hệ.
Cơ sở dữ liệu quan hệ là một nguồn tài nguyên lớn nhất chứa những đối tƣợng
mà chúng ta cần khai phá. Cơ sở dữ liệu quan hệ có cấu trúc cao, dữ liệu đƣợc
mô tả bởi một tập những thuộc tính và lƣu trong những bảng. Khai phá dữ liệu
trên cơ sở dữ liệu quan hệ chủ yếu tập trung khai phá mẫu. Ví dụ, trong cơ sở dữ
liệu của một ngân hàng, ta có thể tìm đƣợc những khách hàng có mức chi tiêu
cao, ta có thể phân loại những khách hàng này dựa vào quá trình chi tiêu của họ.
Cũng với việc phân tích những mục chi tiêu của khách hàng, chúng ta có thể
cung cấp một số thông tin của khách hàng đến những doanh nghiệp khác. Giả sử
rằng một khách hàng chi mỗi tháng 500 đô la cho thời trang, nếu đƣợc phép,
ngân hàng có thể cung cấp thông tin về khách hàng này cho những cửa hàng

thời trang.
Cơ sở dữ liệu giao tác
Cơ sở dữ liệu giao tác là tập hợp những bản ghi giao dịch, trong đa số các
trƣờng hợp chúng là những bản ghi các dữ liệu hoạt động của doanh nghiệp, tổ
chức. Với tính phổ biến của máy tính và thƣơng mại điện tử, ngày nay có rất
nhiều cơ sở dữ liệu giao tác. Khai phá dữ liệu trên cơ sở dữ liệu giao tác tập
trung vào khai phá lật kết hợp, tìm mối tƣơng quan giữa những mục dữ liệu
của bản ghi giao dịch. Nghiên cứu sâu về cơ sở dữ liệu giao tác đƣợc mô tả chi
tiết ở phần sau.

Số hóa bởi Trung tâm Học liệu

10
Cơ sở dữ liệu không gian
Cơ sở dữ liệu không gian bao gồm hai phần: Phần thứ nhất là dữ liệu
quan hệ hay giao tác, phần thứ hai là thông tin định vị hoặc thông tin địa lý.
Những luật kết hợp trên cơ sở dữ liệu không gian mô tả mối quan hệ giữa các
đặc trƣng trong cơ sở dữ liệu không gian. Dạng của luật kết hợp không gian có
dạng X => Y, với X, Y là tập hợp những vị từ không gian. Những thuật toán khai
phá luật kết hợp không gian tƣơng tự nhƣ khai phá luật kết hợp nhƣng thêm
những vị từ về không gian.
Cơ sở dữ liệu có yếu tố thời gian
Giống nhƣ cơ sở dữ liệu không gian, cơ sở dữ liệu có yếu tố thời gian bao
gồm hai phần: Phần thứ nhất là dữ liệu quan hệ hay giao tác, phần thứ hai là
thông tin về thời gian xuất hiện dữ liệu ở phần thứ nhất. Những luật kết hợp có
yếu tố thời gian có nhiều thông tin hơn những luật kết hợp cơ bản. Ví dụ, từ luật
kết hợp cơ bản {Bia} {Thuốc lá}, với dữ liệu có yếu tố thời gian chúng ta có
thể có nhiều luật: Độ hỗ trợ của luật {Bia} {Thuốc lá} là 20% từ 9 giờ đến 13
giờ, là 50% trong thời gian 19 giờ tới 22 giờ. Rõ ràng rằng, những ngƣời bán lẻ
có thể xác định chiến lƣợc để buôn bán tốt hơn.

Hầu hết nghiên cứu về lĩnh vực này ngày nay hình thành một hƣớng khai
phá dữ liệu mới gọi là khai phá mẫu lặp liên tục, khai phá tập mục dữ liệu thƣờng
xuyên trong cơ sở dữ liệu thời gian.
Cơ sở dữ liệu đa phương tiện
Số lƣợng trang web đang bùng nổ trên thế giới, web có mặt ở khắp mọi
nơi, duyệt web đã là nhu cầu của mọi tầng lớp trong xã hội. Thông tin trên web
đang phát triển với tốc độ rất cao, khai phá thông tin trên web (web mining) đã
trở thành một lĩnh vực nghiên cứu chính của khai phá dữ liệu, đƣợc các nhà
nghiên cứu đặc biệt quan tâm.
Khai phá dữ liệu web thông thƣờng đƣợc chia thành ba phạm trù chính:
Khai phá cách dùng web (web usage mining), khai phá c ấu trúc web (web
structure mining) và khai phá nội dung web (web content mining).

Số hóa bởi Trung tâm Học liệu

11
Khai phá cách dùng web tập trung vào việc khai phá thông tin của ngƣời
truy nhập web. Với những thông tin này ngƣời khai phá dữ liệu có thể cung cấp
những thông tin hữu ích cho ngƣời dùng và các nhà kinh doanh.
1.6. Các ứng dụng của khai phá dữ liệu
KPDL đƣợc vận dụng trong nhiều lĩnh vực khác nhau nhằm khai thác nguồn
dữ liệu phong phú đƣợc lƣu trữ trong các hệ thống thông tin. Tuỳ theo bản chất của
từng lĩnh vực, việc vận dụng KPDL có những cách tiếp cận khác nhau.
KPDL đƣợc vận dụng có hiệu quả để giải quyết các bài toán phức tạp trong
những ngành đòi hỏi kỹ thuật cao nhƣ: tìm kiếm mỏ dầu từ ảnh viễn
thám, xác
định vùng gãy trong ảnh địa chất để dự đoán thiên tai, cảnh báo hỏng hóc trong
các hệ thống sản xuất.
Phân nhóm và dự đoán là những kỹ thuật rất cần thiết cho việc quy hoạch
và phát triển hệ thống quản lý và sản xuất trong thực tế nhƣ: dự đoán tái sử

dụng điện năng cho các công ty cung cấp điện, lƣu lƣợng viễn thông cho các
công ty điện thoại, mức độ tiêu thụ sản phẩm cho các nhà sản xuất, giá trị của
sản phẩm trên thị trƣờng cho các công ty tài chính hay phân nhóm khách hàng
tiềm năng.
Ngoài ra KPDL còn đƣợc áp dụng trong việc giải quyết các vấn đề xã hội nhƣ
phát hiện tội phạm hay tăng cƣờng an ninh xã hội và mang lại những hiệu quả thiết
thực cho các hoạt động trong đời sống hàng ngày.
Một số ứng dụng cụ thể như sau:
- KPDL đƣợc sử dụng để phân tích dữ liệu, hỗ trợ ra quyết định.
- Trong sinh học: nó dùng để tìm kiếm, so sánh các hệ gen và thông tin di
truyền, tìm mối liên hệ giữa các hệ gen và chuẩn đoán một số bệnh di truyền.
- Trong y học: KPDL giúp tìm ra mối liên hệ giữa các triệu chứng, chuẩn
đoán bệnh.
- Tài chính và thị trƣờng chứng khoán: KPDL dùng để phân tích tình hình
tài chính, phân tích đầu tƣ, phân tích cổ phiếu.
- Khai thác dữ liệu web.

Số hóa bởi Trung tâm Học liệu

12
-

Trong thông tin kỹ thuật: KPDL dùng để phân tích các sai hỏng, điều
khiển và lập lịch trình.

- Trong thông tin thƣơng mại: dùng để phân tích dữ liệu ngƣời dùng, phân
tích dữ liệu marketing, phân tích đầu tƣ, phát hiện các gian lận.
- Trong công nghiệp viễn thông: Phân tích nhu cầu và phân tích các mẫu
gian lận và xác định các mẫu khác thƣờng.
1.7 Khai phá tập mục thƣờng xuyên

1.7.1 Khái niệm
Độ hỗ trợ (support):
Cho tập mục X I. Ta gọi độ hỗ trợ (Support) của X trong cơ sở dữ
liệu giao tác DB, ký hiệu supp(X) là tỷ lệ phần trăm các giao tác chứa X trên
tổng số các giao tác trong DB, tức là:


Ta có: 0 supp(X) 1 với mọi tập mục X I
Với cơ sở dữ liệu cho ở bảng 1.1 ta có:
Supp(A) = 60%, Supp(CA) = 60%, Supp(CE) = 80%
1.7.2. Các cách 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 có thể chia thành hai bài toán
nhỏ: 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 hỗ trợ 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 hai tiêu
chí sau :
- Phƣơng pháp duyệt qua không gian tìm kiếm.
Supp(X)=
T{T DB T X}
DB

Số hóa bởi Trung tâm Học liệu

13

- 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 cơ sở dữ liệu có n mục dữ liệu, lần lặp thứ k
phải kiểm tra độ hỗ trợ của tất cả tập mục ứng viên có k mục.
Duyệt theo chiều sâu là duyệt qua cơ sở dữ liệu đã đƣợc chuyển đổi thành
cấu trúc 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ó tất cả 2n
tập con, rõ ràng đây là bài toán khó, do vậy 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.
Phƣơng pháp xác định độ hỗ trợ của tập mục X đƣợc chia làm hai 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ứ hai 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.
Các thuật toán khai phá có thể phân loại nhƣ hình 1.6 [3]:











Hình 1.5: Phân loại các thuật toán khai phá tập mục thường xuyên.
Các thuật toán

BFS
DFS
Đếm
Giao
Đếm
Giao
AIS
Apriori
Dic
Partition
FP- Growth
Eclat
C
n
k
=
n!
k!(n-k)!

Số hóa bởi Trung tâm Học liệu

14
Phần tiếp theo mô tả chi tiết nội dung hai thuật toán tiêu biểu cho hai
phƣơng pháp: duyệt theo chiều rộng và duyệt theo chiều sâu. Thuật toán Apriori
tiêu biểu cho phƣơng pháp duyệt theo chiều rộng; Thuật toán FPgrowth, đại diện
cho phƣơng pháp duyệt theo chiều sâu.
1.7.3 Một số thuật toán tìm tập mục thƣờng xuyên
1.7.3.1. Thuật toán Apriori
Apriori là thuật toán khai phá tập mục thƣờng xuyên do R. Agrawal và
R. Srikant đề xuất vào năm 1993 [3], [7]. Ý tƣởng của thuật toán Apriori cũng là

nền tảng cho việc phát triển nhiều thuật toán khai phá tập mục thƣờng xuyên
khác về sau.
Ý tƣởng chính của thuật toán nhƣ sau: sinh ra các tập mục ứng viên từ
các tập mục thƣờng xuyên ở bƣớc trƣớc, sử dụng kỹ thuật “tỉa” để bỏ đi
những tập mục ứng viên không thỏa mãn ngƣỡng hỗ trợ cho trƣớc. Cơ sở của
kỹ thuật này là tính chất 3: Bất kỳ tập con nào của tập mục thƣờng xuyên
cũng phải là tập mục thƣờng xuyên. Vì vậy các tập mục ứng viên gồm k mục
có thể đƣợc sinh ra bằng cách kết nối các tập mục thƣờng xuyên có (k-1) mục
và loại bỏ tập mục ứng viên nếu nó có chứa bất kỳ một tập con nào không
phải là thƣờng xuyên.
Giả sử các mục dữ liệu trong mỗi giao tác đƣợc lƣu theo trật tự từ điển.
Thuật toán sử dụng các ký hiệu sau đây :
Tập k mục
Chức năng
L
k

Tập các k-tập mục thƣờng xuyên (với độ hỗ trợ tối thiểu
minsup). Mỗi phần tử của tập này có 2 trƣờng:
i) Tập mục (itemsets)
ii) Độ hỗ trợ (count)

Ck
Tập các k-tập mục ứng viên (các tập mục thƣờng xuyên tiềm
năng). Mỗi phần tử của tập này có 2 trƣờng:
i) Tập mục (itemsets)
ii) Độ hỗ trợ (count)


Số hóa bởi Trung tâm Học liệu


15

Thuật toán duyệt cơ sở dữ liệu nhiều lần. Mỗi lần duyệt, thuật toán thực
hiện hai bƣớc: bƣớc kết nối và bƣớc tỉa. Trong lần lặp thứ k, thuật toán nối hai
(k-1)-tập mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các tập ứng
viên. Bƣớc nối và bƣớc tỉa nhƣ sau:
Bước kết nối (tìm C
k
): Tập các k-tập mục ứng viên C
k
đƣợc sinh ra bởi
việc kết nối L
k
-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 l
2
: (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]) ]).
Dạng của tập mục nhận đƣợc bởi nối l
1
và l
2
là: l
1
[1] l
1
[2] … l
1
[k-2] l
1
[k-1] l
2
[k-1].
Bước tỉa: Tập C
k
chứa tập L
k
, tức là tất cả các k-tập mục thƣờng xuyên đều
thuộc tập C
k
. Tập C
k
có thể là rất lớn dẫn đến khối lƣợng tính toán lớn. Thuật

toán áp dụng tính chất Apriori để rút gọn tập C
k
. Nếu có một (k-1)-tập mục con
nào đó của k-tập mục ứng viên mà không có mặt trong L
k
-1 thì ứng viên đó
không thể là thƣờng xuyên, có thể loại bỏ khỏi C
k
. Việc kiểm tra các (k-1)-tập
mục con có thể thực hiện nhanh bởi duy trì một cây băm của tất cả các tập mục
thƣờng xuyên đã tìm thấy.
Thuật toán Apriori (tìm các tập mục thƣờng xuyên)
Input: Cơ sở dữ liệu DB, ngƣỡng độ hỗ trợ minsup
Output: Tập các tập mục thƣờng xuyên L trong DB
Method:
(1) Tìm các 1-tập mục thƣờng xuyên, nhận đƣợc L
1
;
(2)
For (k=2; L
k-1
≠ k++) do begin

(3) Ck = apriori_gen(Lk-1, minsup); // Sinh tập ứng viên mới từ Lk-1
(4) For (each T DB ) do begin
(5)
C = subset(Ck,T) ; // Các tập mục ứng viên chứa trong T

(6) For (each c C )
(7) c.count++ ; // tăng số đếm c lên một đơn vị


Số hóa bởi Trung tâm Học liệu

16
(8) end ;
(9)
Lk = { c C
k
c.count ≥ minsup} ;

(10) End;
(11) L= L
k

Sinh các tập mục ứng viên của thuật toán Apriori: hàm Apriori_gen()
Function Apriori_gen()
Input: Tập các (k-1)- tập mục thƣờng xuyên L
k
-1
Output: Tập các k- tập mục ứng viên Ck
Method:
// Bước kết nối
(1) For (each (k-1)-tập mục l
1
L
k-1
) do
(2) For (each (k-1)-tập mục l
2
L

k-1
) do
(3) if (l
1
[1] = l
2
[1]) and (l
1
[2] = l
2
[2]) and … and
(l
1
[k-2] = l
2
[k-2]) and (l
1
[k-1] < l
2
[k-1])
Then
(4) C
k
{ l
1
[1], l
1
[2], … l
1
[k-2],l

1
[k-1] l
2
[k-1]};
// kết nạp k-tập mục mới vào C
k
// Bước tỉa
(5) For (each c
i
C
k
) do
(6) If exist (s c
i
) and ( s L
k-1
) then
(7) delete c
i
from C
k
;
(8) Return C
k
;
Ví dụ minh hoạ thuật toán Apriori:
Ta minh họa thực hiện thuật toán Apriori trên cơ sở dữ liệu trong bảng 1.1
với minsup = 50%, tức xuất hiện ít nhất 2 lần.

Số hóa bởi Trung tâm Học liệu


17
Bảng 1.1: Cơ sở dữ liệu giao tác minh họa thực hiện thuật toán Apriori
TID
Các mục dữ liệu
T1
A,C,D
T2
B,C,E
T3
A,B,C,E
T4
B,E

- Duyệt CSDL lần thứ nhất: tính độ hỗ trợ cho các 1-tập mục đƣợc kết quả
nhƣ sau:


1-tập
Count



1-tập
Count
{A}
2
Loại bỏ các 1-tập mục có
{A}
2

{B}
3
count <2

{B}
3
{C}
3



{C}
3
{D}
1



{E}
3
{E}
3






Kết nối L
1

với L
1
ta đƣợc C
2
:
C
2
2-tập mục
{A,B}
{A,C}
{A,E}
{B,C}
{B,E}
{C,E}

- Duyệt CSDL lần thứ 2: tính độ hỗ trợ cho 2-tập mục

C
1
L
1

Số hóa bởi Trung tâm Học liệu

18

C
2
L
2


2-tập mục
Count
{A,B}
1
{A,C}
2
{A,E}
1
{B,C}
2
{B,E}
3

Kết nối L
2
với L
2
đƣợc C
3:
C
3
3-tập mục
{B,C,E}

- Duyệt CSDL lần thứ 3: tính độ hỗ trợ cho 3-tập mục
C
3
L
3


3-tập mục
Count
{B, C, E}
2


Nối L
3
với L
3
đƣợc L
4
= , thuật toán dừng.
Các tập mục thƣờng xuyên tìm đƣợc theo thuật toán Apriori là :
L= L1 L2 L3 ={ A, B, C, E, AC, BC, BE, CE, BCE}
Nhận xét : Thuật toán duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng độ dài
của tập mục thƣờng xuyên dài nhất tìm đƣợc.
1.7.3.2. Thuật toán FP-Growth
Thuật toán Apriori gặp phải hai 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.
2-tập mục
Count
{A, C}
2
{B,C}
2
{B,E}

3
{C,E}
2

Loại bỏ các 2-tập mục có
Count <2
3-tập mục
Count
{B, C, E}
2

Loại bỏ các 3-tập mục có
Count <2

Số hóa bởi Trung tâm Học liệu

19
- Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu 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ỉ thích hợp cho các cơ sở dữ liệu thƣa (sparse), với các cơ sở dữ
liệu 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 [3], [2], [11]. Thuật toán FP
growth đƣợc
xây dựng với 3 kỹ thuật chính.
(1)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 1-tập mục (1-item) ở 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.

(2) 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.
(3) 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.
Thuật toán FP-growth do nén toàn bộ cơ sở dữ liệu lên một cấu trúc dữ
liệu nhỏ hơn là cây FP-tree nên tránh đƣợc việc duyệt nhiều lần cơ sở dữ liệu
(thuật toán chỉ duyệt cơ sở dữ liệu 2 lần). Tiếp theo thuật toán khai phá cây
bằng cách phát triển dần các mẫu mà không sinh các tập mục ứng viên, do đó
tránh đƣợc khối lƣợng tính toán lớn. Phƣơng pháp FP- growth đã chứng tỏ đƣợc
tính hiệu quả của nó và có thể thực 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
Thuật toán FP- growth thực hiện như sau:
Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của từng
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.

Số hóa bởi Trung tâm Học liệu

20
Duyệt CSDL lần thứ hai, với mỗi giao tác 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 cất vào cây FP-tree.
Phần tiếp theo thuật toán khai phá tìm các mẫu thƣờng xuyên trên cây FP-
tree đã xây dựng mà không cần duyệt lại CSDL nữa.
Để hiểu phƣơng pháp này làm việc thế nào, ta xét khai phá CSDL giao
tác DB sau với độ hỗ trợ tối thiểu minsup = 3/5.
Bảng 1.2 CSDL giao tác minh họa cho thuật toán FP- growth
TID

Các mục dữ liệu
Các mục thƣờng xuyên
đã sắp xếp
t1
a, c, d, f, g, i, m, p
f , c, a, m, p
t2
a, b, c, f, l, m, o
f, c , a, b, m
t3
b, f, h, j, o
f, b
t4
b, c, k, p, s
c, b, p
t5
a, c, e, f, l, m, n, p
f, c, a, m, p

Bước 1: Duyệt CSDL, đếm số lần xuất hiện của từng mục, loại các mục
không đủ độ hỗ trợ.
Bước 2: Sắp các mục đủ độ hỗ trợ theo thứ tự giảm dần của độ hỗ trợ, ta
nhận đƣợc danh sách L sau:
Mục
Số lần xuất hiện
f
4
c
3
b

3
m
3
p
3

Bước 3: Duyệt CSDL lần thứ 3 và xây dựng cây FP-tree
Cây FP-tree đƣợc xây dựng nhƣ sau:
Khởi tạo cây T, gốc của cây có nhãn null.
Khi duyệt CSDL lần thứ hai, với mỗi giao tác, loại các mục không thƣờng
xuyên, các mục còn lại sắp theo thứ tự giảm dần của số lần xuất hiện,

Số hóa bởi Trung tâm Học liệu

21
dãy các mục thƣờng xuyên đó đƣợc thêm vào cây cùng với thay đổi số đếm
của các mục trên cây cho phù hợp. Quá trình xây dựng cây nhƣ hình 1.5 sau:

















Hình 1.6: Cây FP-tree đƣợc xây dựng dần khi thêm các giao tác t1, t2, t3.
Từ tập dữ liệu ban đầu, ta xây dựng header table của cây FP nhƣ sau:



Mục dữ liệu
Con trỏ đầu danh sách
liên kết
f

c

a

b

m

p





root
f:1
c:1

a:1
m:1
p:1
root
f:2
c:2
a:2
m:1
p:1
b:1
m:1
root
f:3
c:2
a:2
m:1
p:1
b:1
m:1
b:1
Root
c:3
f:4
a:3
m:2
p:2
b:1
c:1
p:1
b:1

b:1
m:1

Số hóa bởi Trung tâm Học liệu

22
Hình 1.7: Cây FP-tree của CSDL DB trong bảng 1.1

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á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 thƣờng xuyê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
giao tác vào cây thực hiện đệ qui 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 giao tác t , gọi thủ tục insert_tree( t' , T), ở đó t' là nội
dung của giao tác t sau khi đã bỏ các mục không thường xuyê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)
1. Nếu T có nút con N mà N.itemname = p thì N.count++
2. Ngƣợc lại
3. Tạo một nút mới N;
4. N.itemname := p; N.count := 1;
5. Thay đổi nút liên kết cho p bao gồm N;
6. Nếu P khác rỗng gọi thủ tục insert_tree ( P, N );

Số hóa bởi Trung tâm Học liệu

23

Tìm các tập mục thường xuyên :
Sau khi xây dựng xong FP-tree cho CSDL, việc khai phá tìm các tập
mục thƣờng xuyên chỉ thực hiện trên 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út
liên kết duyệ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 N mà
N.itemname = A, xác định các tập mục thƣờng xuyê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. Ví dụ : đầu tiên xét mục p, sau
đó đến m, nhƣ sau.
 Mục p:
+ Có 2 đƣờng:

- f : 4, c : 3, a : 3, m : 2, p : 2
- c : 1, b : 1, p : 1
(Tức là: fcam xuất hiện hai lần với p và cb chỉ một lần. Số lần xuất hiện
của p là 2+1=3.)
+ Từ đó suy ra cơ sở mẫu phụ thuộc (conditional pattern base) của p là:
- f : 2, c : 2, a : 3, m : 2
- c : 1, b : 1
Các tập mục thƣơng xuyên chứa p là đƣợc xác định bởi cơ sở mẫu phụ
thuộc này.
+ Xây dựng đệ qui cây FP-tree cho cơ sở phụ thuộc (condition base) và
tìm các tập mục thƣờng xuyên ở trên cây đó, sau đó thêm p vào tất cả chúng
Ở đây, cơ sở phụ thuộc là:
- f : 2, c : 2, a : 2, m : 2
- c : 1, b : 1
Trong đó chỉ có c là thƣờng xuyên (xuất hiện 3 lần) do đó tập mục thƣờng
xuyên tìm đƣợc là cp, tần xuất 3/5.
 Mục m:
+ Có 2 đƣờng:

Số hóa bởi Trung tâm Học liệu

24
- f : 4, c: 3, a: 3, m : 2
- f : 4, c : 3, a : 3, b : 1, m : 1
(bây giờ ta bỏ qua p vì các tập mục thƣờng xuyên chứa nó đã tìm rồi)
+ Cơ sở mẫu phụ thuộc của m là:
- f : 2, c: 2, a: 2
- f : 1, c : 1, a : 1, b : 1
+ FP-tree phụ thuộc của m là chỉ có một đƣờng:
- f : 3, c: 3, a : 3

+ Tìm theo cách đệ qui các tập mục thƣờng xuyên trên FP-tree
phụ thuộc, đầu tiên cho a, sau đó cho c và f. Cây FP-tree phụ thuộc của m nhƣ
hình 1.7 sau













Hình 1.8: FP-tree phụ thuộc của m
Cơ sở điều kiện của nút “am”
Cơ sở điều kiện của nút “cam”
(f:3,c:3)
(f:3)
Cây điều kiện FP của “am”
Cây điều kiện FP của “am”




Root
c:3
f:4

a:3
m:2
p:2
b:1
c:1
p:1
b:1
b:1
m:1
Cơ sở điều kiện của nút “m”:
(f:2; c:2; a:2)
(f:1; c:1; a:1; b:1)
Cây điều kiện của nút “m”:
Bảng đầu mục:
Mục dữ liệu
Con trỏ
đầu danh sách liên kết
f

c

a


Root
f:3
c:3
a:3
root
f:3

c:3
root
f:3

Số hóa bởi Trung tâm Học liệu

25

Cơ sở điều kiện của nút “cm”
(f:3)
Cây điều kiện FP của “cm”
Hình 1.9 : Các FP-tree phụ thuộc của am, cm và cam

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:
Vào: Các phân hoạch CSDL D
N/P
và minsup.
Ra: Tập các mục phổ biến
















Đánh giá thuật toán FP- growth Thuật toán này nhƣ đã phân tích ở trên,
thực hiện hiệu quả hơn thuật toán Apriori, thực hiện tốt cho tập mục thƣờng
xuyên ngắn cũng nhƣ dài. Ta có một số nhận xét về thuật toán nhƣ sau:
o Độ phức tạp về thời gian: Chỉ duyệt CSDL 2 lần.
o Độ phức tạp về không gian: Độ cao của cây đƣợc giới hạn bởi kích
thƣớc của giao tác lớn nhất.
o Thuật toán không bao giờ bị ngắt bởi một mẫu dài nào của mọi giao
tác. Cây FP-tree duy trì đầy đủ thông tin cho khai phá các tập thƣờng xuyên.
Procedure FP-growth (Tree , )
1. Nếu cây Tree chứa một đƣờng đơn P thì
2. Với tất cả các tổ hợp (kí hiệu ) của các nút trong đƣờng đi P
3. Sinh ra mẫu với support = độ hỗ trợ nhỏ nhất của các nút trong
4. Ngƣợc lại: với mỗi mục a
i
trong header table của Tree {
5. Sinh ra := a
i
với support= a
i
.count;
6. Xây dựng cơ sở mẫu phụ thuộc của và sau đó FP-tree phụ thuộc của là Tree

7. Nếu Tree thì gọi FP- growth (Tree , )}
root
f:3

×