Phƣơng pháp khai phá luật kết hợp

Một phần của tài liệu Ứng dụng khai phái dữ liệu trợ giúp tư vấn học tập tại trường đại học sư phạm hà nội 2 (Trang 28)

2.4.1. Giới thiệu luật kết hợp

Trong lĩnh vực Data Mining, mục đích của luật kết hợp (Association Rule - AR) là tìm ra các mối quan hệ giữa các đối tƣợng trong khối lƣợng lớn dữ liệu. Nội dung cơ bản của luật kết hợp đƣợc tóm tắt nhƣ dƣới đây.

2.4.2. Bài toán

Cho cơ sở dữ liệu gồm các giao dịch T là tập các giao dịch t1, t2, …, tn. T = {t1, t2, …, tn}. T gọi là cơ sở dữ liệu giao dịch (transaction Database)

Mỗi giao dịch ti bao gồm tập các đối tƣợng I (gọi là itemset) I = {i1, i2, …, im}. Một itemset gồm k items gọi là k-itemset

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ụ ở bài toán tƣ vấn học tập thì nếu X={Toán cao cấp 3, Giải tích số} và Y={Hệ điều hành, Toán rời rạc} thì chúng ta có thể nói là những sinh viên học tốt Toán cao cấp 3 và giải tích số thì cũng học tốt Hệ điều hành và Toán rời rạc.

Theo quan điểm thống kê, X đƣợc xem là biến độc lập (Independent variable) còn Y đƣợc xem là biến phụ thuộc (Dependent variable)

Độ 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.

27

Công thức để tính support của luật X =>Y nhƣ sau:

Trong đó: N là tổng số giao dịch.

Độ 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.

Công thức để tính độ tin cậy của luật kết hợp X =>là xác suất có điều kiện Y khi đã biết X nhƣ sau :

Trong đó: n(X) là số giao dịch chứa X

Để thu đƣợc các luật kết hợp, ta thƣờng áp dụng 2 tiêu chí: minimum support (min_sup) và minimum confidence (min_conf)

Các luật thỏa mãn có support và confidence thỏa mãn (lớn hơn hoặc bằng) cả Minimum support và Minimum confidence gọi là các luật mạnh (Strong Rle) Minimum support và Minimum confidence gọi là các giá trị ngƣỡng (threshold) và phải xác định trƣớc khi sinh các luật kết hợp.

Một itemsets mà tần suất xuất hiện của nó >= min_sup goi là tập mục thƣờng xuyên (frequent itemsets)

Một số loại luật kết hợp:

Luật kết hợp nhị phân (Binary association rules): Apple => Banana Luật kết hợp định lƣợng (Quantitative association rules):

weight in [70kg – 90kg] => height in [170cm – 190cm]

Luật kết hợp mờ (Fuzzy association rules) : weight in HEAVY => height in TALL

28

Thuật toán phổ biến nhất tìm các luật kết hợp là thuật toán Apriori sử dụng luật kết hợp nhị phân

2.4.3. Thuật toán Apriori

a, Tƣ tƣởng chính của thuật toán Apriori

Trong lĩnh vực khai phá dữ liệu, mục đích của luật kết hợp là tìm ra các mối quan hệ giữa các đối tƣợng lớn dữ liệu. Nguyên tắc của thuật toán Apriori là loại bỏ dựa trên độ hỗ trợ:

Nếu một tập mục là thƣờng xuyên, thì tất cả các tập con của nó đều là các tập mục thƣờng xuyên.

Nếu một tập mục là không thƣờng xuyên thì tất cả các tập cha của nó đề là không thƣờng xuyên. (adsbygoogle = window.adsbygoogle || []).push({});

Nguyên tắc của giải thuật Apriori dựa trên đặc tính không đơn điệu của độ hỗ trợ:

Tìm tất cả frequent itemsets:

k-itemset (itemsets gồm k items) đƣợc dùng để tìm (k+1)- itemset.

