Tải bản đầy đủ (.doc) (20 trang)

Đơn giản hóa ma trận phân biệt để tìm tập rút gọn (reduct) của tập thuộc tính và cài đặt chương trình thử nghiệm

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 (514.41 KB, 20 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
۞
University of Information Technology
University of Information Technology
Khai phá dữ liệu và kho
dữ liệu
Bài thu hoạch: Đơn giản hóa ma trận phân biệt để tìm tập rút
gọn (reduct) của tập thuộc tính và cài đặt chương trình thử
nghiệm
Giáo viên hướng dẫn: PGS.TS. Đỗ Phúc
Người thực hiện : Dương Ngọc Nhân, MSHV: CH1101115
TP.HCM, Tháng 11 năm 2012
Tóm tắt bài thu hoạch 3
1 Phần 1 – Các khái niệm cơ bản của tập thô 4
2 Phần 2 – Đơn giản hóa ma trận phân biệt và cài đặt chương trình 9

Tài liệu tham khảo 20
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
2
Tóm tắt bài thu hoạch
Bài viết này giới thiệu một phương pháp để tìm một reduct dựa trên việc đơn
giản hóa ma trận phân biệt (discernibility matrix). Các phép toán đơn giản ma trận
cơ sở được sử dụng và mỗi phép toán biến đổi ma trận tới hình thức đơn giản hơn.
Bằng cách áp dụng các phép toán đó cho một số hữu hạn lần thực hiện, một ma trận
phân biệt được chuyển đổi thành một ma trận phân biệt chính tắc (tối giản nhất) mà
các phần tử của nó hoặc là rỗng hoặc chỉ là tập một phần tử (singleton subsets). Từ
đó ta union các phần tử trong ma trận phân biệt để được reduct.
Bài viết gồm hai phần chính, phần 1 sẽ sơ lược lại các khái niệm và ý nghĩa cơ
bản của lý thuyết tập thô bao gồm bảng hoặc hệ thông tin (information table), bảng
quyết định (decision table), quan hệ tương đương, quan hệ bất khả phân biệt, lớp


tương đương, ma trận phân biệt và hàm phân biệt (discernibility function). Phần 2
trình bày phương pháp đơn giản hóa ma trận phân biệt và mô tả chương trình cài đặt.
Có 2 phần nhỏ trong chương trình, phần đầu xây dựng ma trận phân biệt từ một bảng
quyết định cho trước và tìm hàm phân biệt (chưa rút gọn) từ ma trận phân biệt, phần
sau đơn giản hóa ma trận phân biệt để được tối giản và tạo ra hàm phân biệt (đã rút
gọn - reduct) tù ma trận phân biệt tối giản đó.
Em xin gửi lời cảm ơn đến PGS.TS Đỗ Phúc đã tận tình giảng dạy và đưa ra một
số định hướng để vận dụng kiến thức từ môn học vào công việc hàng ngày. Bài viết
này vẫn cần bổ sung và sữa đổi, rất mong nhận được sự góp ý, khích lệ từ Thầy Cô,
bạn bè.
Trân trọng
Người thực hiện
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
3
1 Phần 1 – Các khái niệm cơ bản của tập thô
Tìm luật theo tiếp cận của lý thuyết tập thô do Z. Pawlak đề xuất vào những năm 80
của thế kỷ XX là một trong những phương pháp đang được nhiều người nghiên cứu
và sử dụng trong quá trình khám phá tri thức từ dữ liệu. Dữ liệu trong thực tế
thường không đầy đủ, dư thừa hoặc không chính xác gây ảnh hưởng không tốt trong
quá trình phát hiện tri thức từ dữ liệu. Ý tưởng “rút gọn” được sử dụng cho phép
loại bỏ những thông tin dư thừa mà vẫn giữ được đầy đủ ý nghĩa của tập dữ liệu
đang xét. Mục tiêu của việc lựa chọn thuộc tính là tìm ra những thuộc tính cốt yếu
và cần thiết trong cơ sở dữ liệu. Dựa vào đó, việc sinh luật và phân lớp có thể đạt
hiệu quả cao nhất mà chỉ sử dụng một tập con những thuộc tính đã được lựa chọn.
Vì vậy việc tìm tập rút gọn của tập thuộc tính điều kiện là hoàn toàn tự nhiên và cần
thiết
[5]
.
1.1 Bảng thông tin và bảng quyết định
Bảng thông tin là một cặp (U, A), trong đó:

• U là tập hữu hạn khác rỗng các đối tượng
• A là tập hữu hạn các thuộc tính sao cho
với mọi a ∈A, a:U

Va
• Va được gọi là tập trị của a
Bảng dữ liệu trong Bảng 1-1 cho ta 7 đối tượng, từ
x1đến x7 và 2 thuộc tính, Age, LEMS, và ta dễ dàng
nhận thấy rằng các cặp đối tượng x3, x4 và x5, x7 có
giá trị bằng nhau tại cả hai thuộc tính. Khi đó ta nói
rằng các đối tượng này không phân biệt từng đôi
đối với tập thuộc tính {Age, LEMS}
Trong nhiều ứng dụng, tập đối tượng được chia
thành các tập đối tượng con bởi một tập các
thuộc tính phân biệt được gọi là tập thuộc tính
quyết định, bảng thông tin trong trường hợp này
được gọi là một bảng quyết định.
[4]
Bảng quyết định là một bảng thông tin có dạng
(U, A {d}) trong đó:
• d A là thuộc tính quyết định (có thể có
nhiều thuộc tính quyết định)
• Các phần tử của A được gọi là các thuộc tính điều kiện
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
4
Age LEMS
x1 16-30 50
x2 16-30 0
x3 31-45 1-25
x4 31-45 1-25

x5 46-60 26-49
x6 16-30 26-49
x7 46-60 26-49
Bảng 1-1 Một bảng thông tin
Age LEMS Walk
x1 16-30 50 Yes
x2 16-30 0 No
x3 31-45 1-25 No
x4 31-45 1-25 Yes
x5 46-60 26-49 No
x6 16-30 26-49 Yes
x7 46-60 26-49 No
Bảng 1-2 Một bảng quyết định A
={Age, LEMS}, d = {Walk}
Trong bảng quyết định Bảng 1-2 các cặp đối tượng x3, x4 và x5, x7 có giá trị bằng
nhau tại hai thuộc tính điều kiện nhưng cặp {x3, x4} có giá trị khác nhau tại thuộc
tính quyết định, trong khi cặp {x5, x7} thì có giá trị bằng nhau tại thuộc tính quyết
định. Như vậy có thể biểu diễn lặp lại các đối tượng giống nhau hay bất khả phân
biệt và một thuộc tính điều kiện có thể dư thừa.
1.2 Quan hệ tương đương và quan hệ hệ bất khả phân biệt
Quan hệ tương đương: quan hệ nhị phân R X x X được gọi là quan hệ tương
đương khi và chỉ khi:
• R là quan hệ phản xạ: xRx với mọi x ∈X
• R là quan hệ đối xứng: xRy => yRx với mọi x,y ∈X
• R là quan hệ bắc cầu: xRy và yRz => xRz với mọi x,y,z ∈X
Một quan hệ tương đương R sẽ phân hoạch tập đối tượng thành các lớp tương
đương, trong đó lớp tương đương của một đối tượng x là tập tất cả các đối tượng có
quan hệ R với x.
Quan hệ bất khả phân biệt: cho IS = (U, A) là bảng thông tin, với tập B A
Có quan hệ tương đương tương ứng:

IND
IS
(B) = {(x,x’) ∈ UxU | a ∈ B, a(x) = a(x’)}
• IND
IS
(B) được gọi là quan hệ bất khả phân theo B (B-indiscernibility relation)
• Nếu (x,x’)

IND
IS
(B) thì các đối tượng x và x’ là không thể phân biệt nhau qua
tập thuộc tính B.
• Các lớp tương đương của quan hệ bất khả phân biệt theo B được ký hiệu là [x]
B
Từ bảng 1-1, phân hoạch 7 đối tượng theo thuộc tính theo các thuộc tính thành các
lớp tương đương:
IND ({Age}) = {{x1, x2, x6}, {x3, x4}, {x5, x7}}
IND ({LEMS}) = {{x1}, {x2}, {x3, x4}, {x5, x6, x7}}
IND ({Age, LEMS}) = {{x1}, {x2}, {x3, x4}, {x5, x7}, {x6}}
1.3 Rút gọn thuộc tính
Trong một bảng quyết định, có các vấn đề dư thừa thông tin như sau:
• Có thể biểu diễn lặp đi lặp lại nhiều lần các đối tượng giống nhau hay bất khả
phân biệt theo một tập thuộc tính
• Một số thuộc tính có thể bị dư nghĩa là có thể loại bỏ chúng mà không làm xấu đi
việc phân lớp
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
5
Để giải quyết vấn đề thứ nhất ta dùng khái niệm lớp tương đương, chỉ cần sử dụng
một đối tượng để đại diện cho mỗi lớp tương đương. Còn vấn đề thứ hai là chỉ giữ
lại các thuộc tính bảo toàn quan hệ bất khả phân biệt và hệ quả là bảo toàn xấp xỉ tập

hợp
[2]

Định nghĩa Reduct: cho bảng thông tin S, một tập thuộc tính R A được gọi là
reduct nếu R thỏa hai điều kiện sau:
(i) IND (R) = IND (A) và
(ii) (ii) a ∈ R, IND (R – {a}) ≠ IND (A)
Điều kiện đầu (i) cho thấy tính đầy đủ của tập thuộc tính R nghĩa là các cặp đối
tượng mà không thể phân biệt được từ R thì vẫn không thể phân biệt được từ A.
Điều kiện thứ hai (ii) chỉ ra rằng R là tập thuộc tính tối giản hay nhỏ nhất. Có thể có
nhiều hơn một reduct trong bảng thông tin và tập tất cả các reduct trong một bảng
thông tin ký hiệu là RED (S).
[3]
1.4 Ma trận phân biệt và hàm phân biệt
Hai đối tượng được xem là phân biệt nếu các giá trị của nó khác nhau trong ít nhất
một thuộc tính. Ma trận phân biệt (discernibility matrix) là một ma trận lưu trữ các
tập thuộc tính mà phân biệt giữa các cặp đối tượng với nhau.
Định nghĩa ma trận phân biệt: cho trước bảng thông tin S, ma trận phân biệt M =
(M(x,y)) của S là một ma trận vuông nxn (hoặc |U|x|U|) với n là số các đối tượng, và
phần tử M(x,y) cho cặp đối tượng (x,y) trong ma trận là:
M(x,y) = {a ∈A | a(x) ≠ a(y)}
Ý nghĩa của phẩn tử ma trận M(x,y) là các đối tượng x và y có thể được phân biệt bởi
bất kỳ thuộc tính trong M(x,y) và cặp (x,y) có thể được phân biệt nếu M(x,y) ≠ .
Do ma trận phân biệt M là đối xứng và có đường chéo rỗng, nên ta chỉ quan tâm đến
các phần tử ở một bên đường chéo của ma trận.
Ví dụ: cho bảng thông tin với 7 đối tượng (ký hiệu 1 đến 7) và 5 thuộc tính điều kiện
(a, b, c, d, e)
U a b c d e
1 High Middle Middle Fer1 Pes1
2 Middle Middle Middle Fer2 Pes1

3 Middle High Weak Fer1 Pes2
4 Middle High Middle Fer1 Pes1
5 Low Middle Strong Fer1 Pes1
6 High Middle Middle Fer3 Pes2
7 High High Middle Fer1 Pes2
Bảng 1-3
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
6
Ta có ma trận phân biệt 7x7 (ứng với 7 đối tượng)
1 2 3 4 5 6 7
1
2 {a,d}
3 {a,b,c,e} {b,c,d,e}
4 {a,b} {b,d} {c,e}
5 {a,c} {a,c,d} {a,b,c,e} {a,b,c}
6 {d,e} {a,d,e} {a,b,c,d} {a,b,d,e} {a,c,d,e}
7 {b,e} {a,b,d,e} {a,c} {a,e} {a,b,c,e} {b,d}
Ma trận 1-1
Quan sát tại hàng 2 cột 1 trên ma trận phân biệt, ta có (x,y) = (2,1) là cặp đối tượng 2
và 1, và {a,d} chỉ ra rằng hoặc thuộc tính a hoặc d phân biệt hai đối tượng.
Giả sử ta thêm một thuộc tính quyết định D vào bảng thông tin 1-3 như sau:
U a b c d e D
1 High Middle Middle Fer1 Pes1 High
2 Middle Middle Middle Fer2 Pes1 High
3 Middle High Weak Fer1 Pes2 High
4 Middle High Middle Fer1 Pes1 Low
5 Low Middle Strong Fer1 Pes1 Low
6 High Middle Middle Fer3 Pes2 Low
7 High High Middle Fer1 Pes2 Low
Bảng 1-4

Đối với bảng quyết định, phân biệt tương đối (relative discernibility) được lưu trữ
trong một ma trận (hay còn gọi là ma trận phân biệt tương đối – relative
discernibility matrix) mà các phần tử được định nghĩa:
M(x,y) = {a ∈C, d ∈D | [a(x) ≠ a(y)] /\

[d(x) ≠ d(y)]}
(trong đó x,y ∈U, C là tập các thuộc tính điều kiện, D là thuộc tính quyết định)
Nghĩa là M(x,y) = nếu x và y có giá trị giống nhau tại thuộc tính quyết định. Như
vậy, ta chỉ xem xét sự phân biệt của các đối tượng có giá trị khác nhau tại thuộc tính
quyết định.
Từ bảng 1-4 ta có ma trận phân biệt tương đối như sau
1 2 3 4 5 6 7
1
2
3
4 {a,b} {b,d} {c,e}
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
7
5 {a,c} {a,c,d} {a,b,c,e}
6 {d,e} {a,d,e} {a,b,c,d}
7 {b,e} {a,b,d,e} {a,c}
Ma trận 1-2
Một khi ma trận phân biệt được xây dựng nó được xử lý hay tính toán giống nhau
cho dù nó là ma trận phân biệt bình thường hay ma trận phân biệt tương đối.
Tổng quát hóa định nghĩa ma trận phân biệt dựa trên bảng quyết định:
Cho T = (U, C, D) là một bảng quyết định. Trong đó U là tập gồm n đối tượng, C là
tập thuộc tính điều kiện, D là tập thuộc tính quyết định, một ma trận phân biệt của T
kí hiệu M(T) là ma trận n
x
n được định nghĩa:

{ x,y ∈U; c∈ C: c(x) ≠ c(y)} nếu ∃d∈D [d(x) ≠ d(y)]
M(x,y) =
nếu d∈D [d(x) = d(y)]
Hàm phân biệt của một ma trận phân biệt là một dạng chuẩn tuyển chính tắc
(minimal disjunctive normal form-DNF) được định nghĩa:
f(M) = /\ { (M(x,y)) | x,y∈U, M(x,y) ≠ }
Chúng ta tạo ra hàm phân biệt trong đó giá trị trong mỗi ô (mỗi phần tử của ma trận)
được kết với nhau bằng phép toán tuyển ( ) và giữa các ô bằng phép toán hội (/\)
[1]
Từ Ma trận 1-2 ở trên, ta có hàm phân biệt
f(a,b,c,d,e) = (a b) /\ (a

c) /\ (d

e) /\ (b e)
(b

d) /\ (a c d) /\ (a d

e) /\ (a b

d

e)
(c

e) /\ (a

b c


e) /\ (a b

c

d) /\ (a

c)
Và để rút gọn hàm phân biệt (reduct) ta dùng luật hút (còn gọi luật hấp thu), luật lũy
đẳng, v.v
Thuật giải hàm phân biệt: giả sử có một ma trận phân biệt M với n đối tượng
F = //hàm phân biệt
For y = 1 to n Do
For x = y + 1 to n Do
If (M (x,y) khác rỗng Then
F = F /\ M(x,y)
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
8
2 Phần 2 – Đơn giản hóa ma trận phân biệt và cài đặt
chương trình
Trong phần trên sau khi tính hàm phân biệt và dùng các luật để rút gọn các thuộc
tính để có một tập con nhỏ nhất được gọi là reduct. Có nhiều phương pháp đã được
đề xuất và được kiểm tra cho việc tìm tập reducts hoặc duy nhất một reduct. Nhưng
nó đã được chứng minh rằng việc tìm kiếm tập reducts hoặc tìm một reduct tối ưu là
NP (Non-derterministic Polynomial)
[3]
. Trong phần này chúng ta tìm hiểu một
phương pháp làm đơn giản ma trận phân biệt trước khi union các giá trị trong các ô
để được một reduct.
2.1 Ma trận phân biệt chính tắc (minimum discernibility matrix)
Định nghĩa ma trận phân biệt tối thiểu: cho bảng thông tin S với ma trận phân biệt

M, một ma trận M
0
= (M
0
(x,y)) được gọi là một ma trận phân biệt chính tắc của M
nếu M
0
thỏa các điều kiện sau:
(i) Bất kỳ phần tử của M
0
hoặc là rỗng hoặc là tập thuộc tính với duy nhất một
phần tử (singleton set)
(ii) (x,y)∈U
x
U [M(x,y) ≠ => (M
0
(x,y) ≠ /\ M
0
(x,y) M(x,y))]
(iii) (x,y)∈U
x
U [M(x,y) = => M
0
(x,y) = ]
(iv) (M
0
(x,y)) là một reduct
Từ ma trận 1-2 ta có thể tính và thu được hai reducts {a, b, e} và {a, b, c, d}. Như
vậy ta có hai ma trận phân biệt chính tắc tương ứng.
[3]

2.2 Tương đương, đặc trưng và giống nhau của các ma trận
Ma trận phân biệt đơn giản hóa (simplified discernibility matrix): một ma trận M
s

được gọi là simplified discernibility matrix của ma trận phân biệt M nếu thỏa các
điều kiện:
(i) (x,y)∈U
x
U [M(x,y) ≠ => (M
s
(x,y) ≠ /\ M
s
(x,y) M(x,y))]
(ii) (x,y)∈U
x
U [M(x,y) = => M
s
(x,y) = ]
Trong phần trình bày này ta chỉ đề cập đến simplified discernibility matrix và gọi tắt
là ma trận phân biệt (discernibility matrix).
Định nghĩa ba kiểu quan hệ giữa hai ma trận phân biệt:
• Hai ma trận phân biệt được gọi là tương đương (equivalence) kí hiệu M
1
≡M
2
nếu
nó có giống nhau tập reduct, RED (M
1
) = RED (M
2

)
• Một ma trận phân biệt được gọi là đặc trưng (specification) của ma trận phân
biệt kia (hoặc M
2
là tổng quát – generalization – của M
1
) kí hiệu M
1
M
2
nếu như
tập reducts của nó là tập con của tập reduct của ma trận kia, RED (M
1
) RED
(M
2
)
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
9
• Hai ma trận phân biệt được gọi là giống nhau (similarity) kí hiệu M
1
M
2
nếu nó
có giống nhau cùng ít nhất một reduct, RED (M
1
)

RED (M
2

) ≠
2.3 Các phép toán ma trận cơ sở
Phần tử hút hay hấp thụ (element absorption): cho một phần tử của ma trận phân
biệt M(x’,y’) ≠ , nó hút một phần tử khác M(x,y) nếu thỏa điều kiện sau:
≠ M(x’,y’) M(x,y)
Nghĩa là giá trị của M(x,y) được thay thế bởi giá trị của M(x’,y’) trong ma trận phân
biệt. Ta cũng có thể gọi M(x,y) được hút bở M(x’,y’). Tập thuộc tính phân biệt hai
cặp (x’,y’) và (x,y) được cho bởi M(x,y)

M(x’,y’) = M(x’,y’). Các thuộc tính
trong M(x’,y’) là đủ để phân biệt hai cặp đối tượng (x’,y’) và (x,y)
Ma trận hút (matrix absorption): phép toán ma trận hút là một chuỗi của tất cả phép
toán của phần tử hút trên các cặcp của các phần tử thỏa điều kiện:
≠ M(x’,y’) M(x,y)
Như vậy sau matrix absorption thì không có phần tử nào trong ma trận phân biệt là
tập con của phần tử khác. Ma trận thu được bằng cách áp dụng phép toán của một
phần tử hút là tương đương với ma trận ban đầu, và ma trận thu được bởi phép toán
của ma trận hút là tương đương với ma trận ban đầu.
Thực hiện phép toán hút phần tử trong ma trận M.
Lấy một phần tử bất kỳ M(x1,y1) ≠ của M và xét phần tử khác M(x2,y2) với
M(x1,y1) M(x2,y2) . Giả sử M
e
là ma trận thu được sau khi thực hiện phép toán
hút phần tử với bộ hút M(x1,y1)
M(x1,y1) nếu (x,y) = (x2,y2)
M
e
(x,y) =
M(x,y) nếu khác
Xóa thuộc tính (attribute deletion): cho a


A, phép tính xóa thuộc tính là xóa a từ
tất cả các phần tử trong ma trận phân biệt nếu thỏa điều kiện:
(M(x,y) ≠ ) [(M(x,y) – {a}) ≠ ]
Nói cách khác, thuộc tính a có thể được xóa nếu {a} không là tập một phần tử duy
nhất trong M.
Xóa tập thuộc tính (attribute set deletion), cho C A, phép tính xóa tập thuộc tính
là xóa tất cả các thuộc tính trong C từ tất cả các phần tử trong ma trận phân biệt nếu
thỏa điều kiện:
(M(x,y) ≠ ) [(M(x,y) – C) ≠ ]
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
10
Nói cách khác, tập thuộc tính C có thể được xóa nếu không có bất kỳ tập con nào của
C là một phần tử của M
Như vậy, ma trận thu được bằng cách áp dụng phép toán xóa thuộc tính hoặc xóa tập
thuộc tính là một ma trận phân biệt đặc trưng của ma trận ban đầu.
Giả sử M
s
là ma trận sau khi xóa thuộc tính d bởi phép toán xóa thuộc tính
M(x,y) nếu d

M(x,y)
M
s
(x,y) =
M(x,y) – {d} nếu d ∈

M(x,y)
Định lý: một ma trận phân biệt có thể được biến đổi thành một ma trận chính tắc
bởi áp dụng một số hữu hạn các phép toán ma trận cơ sở.

2.4 Thuật toán xây dựng Reduct dựa trên
đơn giản hóa ma trận
Chúng ta dùng các phép toán xóa thuộc tính và hút
phần tử để đơn giản các phần tử của ma trận theo hàng
bởi hàng. Xem xét phần tử đang tiến hành đơn giản
M(i,j) trong ma trận như hình 1-1. Chúng ta chia ma
trận thành hai phần, phần chứa các phần tử đã được
đơn giản, phần chứa các phần tử chưa được đơn
giản. Nếu ta tổ chức các phần tử của ma trận theo thứ
tự:
M(2,1), M(3,1), M(3,2), M(4,1), , M(i,j), , M(n,n-1)
Với n = |U|, thì bao gồm các phần tử trước M(i,j) và gồm các phần tử sau
M(i,j)
Nếu M(i,j) ≠ ta tiến hành thuật toán trong ba bước
[3]
:
Bước 1: hút (absorb) M(i,j) bởi tất cả các phần tử trong (do đó không còn bất kỳ
phần tử nào trong là tập con của M(i,j))
Bước 2: lựa chọn bất kỳ thuộc tính a trong M(i,j), tính toán tập thuộc tính còn lại C
= M(i,j) – {a}, và thay thế M(i,j) bởi {a}
Bước 3: hút các phần tử trong bởi {a} và thực hiện xóa C trên các phần tử của
Lặp lại ba bước trên cho phần tử kế tiếp phần tử M(i,j) và dừng thuật toán sau khi đã
đi hết phần tử trong B hoặc các phần tử đã singleton set.
Ta có (n
2
-n)/2 phần tử trong ma trận phân biệt (tức là một nữa ma trận và bỏ n phần
tử trên đường chéo). Thuật toán đơn giản hàng bởi hàng, mỗi phần tử M(i,j) khác
rỗng được hút đầu tiên bởi các phần tử trong , trong trường hợp xấu nhất (worst
case), phần tử đầu tiên M(2,1) trong ma trận phân biệt cần (n
2

-n)/2 -1 obsorptions,
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
11
Hình 1-1 chia ma trận thành
hai phần A và B
phần tử tiếp theo M(3,1) cần (n
2
-n)/2 -2, v.v. Do đó để thực hiện tất cả các phần tử
trong M, thì độ phức tạp cho trường hợp xấu nhất là O(n
4
).
2.5 Cài đặt chương trình
Bên cạnh các functions để thêm thuộc tính (attribute) và đối tượng (object) cho việc
nhập thông tin vào bảng quyết định, có 4 functions chính:
• GenerateDM(): Tạo ra ma trận phân biệt từ bảng quyết định
• GenerateDFValue(DataGridView control, bool bDistinction = false): sinh ra
hàm phân biệt (chưa rút gọn) từ ma trận phân biệt
• SimplifyDM(): đơn giản ma trận phân biệt dùng các phép toán xóa thuộc tính và
hút phần tử để thu được ma trận phân biệt chính tắc (đây là function quan trọng
nhất trong chương trình)
• GenerateDFValue(DataGridView control, bool bDistinction = true): union các
phần tử từ ma trận phân biệt chính tắc để được hàm phân biệt đã rút gọn (reduct)
Trình bày psedu-code của SimplifyDM() và ví dụ minh họa (phần chi tiết của source
code và giao diện người sử dụng xem thêm trong phần mục lục và tập tin source
codes đi kèm)
//SimplifyDM()
//Input: The discernibility matrix M of an decision table S.
//Output: one reduct R.
for i = 2 to n do
{

for j = 1 to i-1 do
{
if M(i, j) ≠ 0 then
{
If (M(i, j) is not singleton set then
{
// Absorb M(i; j) by every non-empty element in
for every non-empty element M(i’, j’) ∈ do
if M(i’, j’) M(i; j) then
M(i; j) = M(i’, j’);
}
// Divide M(i; j) into two parts
select an attribute a from M(i; j);
C = M(i; j) – {a};
M(i; j) = {a};
// Simplify every non-empty element in
for every non-empty element M(i’, j’) ∈ do
if a ∈ M(i’, j’) then
M(i’, j’) = {a}
else
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
12
M(i’, j’) = M(i’, j’) - C;
} // end if
} // end for loop of j
} // end for loop of i
Ví dụ minh họa
[3]
: cho bảng quyết định sau:
U a b c d e f D

o1 0 0 0 0 0 0 +
o2 1 1 1 1 0 0 +
o3 1 0 0 0 1 0 +
o4 1 1 0 0 0 1 -
o5 1 0 1 0 0 0 -
o6 1 0 0 1 0 0 -
Bảng 1-5
Ta có ma trận phân biệt từ bảng quyết định
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a,b,f c,d,f b,e,f
o5 a,c b,d c,e
o6 a,d b,c d,e
Xét phần tử đầu tiên M(4,1) = {a,b,f} chưa được đơn giản hóa từ ma trận phân biệt
Bước 1: absorbing M(4,1) bởi các phần tử trong
do không có phần tử nào trong là tập con của M(4,1) nên ta vẫn được ma trận
phân biệt như trên
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a,b,f c,d,f b,e,f
o5 a,c b,d c,e
o6 a,d b,c d,e
Bước 2: chọn thuộc tính {a} từ M(4,1) và tính C = M(4,1) – {a} = {b,f}, gán lại
M(4,1) = {a}
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
13

Bước 3: hút các phần tử trong bởi {a} và thực hiện xóa C trên các phần tử của .
Ta có M(5,1) và M(6,1) bị thay thế bởi {a} sau khi bị hút, và M(4,2) bị xóa {f},
M(4,3) bị xóa {b,f}, M(5,2) và M(6,2) bị xóa {b}, ta được ma trận đơn giản hơn:
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a c,d e
o5 a d c,e
o6 a c d,e
Lặp lại 3 bước cho phần tử tiếp theo M(4,2)
Bước 1: absorbing M(4,2) bởi các phần tử trong
Ta thấy M(4,2) bị absorbed bởi M(5,2), nên M(4,2) = M(5,2) nên ma trận phân biệt
mới:
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a d e
o5 a d c,e
o6 a c d,e
Bước 2: ta có M(4,2) = {d} và C = vì M(4,2) có duy nhất một phần tử
Bước 3: hút các phần tử trong bởi {d} và thực hiện xóa C trên các phần tử của .
do C = nên bỏ qua bước xóa C. Ta thấy M(6,3) bị thay thế bởi {d} sau khi bị hút,
ma trận phân biệt mới:
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a d e

o5 a d c,e
o6 a c d
Lặp lại 3 bước cho phần tử tiếp theo M(4,3)
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
14
Ta thấy do M(4,3) chỉ duy nhất phần tử {e} (singleton set) nên bỏ qua bước 1 và C =
tại bước 2. Bước 3 sau khi hút các phần tử trong bởi {e} ta có M(6,3) bị thay
thế bởi {e} sau khi bị hút và ma trận phân biệt mới:
o1 o2 o3 o4 o5 o6
o1
o2
o3
o4 a d e
o5 a d e
o6 a c d
Như vậy tất cả các phần tử trong đều là single set và dừng thuật toán.
Từ ma trận phân biệt chính tắc thu được ở trên, ta Union các phần tử trong ma trận
để được Reduct {a, c, d, e}
2.6 Kết luận và hướng cải tiến
Việc hiểu và tìm ra reduct là nền móng cơ bản trong lý thuyết tập thô. Khái niệm về
một ma trận phân biệt cho phép chúng ta thiết lập một nền tảng logic và lý thuyết
(theoretical) cho reduct của một bảng thông tin/bảng quyết định. Mặc dù có rất
nhiều thuật toán xây dựng reduct dựa trên ma trận phân biệt nhưng chúng chủ yếu
dựa trên những giải thích hợp lý của ma trận thay vì xử lý ma trận trực tiếp
[3]
.
Trong phạm vi bài thu hoạch này tóm tắt có hệ thống lại các khái niệm cơ bản của
tập thô và qua đó trình bày một phương pháp đơn giản hóa trực tiếp trên ma trận
phân biệt để tìm reduct và cài đặt chương trình mô phỏng phương pháp. Tuy nhiên
nó vẫn còn nhiều hạn chế cần phải cải tiến, ví dụ như:

• Lấy một thuộc tính bất kỳ (hay thuộc tính đầu tiên trong coding) của M(i,j) tại
bước 2 của thuật toán để gán lại cho M(i,j) và phân tách ra tập con thuộc tính xóa
C chỉ thích hợp khi các thuộc tính điều kiện có mức độ quan trọng hay tỉ trọng
lớn đã được sắp thứ tự từ trái qua phải trong bảng quyết định. Như vậy ta cần cải
tiến để chọn ra một thuộc tính thích hợp nhất tại M(i,j) của bước 2 để khỏi xóa đi
các thuộc tính cốt lõi.
• Với độ phức tạp O(n
4
) khi thực hiện các phép toán đơn giản ma trận phân biệt và
với số luợng lớn các đối tượng trong thực tế thì không thực sự khả thi.
• Hiện tại phần cài đặt chương trình chỉ dừng lại với một thuộc tính quyết định duy
nhất. Nó cần cải tiến cho bài toán tổng quát với m thuộc tính quyết định.
2.7 Phụ lục giao diện chương trình
Đây là chương trình nhỏ và đơn giản để mô phỏng những kiến thức đã học để tìm ra
ma trận phân biệt, hàm phân biệt, và reduct sau khi tiến hành đơn giản hóa ma trận
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
15
phân biệt. Nó được viết bằng C# trên môi trường Visual Studio 2010 (.NET 4.0) và
chạy trên Windows 7 thông qua file DiscernibilityMF.exe không cần cài đặt.
Phần hướng dẫn các bước sử dụng nằm trong màn hình chính khi chạy chương trình
(xem Giao diện 1)
Giao diện 1 – sau khi chương trình được chạy
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
16
Giao diện 2 – sau khi nhập vào bảng quyết định và tìm ma trận phân biệt, hàm phân
biệt
Một số functions chính trong chương trình
//Generate Discernibility Matrix:
//INPUT - Decision Table (dataGridViewInfo) with only one decision attribute
//OUTPUT - Discernibility Matrix (dataGridViewDM)

//Suppose that decision attribute is the last column
private void GenerateDM()
{
int iRow = dataGridViewInfo.RowCount;
int iCol = dataGridViewInfo.ColumnCount - 1; //exclude decision attribute
//row
for (int j = 0; j < iRow ; j++)
{
//row
for (int k = j + 1; k < iRow; k++)
{
//check decision attribute
if (GetValueFromCell (dataGridViewInfo,j,iCol) ==
GetValueFromCell (dataGridViewInfo,k,iCol))
//j >i (column)
SetValueToCell(dataGridViewDM,k,j,EMPTY_VALUE);
else
{
//col - DM[k,j]
string strCurrValue = GetValueFromCell (dataGridViewDM,k,j);
for (int i = 0; i < iCol; i++)
{
if (GetValueFromCell (dataGridViewInfo,j,i) !=
GetValueFromCell (dataGridViewInfo,k,i))
{
if (string.IsNullOrEmpty(strCurrValue))
strCurrValue = strCurrValue +
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
17
GetAttributeName(dataGridViewInfo,i);

else
strCurrValue = strCurrValue + ", " +
GetAttributeName(dataGridViewInfo, i);
}
}
SetValueToCell(dataGridViewDM,k,j,strCurrValue);
}
}
}
}
//Generate Discernibility Function value of F(A1, A2, An)
private string GenerateDFValue(DataGridView dgView, bool bDistinction)
{
//each cell start row = 0 and col = 0, it means first cell M[0,0]
string strDFValue = "";
for (int iCol = 0; iCol < iDMSize; iCol++)
{
//bypass cell in the bias
for (int iRow = iCol + 1; iRow < iDMSize; iRow++)
{
string strCellValue = GetValueFromCell (dgView,iRow,iCol);
if (strCellValue != EMPTY_VALUE)
{
if (bDistinction)
{
//single attribute in each cell after simplifying
//discernibility matrix
if (!strDFValue.Contains(strCellValue))
strDFValue = strDFValue + strCellValue;
}

else
strDFValue = strDFValue + "(" + strCellValue + ") ";
}
}
//each column will be displayed in each row
if ((strDFValue != "") && !bDistinction )
strDFValue = strDFValue + "\r\n";
}
//replace all commas among attribute with "V"
strDFValue = ReplaceCharInString(strDFValue, ", ", " v ");
return strDFValue;
}
//Simplify Discernibility Matrix:
//INPUT- Discernibility Matrix (dataGridViewDM) with number of objects = iDMSize
//OUTPUT - Simplified Discernibility Matrix (dataGridViewDMS)
private void SimplifyDM()
{
int iNextCol;
//from row = 2 to n (since datagridview start from zero)
for (int iRow = 2; iRow <= iDMSize; iRow++)
{
//from column 1 to iRow -1 (don't work on cell of bias)
for (int iCol = 1; iCol <= iRow - 1; iCol++)
{
//M[i,j] not Empty and not Single Attribute
string Mij = GetValueFromCell (dataGridViewDMS,iRow-1,iCol-1);
//start M[0,0]
if (Mij != EMPTY_VALUE)
{
if (!IsSingleAttribute(Mij))

Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
18
{
//Absorb M[i,j] by every non-empty element in B (part 2)
for (int iR = iRow; iR <= iDMSize; iR++)
{
//continue next column in the current row OR start
//first column from the next rows
if (iR == iRow)
iNextCol = iCol + 1;
else
iNextCol = 1;
for (int jC = iNextCol ; jC <= iR - 1; jC++)
{
string MiRjC = GetValueFromCell(dataGridViewDMS,iR - 1,jC - 1);
if (MiRjC != EMPTY_VALUE)
//MiRjC is a subset of Mij
if (Mij.Contains(MiRjC))
{
Mij = MiRjC;
SetValueToCell(dataGridViewDMS,iRow - 1,iCol - 1,
Mij);
}
}
}
}
//Devide Mij into two parts
string OneAttribute = GetOneAttributeFromSet(Mij);
string OtherAttributes = GetOtherAttributesFromSet(Mij);
Mij = OneAttribute;

SetValueToCell(dataGridViewDMS,iRow - 1,iCol - 1,Mij);
// Simplify every non-empty element in B (part 2)
// Delete OtherAttributes from the rest of cells in matrix
for (int iR = iRow; iR <= iDMSize; iR++)
{
//continue next column in the current row
//OR start first column from the next rows
if (iR == iRow)
iNextCol = iCol + 1;
else
iNextCol = 1;
for (int jC = iNextCol; jC <= iR - 1; jC++)
{
string MiRjC = GetValueFromCell (dataGridViewDMS,iR - 1,jC - 1);
if (MiRjC != EMPTY_VALUE)
//if (!IsSingleAttribute(MiRjC))
if (MiRjC.Contains(Mij))
SetValueToCell(dataGridViewDMS, iR - 1, jC - 1, Mij);
else
if (OtherAttributes != "")
SetValueToCell(dataGridViewDMS,iR - 1,jC - 1,
DeleteAttributes(MiRjC, OtherAttributes));
}
}
} //end of Empty Value
} //end of iCol
} //end of iRow
}
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
19

Tài liệu tham khảo
[1] Đỗ Phúc (2006) : « Giáo trình khai thác dữ liệu », trang 84-99
[2] Đỗ Phúc « bài giảng : Tập thô trong khai phá dữ liệu »
[3] Y.Y. Yao and Y. Zhao « Discernibility matrix simplication for constructing
attribute reducts », Information Sciences, Vol. 179, No. 5, 867-882, 2009
[4] Khoa CNTT – Trường ĐH KHTN « Lý thuyết tập thô và bài toán nhận dạng mặt
người », trang 10-41
[5] Hồ Thuần, Hoàng Thị Lan Giao « Một thuật toán tìm tập rút gọn sử dụng ma trận
phân biệt
Dương Ngọc Nhân – Bài Thu Hoạch: Khai phá dữ liệu và kho dữ liệu
20

×