You are on page 1of 12

THUẬT TOÁN APRIORI:

I. Giới thiệu
1. Luật kết hợp

- Mục đích của luật kết hợp (Association Rule – AR) là tìm ra các mối quan
kết hợp (Association) hay tương quan ( Correlation) giữa các đối tượng trong
khối lượng lớn dữ liệu.

- Đầu ra (của giải thuật khai phá dữ liệu): là tập luật kết hợp tìm được .

- Sự kết hợp giữa hai thành phần X và Y: nghĩa là sự xuất hiện của X trong
bản ghi kéo theo sự xuất hiện của Y trong cùng bản ghj đó : X Y

Ví dụ 1: “70% khách hàng mua bánh mì thì đều mua thêm bơ” sự kết hợp
giữa “bánh mì” với “bơ”.

2.độ hỗ trợ

Độ hỗ trợ của một tập mục X trong CSDL D là tỷ số giữa các bản ghi T ⊆D
có chứa tập X và tổng số bản ghi D( hay là phần trăm các bản ghi trong D có
chứa tập X), ký hiệu là support(X) hay supp(X)

Độ hỗ trợ của một luật kết hợp XY là tỷ lể giữa số lượng các bản ghi chứa
tập hợp X ∪Y, so với tổng số các bản ghi trong D

-ký hiệu supp(XY)


3. độ tin cậy

Định nghĩa :

Độ tin cậy của một kết hợp XY là tỷ lệ giữa số lượng các bản ghi trong D
chứa X Y với số bản ghi trong D có chứ tập X.

Ký hiệu độ tin cậy của một luật là còn(r). Ta có 0 ≤ conf(r) ≤1.


Nhận xét: Độ hỗ trợ và độ tin cậy có xấc suất sau:

Supp(XY)=P(X Y)

Conf(XY)=P(Y/X)=supp(X Y)/supp(X).

4. tập phổ biến

- Việc khai thác các luật kết hợp từ csdl chính là việc tìm tất cả các luật có dộ
hỗ trợ và độ tin cậy do người dùng sử dụng xác định trước.

- Các ngưỡng của độ hỗ trợ và độ tin cậy được ký hiệu là minsup(đô hỗ trợ
tối thiểu) và mincof (độ tin cậy tối thiểu).

Ví dụ : Khi phân giỏ hàng của người mua hàng trong một siêu thị ta được luật
kiểu như: 85% khấch hàng mua sữa thì cũng mua bánh mì,30% thù mua cả
hai thứ. Trong đó “mua sữa” là tiền để còn “mua bánh mì” là kết quả của luật
.Con số 30% là độ hỗ trợ của luật còn 85% là độ tin cậy của luật.
Định nghĩa: Tập X ⊆I được gọu là tập phổ biến nếu supp(X) ≥ minsup, với
minsupp là giá trị do người dùng chỉ định.

Tập phổ biến có 2 tính chất cơ bản và quan trọng sau:

-Tất cả các tập con của tập phổ biển đều là tập phổ biến

-Nếu tập con không phải là tập phổ biến thì tập bao nó(tập cha) cũng không
phải là tập phổ biến

5. giới thiệu 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. Thuật toán Apriori còn 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.
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:

Tập K mục Chức Năng

Lk 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ử 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)

Ý 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 thoả mãn ngưỡng hỗ trợ cho trước. Cơ sở của kỹ
thuật này là tính chất Apriori: 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.
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.

1. NGUYÊN TẮC APRIORI


– Đếm số lượng của từng Item, tìm các Item xuất hiê ̣n nhiều nhất.
– Tìm các că ̣p ứng viên: Đếm các că ̣p => că ̣p item xuất hiê ̣n nhiều nhất.
– Tìm các bô ̣ ba ứng viên: Đếm các bô ̣ ba => bô ̣ ba item xuất hiê ̣n nhiều nhất.
Và tiếp tục với bô ̣ 4, bô ̣ 5, …
– Nguyên tắc chủ yếu: Mọi tâ ̣p con của tâ ̣p phổ biến phải là tâ ̣p con phổ biến.
2. MÔ TẢ THUẬT TOÁN APRIORI