Đầu tiên tìm 1-itemset (ký hiệu L1). L1 đƣợc dùng để tìm L2 (2-itemsets). L2 đƣợc dùng để tìm L3 (3-itemset) và tiếp tục cho đến khi không có k-itemset đƣợc tìm thấy.

Từ frequent itemsets sinh ra các luật kết hợp mạnh (các luật kết hợp thỏa mãn 2 tham số min_sup và min_conf)

29

Hình 2.1.Lƣợc đồ biểu diễn các tập mục cần xét đƣợc loại bỏ theo độ hỗ trợ b, Thuật toán Apriori

1. Duyệt (Scan) toàn bộ transaction database để có đƣợc support S của 1- itemset (tập mục), so sánh S với min_sup, để có đƣợc 1-itemset (L1).

2. Sử dụng Lk-1 nối (join) Lk-1 để sinh ra candidate (ứng cử viên) k-itemset. Loại bỏ các itemsets không phải là frequent itemsets thu đƣợc k-itemset.

3. Scan transaction database để có đƣợc support của mỗi candidate k- itemset, so sánh S với min_sup để thu đƣợc frequent k –itemset (Lk).

4. Lặp lại từ bƣớc 2 cho đến khi Candidate set (C) trống (không tìm thấy frequent itemsets).

5. Với mỗi frequent itemset I, sinh tất cả các tập con s không rỗng của I.

6. Với mỗi tập con s không rỗng của I, sinh ra các luật s => (I-s) nếu độ tin cậy (Confidence) của nó > =min_conf.

Chẳn hạn với I= {A1,A2,A5},các tập con của I: {A1}, {A2}, {A5}, {A1,A2},{A1,A5},{A2,A5}

30 sẽ có các luật sau

{A1} => {A2,A5},{A2} =>{A1,A5},{A5} =>{A1,A2} {A1,A2} =>{A5},{A1,A5} =>{A2},{A2,A5} => {A1}

c, Một số tính chất liên quan

Với tập mục phổ biến, có 3 tính chất sau: Tính chất 1:

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à sup(B)< minsup thì một tập con A của B sẽ không phải là một tập phổ biến vì sup(B)  sup(A) < minsup (theo tính chất 1)

Tính chất 3:

Nếu mục B là mục phổ biến trên D, nghĩa là sup(B)  minsup thì mọi tập con A của B là tập phổ biến trên D vì sup(A)  sup(B) > minsup.

Với luật kết hợp, có 4 tính chất sau: Tính chất 1:

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:

31 (adsbygoogle = window.adsbygoogle || []).push({});

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

Tuy nhiên đảo lại: XYZ  XY  XZ

Tính chất 3:

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

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)  ) sup( ) sup( ) sup( ) sup( C L L D L L     minconf

d, 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

32

Method:

L1={large 1-itemset (tập 1- mục phổ biến)} //tìm tất cả các tập mục phổ biến: nhận đƣợc L1

for (k=2; Lk-1  ; k++) do

begin

Ck=apriori-gen(Lk-1); //sinh ra tập ứng cử viên từ Lk-1

for (mỗi một giao dịch TD) do

begin

CT = subset(Ck, T); //lấy tập con của T là ứng cử viên trong Ck

for (mỗi một ứng cử viên c CT) do

c.count++; //tăng bộ đếm tần xuất 1 đơn vị

end;

Lk = {c  Ck| c.count  minsup}

end;

return kLk

+) Trong thuật toán này, giai đoạn đầu đơn giản chỉ là việc đếm support cho các mục(item). Để xác định tập 1-mục phổ biến (L1), ngƣời ta chỉ giữ lại các mục (item) mà sup của nó lớn hơn hoặc bằng minsup.