Apriori dùng cách tiếp cận lặp được biết đến như tìm kiếm level-wise, với các
tập k item được dùng để thăm dò các tập (k+1) item.

1. Đầu tiên, tập(frequent 1- itemsets) phổ biến 1 được tìm thấy ký hiệu là
C1
2. Bước tiếp theo là tính support có nghĩa là sự xuất hiện của các item
trong cơ sở dữ liệu. Điều này đòi hỏi phải duyệt qua toàn bộ cơ sở dữ
liệu.
3. Sau đó, bước cắt tỉa được thực hiện trên C1 trong đó những item được
so sánh với thông số minimum support. Những item thỏa điều kiện
minimum support mới được xem xét cho tiến trình tiếp theo ký hiệu là
L1.
4. Sau đó, bước phát sinh các bộ ứng viên được thực hiện trong đó tập
phổ biến 2 được tạo ra ký hiệu là C2.
5. Một lần nữa, cở sở dữ liệu được duyệt để tính toán support của 2 tập
phổ biến. Theo minimum support, các bộ ứng viên tạo ra được kiểm tra
và chỉ những tập phổ biến nào thỏa điều kiện minimum support thì tiếp
tục được sử dụng tạo ra bô ứng viên tập phổ biến 3.

Bước trên tiếp tục cho đến khi không có tập phổ biến hoặc bộ ứng viên có thể
được tạo ra.

3. NỘI DUNG THUẬT TOÁN APRIORI:


Input: Tập các giao dịch D, ngưỡng support tối thiểu minsup
Output: L- tập mục phổ biến trong D
Method:
1. L1=Large_1_ItemSets()
2. for (k=2; Lk-1  ; k++) do
3. begin
4. Ck=apriori-gen(Lk-1);
5. for (mỗi một giao dịch T ∈ D) do
6. begin
7. CT = subset(Ck, T);
8. for (mỗi một ứng cử viên c ∈ CT) do
9. c.count++;
10. end;
11. Lk = {c  Ck| c.count  minsup}
12. end;
13. return kLk
– Hàm Large_1_ItemSets() trả về các Item có số support lớn hơn hay bằng
minsup.
1. for all transaction t  D do
2. for all item i  t do
3. i.count ++;
4. L1=i | i.count  minsup;
– Hàm Apriori_Gen (Lk-1) thực hiện việc kết các cặp (k-1) ItemSet để phát sinh
các tập k_ItemSet mới. Tham số của hàm là Lk-1 – tập tất cả các (k-1)-ItemSet và kết
quả trả về của hàm là tập các k-ItemSet.
1. Join Lk-1 with Lk-1;
2. Insert into Ck
3. select p.item1,p.item2, . . .p.itemk-1, q.itemk-1
4. from Lk-1 as p, Lk-1 as q;
5. where (p.item1= q.item1)...(p.itemk-2 = q.item k-2)Ù(p.item k-1<q.item
k-1 );
Điều kiện (p.item k-1<q.item k-1) sẽ bảo đảm không phát sinh các bộ
trùng nhau.
4. MINH HỌA THUẬT TOÁN APRIORI:
Minh họa: Cho CSDL sau:

  Cho Min Support =22%, Min Confidence = 50%


 Duyệt lần 1 :
Tạo tập ứng viên C1:

Items Support

I1 6

I2 7

I3 6

I4 2

I5 2

Tập phổ biến L1:

Items Support

I1 6

I2 7

I3 6

I4 2

I5 2
Duyệt lần 2:

Tạo ứng cử viên C2:

Items Support

I1, I2 4

I1. I3 4

I1, I4 1

I1, I5 2

I2, I3 4

I2, I4 2

I2, I5 2

I3, I4 0

I3, I5 1

I4, I5 0

Tập phổ biến L2:


Items Support

I1, I2 4

I1. I3 4

I1, I5 2

I2, I3 4

I2, I4 2

I2, I5 2

Duyệt lần 3:

Sử dụng L2 để tạo tập ứng viên C3


Các itemset được tạo ra bằng cách kết nối L2 là: {I1, I2, I3} {I1, I2, I5} {I1, I3, I5} {I2, I3, I4} {I2, I4, I5} {I2,
I3, I5}
Kiểm tra xem tất cả các tập con của các tập phổ biến này có phổ biến hay không và nếu không thì xóa
tập hợp đó.
Các tập con của {I1, I2, I3} là {I1, I2}, {I2, I3}, {I1, I3} là phổ biến.
Các tập con của {I2, I3, I4}, là {I3, I4} là tập không phổ biến, do đó loại {I2, I3, I4}.
Thực hiện tương tự cho các tập còn lại ta được C3 là:
Items Support
I1, I2, I3 2
I1. I2, I5 2
Vậy L3 là :
Items Support
I1, I2, I3 2
I1. I2, I5 2
Duyệt lần 4
Tạo tập ứng viên C4: {I1, I2, I3, I5}
Tập phổ biến L4:
Vì {I1, I3, I5} không có trong L3 vậy nó không phải là tập mục phổ biến => {I1, I2, I3, I5}  cũng không phải
là tập mục phổ biến => L4 = 

Itemset Association rules (X Y).count X.count confiden


{I1, I2} I1→ I2 4 6 4/6
I2→ I1 7 4/7
{I1, I3} I1→ I3 4 6 4/6
I3→ I1 6 4/6
{I1, I5} I1→ I5 2 6 2/6
I5→ I1 2 2/2
{I2, I3} I2→ I3 4 7 4/7
I3→ I2 6 4/6
{I2, I4} I2→ I4 2 7 2/7
I4→ I2 2 2/2
{I2, I5} I2→ I5 2 7 2/7
I5→ I2 5 2/5
{I1, I2, I3} I1→ I2, I3 2 6 2/6
I2→ I1, I3 7 2/7
I3→ I1, I2 6 2/6
I1, I2 → I3 4 2/4
I1, I3 → I2 4 2/4
I2, I3 → I1 4 2/4
{I1, I2, I5} I1→ I2, I5 2 6 2/6
I2→ I1, I5 7 2/7
I5→ I1, I2 2 2/2
I1, I2 → I5 4 2/4
I1, I5 → I2 2 2/2
I2, I5 → I1 2 2/2

Association rules confidence

I1→ I2 4/6

I2→ I1 4/7

I1→ I3 4/6

I3→ I1 4/6

I5→ I1 2/2

I2→ I3 4/7

I3→ I2 4/6

I4→ I2 2/2

I1, I2 → I3 2/4

I1, I3 → I2 2/4

I2, I3 → I1 2/4
I5→ I1, I2 2/2

I1, I2 → I5 2/4

I1, I5 → I2 2/2

I2, I5 → I1 2/2

Thuâ ̣t toán kết thúc.


Các ứng dụng của thuật toán Apriori:

Một số ứng dụng phổ biến của thuật toán là:

 Được sử dụng trong các cơ quan lâm nghiệp để tìm hiểu cường độ và xác
suất cháy rừng. 
 Được sử dụng bởi Google và các công cụ tìm kiếm khác cho các tính năng
tự động hoàn thành của chúng. 
 Bộ phận Chăm sóc sức khỏe đã sử dụng các thuật toán như vậy để phân tích
cơ sở dữ liệu của bệnh nhân và dự đoán bệnh nhân nào có thể phát triển
huyết áp, tiểu đường, một bệnh thông thường khác. 
 Được sử dụng để phân loại học sinh dựa trên chuyên môn và hiệu suất để cải
thiện kết quả học tập của họ. 
 Các trang web thương mại điện tử sử dụng nó trong hệ thống đề xuất của
họ để cung cấp trải nghiệm người dùng
Supp ( X → Y )=¿ {T ∈ D :T ⊇ X ∪ Y }∨ ¿ ¿
¿ D∨¿ ¿

Số lượng giao dịch hỗ trợ X và Y


Hay Supp ( X → Y )=
Tổng số giao dịch
Supp(XY) = supp(XY)

You might also like