+) Trong các giai đoạn thứ k sau đó (k>1), mỗi giai đoạn gồm có 2 pha. Trƣớc hết các large(k-1)-itemset (tập k-1- mục phổ biến) trong tập Lk-1đƣợc sử dụng để sinh ra các candidate itemset (tập ứng cử viên) Ck, bằng cách thực hiện hàm Apriori_gen. (adsbygoogle = window.adsbygoogle || []).push({});

+) Tiếp theo CSDL D sẽ đƣợc quét để tính support cho mỗi ứng viên trong Ck. Để việc đếm đƣợc nhanh, cần phải có một giải pháp hiệu quả để xác định các ứng viên trong Ck là có mặt trong một giao dịch T cho trƣớc.

33

Vấn đề sinh tập candidate (tập ứng cử) của Apriori – Hàm Apriori_gen: Hàm Apriori_gen với đối số là Lk-1(tập các large(k-1)-itemset) sẽ cho lại kết quả là một superset, tập của tất cả các large k – itemset. Sơ đồ sau là thuật toán cho hàm này.

Input: tập mục phổ biến Lk-1 có kích thƣớc k-1

Output: tập ứng cử viên Ck

Method:

function apriori-gen(Lk-1: tập mục phổ biến có kích thƣớc k-1)

Begin For (mỗi L1  Lk-1) do For (mỗi L2  Lk-1) do begin If ((L1[1]=L2[1])  (L1[2]=L2[2])  ...  (L1[k-2]=L2[k-2])  (L1[k-1]=L2[k-1])) then

c = L1  L2; // kết nối L1 với L2 sinh ra ứng cử viên c

If has_infrequent_subset(c, Lk-1) then //có tập con ko phổ biến của c trong Lk-1

remove (c) // bƣớc tỉa (xoá ứng cử viên c)

else Ck = Ck  {c}; kết tập c vào Ck

end;

Return Ck;

End;

Với nội dung trên, ta thấy hàm này có 2 bƣớc: - Bƣớc nối (join step)

34

Hàm Subset (trong bƣớc tỉa) Các tập ứng cử viên Ck đƣợc lƣu trữ trong

một cây băm.

+) Nút lá của cây băm chứa danh sách một tập mục và đếm +) Các nút trong chứa ở trong bảng băm

Hàm subset: tìm tất cả các ứng cử viên đƣợc chứa trong giao tác.

Ví dụ 1 : Giả sử tập các mục I = {A ,B, C, D, E} và cơ sở dữ liệu giao dịch:

TID (giao dịch) Các khoản mục

1 {A, C, D} 2 {B, C, E} 3 {A, B, C, E} 4 {B, E} Với minsup = 0.5 D (CSDL) TID Các mục 1 {A, C, D} 2 {B, C, E} 3 {A, B, C, E} 4 {B, E} Quét toàn bộ D: C1 1 - itemset Count- support

35 {A} 2 - 50% {B} 3 – 75% {C} 3 – 75% {D} 1 - 25% {E} 3 - 75% Xóa bỏ mục có support<minsup: L1 1 - itemset Count- support {A} 2 - 50% {B} 3 – 75% {C} 3 – 75% {E} 3 - 75% Kết nối L1 và L1: C2 2 - itemset {A, B} {A, C} {A, E} {B, C} {B, E}

36 {C, E} Quét toàn bộ D: C2 2 - itemset Count- support {A, B} 1 – 25% {A, C} 2 – 50% {A, E} 1 – 25% {B, C} 2 – 50% {B, E} 3 – 75% {C, E} 2 – 50% Tỉa: L2 2 - itemset Count- support {A, C} 2 – 50% {B, C} 2 – 50% {B, E} 3 – 75% {C, E} 2 – 50% Kết nối L2 & L2: 3-itemset {A, B, C}

37 {A, B, E} {B, C, E} Tỉa: 3-itemset {B, C, E} Quét toàn bộ D: C3 3-itemset Count- support {B, C, E} 2 - 50%

Xóa bỏ mục support < minsup:

L3

3-itemset Count-support {B, C, E} 2 - 50% (adsbygoogle = window.adsbygoogle || []).push({});

38 Ví dụ 2: Giả sử có cơ sở dữ liệu nhƣ sau:

Thuật toán Apriori tìm luật kết hợp cho cơ sở dữ liệu trên nhƣ sau:

Với min support = 40%, nghĩa là tần xuất tất cả các item thỏa mãn lớn hơn 40%, ta có:

39

Sau khi loại bỏ các item không thuộc tập mục phổ biến ta đƣợc:

40 Bƣớc 4: min sup=40%

Bƣớc 5: min sup= 40%, min conf= 70%

Bảng 2.2. Ví dụ về thuật toán Apriori trợ giúp tƣ vấn học tập

Kết quả ta có các luật kết hợp sau (với min_sup= 40%, min_conf=70%) R1: CSDL => HỆ ĐIỀU HÀNH (support =60%, confidence = 75%) R2: HỆ ĐIỀU HÀNH => CSDL (support =60%,confidence = 75%) R3: TOÁN RỜI RẠC => CSDL (support =40%, confidence = 100%)

R4: GIẢI TÍCH 3 => HỆ ĐIỀU HÀNH (support =40%,confidence = 100%) Thuật toán Apriori đƣợc dùng để phát hiện các luật kết hợp dạng khẳng định (Positive Rule X=>Y) nhị phân (Binary Association Rules) chứ không thể phát hiện các luật kết hợp ở dạng phủ định (Negative Association Rule) chẳn hạn nhƣ các kết hợp dạng "Sinh viên học tốt môn A thƣờng KHÔNG học tốt môn B”.

41

CHƢƠNG 3: KHAI PHÁ DỮ LIỆU TRONG CSDL ĐIỂM ĐỂ TRỢ GIÚP TƢ VẤN HỌC TẬP

3.1. Giới thiệu bài toán

Trƣờng Đại học Sƣ phạm Hà nội 2 đang đào tạo bằng hệ thống tín chỉ. Để tạo điều kiện cho sinh viên đăng ký môn học, lựa chọn ngành nghề, hỗ trợ sau tốt nghiệp phải dựa trên hệ thống điểm mà sinh viên đã đạt đƣợc, đây là cơ sở mang tính khoa học. Sử dụng khai phá dữ liệu để tìm ra mối liên hệ giữa các môn học để trợ giúp tƣ vấn cho sinh viên.

3.1.1. Mục tiêu

Bài toán này tiến hành sử dụng những dữ liệu về điểm của sinh viên trong khoa công nghệ thông tin. Qua kỹ thuật khai phá dữ liệu sẽ đƣa ra đƣợc đánh giá từ kết quả học tập của sinh viên để giúp cán bộ đào tạo dự đoán và tƣ vấn học tập cho sinh viên.

Mục tiêu:

- Phân tích hệ thống điểm của sinh viên. - Tìm ra mối liên hệ giữa các môn học.

- Từ mối liên hệ đã tìm đƣợc, trợ giúp tƣ vấn học tập cho sinh viên.

3.1.2. Lựa chọn giải pháp

Để thử nghiệm trên thực tiễn ứng dụng khai phá dữ liệu trong tƣ vấn học tập. Chƣơng trình cài đặt trên ngôn ngữ C#, CSDL thiết kế trên SQL sever 2008, hệ điều hành Windows 7.

42

Hình 3.1. Sơ đồ dữ liệu quan hệ CSDL điểm sinh viên 3.2. Đặc tả dữ liệu

Trong quy chế đào tạo theo hệ thống tín chỉ, điểm trung bình môn học của sinh viên K37 trƣờng Đại học Sƣ Phạm Hà Nội 2 đƣợc tính bằng 20% điểm thành phần 1 + 20% điểm thành phần 2 + 60% điểm thi, rồi quy đổi ra bằng chữ là A,B,C,D,F với điểm A là điểm thuộc khoảng [8.5...10], điểm B là điểm thuộc khoảng [7.0...8.5), điểm C thuộc khoảng [5.5...7.0), điểm D thuộc khoảng [4.0...5.5), còn lại là điểm F.

Nhƣng để tiện cho việc tính toán, trong bài này em sẽ chia khoảng điểm các môn thành các khoảng [0...5], (5...7], (7...8], (8...10] để có thể tìm đƣợc những kết quả tốt nhất. Việc chia khoảng nhƣ vậy sẽ giúp chúng ta tìm ra luật khi sinh viên có xu hƣớng điểm trong khoảng này của môn A, sẽ kéo theo điểm trong khoảng kia của môn B đúng với mục đích của khai phá dữ liệu.

43 Mã SV Họ tên Lớp Hệ điều hành CSDL ... Lập trình hƣớng đối tƣợng 1151030000 SV 1 K37-Tin 8 6 ... 6 1151030001 SV 2 K37-Tin 6 8 ... 8 1151030002 SV 3 K37-Tin 6 7 ... 8 1151030003 SV 4 K37-Tin 6 7 ... 9 1151030004 SV 5 K37-Tin 5 7 ... 9 1151030005 SV 6 K37-Tin 7 8 ... 5

Bảng 3.1. Ví dụ về CSDL điểm của sinh viên Dữ liệu đã đƣợc biểu diễn thành các kí hiệu:

Tên Môn [0...5] (5...7] (7...8] (8...10]

Lập trình hƣớng đối tƣợng RR1 RR2 RR3 RR4

Cơ sở dữ liệu QQ1 QQ2 QQ3 QQ4 (adsbygoogle = window.adsbygoogle || []).push({});

Hệ điều hành H1 H2 H3 H4

Bảng 3.2. Thuộc tính điểm đƣợc chia thành khoảng và ký hiệu Khi đó mỗi sinh viên sẽ trở thành một Transaction (giao dịch):

STT Các mục 1 H3, RR1, QQ2 2 H2, RR2, QQ3 3 H4, RR3, QQ2 4 H2, RR2, QQ1 5 H1, RR1, QQ3 6 H4, RR1, QQ3 Bảng 3.3. CSDL điểm đã đƣợc mã hóa

44

Sau quá trình mã hóa ta có thể tính đƣợc support cho từng tập mục và thực hiện thuật toán Apriori để phát hiện những tập mục phổ biến nhƣ ví dụ đã nêu ở chƣơng 2. Việc mã hóa nhƣ trên sẽ có thể xảy ra những vấn đề nhƣ số lƣợng khoảng nhiều thì support cho từng khoảng điểm là nhỏ nên min sup của bài toán phải điều chỉnh đƣợc. Một số thông tin có thể bị mất do việc chia khoảng và một số thông tin không hữu dụng nhƣ xu hƣớng đƣợc điểm thấp môn A -> điểm thấp môn B, điểm cao môn A -> điểm thấp môn B hoặc ngƣợc lại. Vì vậy cần tạo ra một bộ lọc để lấy những luật mà điểm của sinh viên đạt từ (8...10].

Bài toán khai phá luật kết hợp lúc này có thể thực hiện qua các bƣớc sau: Bƣớc 1: Tìm support cho mỗi giá trị của các thuộc tính phân loại lẫn thuộc tính số lƣợng, tìm tất cả các tập mục đạt minsup.

Bƣớc 2: Tìm confidence cho mỗi quan hệ của các tập mục, và sinh ra luật kết hợp.

45

3.3 Giao diện chính của chƣơng trình

Hình 3.2: Nhập thông tin sinh viên

Hình 3.3. Danh mục môn học

46

Hình 3.5: Cập nhật điểm sinh viên

Một phần của tài liệu Ứng dụng khai phái dữ liệu trợ giúp tư vấn học tập tại trường đại học sư phạm hà nội 2 (Trang 28)