TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
PHÒNG ĐT SĐH-KHCN&QHĐN
TOÁN CHO MÁY TÍNH
Tên đề tài:
TÌM HIỂU VỀ LÝ THUYẾT TẬP
THÔ VÀ TẠO CÂY QUYẾT ĐỊNH
GVHD: PGS.TS Dương Tôn Đảm
Học viên thực hiện:
Trần Cảnh Khánh - CH1301093
TPHCM – 11/2014
Mục lục
Giới thiệu 1
CHƯƠNG I LÝ THUYẾT TẬP THÔ 2
1.1 Hệ thông tin 2
1.2 Hệ quyết định 4
1.3 Quan hệ bất khả phân biệt (indiscernibility) 5
1.4 Các quan sát 7
1.5 Xấp xỉ tập hợp 7
1.5.1 Các khái niệm xấp xỉ trong tập thô 9
1.5.2 Tập thuộc tính rút gọn và tập thuộc tính lõi 12
1.5.3 Ma trận phân biệt 13
CHƯƠNG 2 THUẬT TOÁN CSD 15
CHƯƠNG 3 THUẬT TOÁN DTCRSCR 17
CHƯƠNG 4 CÀI ĐẶT VÀ THỬ NGHIỆM 19
4.1 Cài đặt tập thô 19
4.2 Cài đặt thuật toán Quick Reduct 25
4.3 Cài đặt thuật toán CSD 27
4.4 Cài đặt thuật toán DTCRSCR 30
4.5 Chương trình minh họa các thuật toán tạo cây quyết định 32
Tài liệu tham khảo 36
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 1
Giới thiệu
Ngày nay, với sự phát triển của công nghệ thông tin, các cơ sở dữ liệu có kích thước
ngày càng tăng và nhu cầu thu thập những thông tin hữu ích là vấn đề cấp thiết.
Phương pháp phân lớp dựa trên cây quyết định là một trong những phương pháp tốt
cho việc phân lớp so với mạng bayes và mạng nơ tron.
Các thuật toán kinh điển như ID3, C4.5 sử dụng độ hỗn loạn và độ lợi thông tin làm
tiêu chí chọn thuộc tính để xây dựng cây quyết định.
Một các tiếp cận khác đang được phát triển là xây dựng cây quyết định dựa trên lý
thuyết tập thô được Pawlak phát triển vào đầu thập niên 1980. Lý thuyết tập thô phát
huy tác dụng cho các trường hợp dữ liệu không đầy đủ, không chính xác. Một ưu điểm
đối với lý thuyêt tập thô so với hướng tiếp cận Bayes là không cần giả định về sự độc
lập của các thuộc tính cũng như không cần bất kỳ kiến thức nền nào về dữ liệu.
Trong bài báo cáo này tác giả trình bày thuật toán sinh cây quyết định bằng thuật
toán CSD và DTCRSCR dựa trên lý thuyết tập thô.
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 2
CHƯƠNG I LÝ THUYẾT TẬP THÔ
Lý thuyết tập thô (Rough Set Theory) do Zdzisaw Pawlak (1926-2006) đề xuất
vào năm 1982 đã được ứng dụng ngày càng rộng rãi trong lĩnh vực khoa học máy tính.
Lý thuyết tập thô được phát triển trên một nền tảng toán học vững chắc, cung cấp các
công cụ hữu ích để giải quyết các bài toán phân tích dữ liệu, phát hiện luật, nhận dạng…
Đặc biệt thích hợp với các bài toán phân tích trên khối lượng dữ liệu lớn, chứa đựng
thông tin mơ hồ, không chắc chắn. Mục đích chính của phân tích dữ liệu dựa trên lý
thuyết tập thô nhằm đưa ra các xấp xỉ để biểu diễn các đối tượng không thể được phân
lớp một cách chắc chắn bằng tri thức có sẵn. Theo quan điểm của lý thuyết tập thô, mọi
tập thô đều liên kết với 2 tập “rõ” là xấp xỉ dưới và xấp xỉ trên của nó. Xấp xỉ dưới bao
gồm các đối tượng chắc chắn thuộc, còn xấp xỉ trên chứa tất cả các đối tượng có khả
năng thuộc về tập đó. Các tập xấp xỉ là cơ sở để rút ra các kết luận (tri thức) từ cơ sở dữ
liệu.
Các khái niệm cơ bản của tập thô
Hệ (bảng) quyết định/thông tin
Quan hệ bất khả phân biệt(indiscernibility)
Xấp xỉ tập hợp (set approximation)
Rút gọn và lõi (reducts and core)
Thành viên thô (rough membership)
Phụthuộc thuộc tính
1.1 Hệ thông tin
Trong hầu hết các hệ quản trị cơ sở dữ liệu thông thường thì thông tin thường
được biểu diễn dưới dạng các bảng, trong dó mỗi hàng biểu diễn thông tin về một đối
tượng, mỗi cột biểu diễn thông tin về một thuộc tính của đối tượng. Từ đầu những năm
80 Pawlak đã định nghĩa một khái niệm mới là hệ thông tin (infomation system) như
sau:
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 3
Hệ thông tin là một cặp S = (U, A) trong đó U là tập hữu hạn không rỗng các
đối tượng, hay gọi là tập vũ trụ. A là tập hữu hạn không rỗng các thuộc tính sao cho a
: U ->V
a
với mọi a A. Tập V
a
được gọi là tập giá trị của thuộc tính a.
IS là cặp (U, A)
„ U là tập 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 ->V
a
V
a
được gọi là tập trị của a.
Ví dụ 1.1: Bảng dưới đây biểu diễn về một hệ thống thông tin của 5 đối tượng
U={U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U11,U12,U13,U14}
với tập thuộc tính.
A ={Outlook, Temp, Humidity, Wind}
Và miền giá trị cho từng thuộc tính là:
o I
Outlook
={sunny, overcast, rain}
o I
Temp
= {hot, mild, cold}
o I
Humidity
= {normal, high }
o I
Wind
= {weak, strong}
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 4
Bảng 1: Hệ thống thông tin
1.2 Hệ quyết định
Hệ thống này là một hình thức học giám sát. Các hệ thông tin theo loại này
được gọi là các hệ quyết định. Một hệ quyết định là một hệ thông tin có dạng :
S =
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à thuộc tính điều kiện
Ví dụ 1.2: Mô tả một bảng quyết định, với các thuộc tính điều kiện lấy ở Bảng 1 và
thêm và thuộc tính quyết định “PlayTennis”
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 5
Trong đó:
- U={U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U11,U12,U13,U14}
- A ={Outlook, Temp, Humidity, Wind}
Trong bài toán phân lớp thì thuộc tính quyết định chính là lớp của đối tượng
cần xếp lớp. Trong ví dụ này thuộc tính quyết định PlayTennis có 2 giá trị là Yes và
No.
1.3 Quan hệ bất khả phân biệt (indiscernibility)
Quan hệ tương đương
Quan hệ nhị phân RX xX sao cho:
- phản xạ (xRx với mọi x)
- đối xứng ( nếu xRy thì ỹ)
- Bắc cầu (nếu xRy và y thì xRz).
Lớp tương đương của phần tử [x]
R
:xX chứa tất cả đối tượng yX sao
cho xRy
Định nghĩa một quan hệ tương đương trên hệ thông tin
Cho một hệ thông tin IS = (U;A), với tập thuộc tính BA có quan hệ tương
đương tương ứng IND
IS
(B) = {(x,x’) U
2
|a B: a(x) = a(x’)}
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 6
IND
IS
(B) được gọi là quan hệ bất khả phân biệt theo B, nếu (x,x’) IND
IS
(B)
thì 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
.
Ví dụ 1.2: Bảng hệ thông tin với PlayTennis là thuộc tính quyết định:
Ta phân hoạch U như sau: Các tập con khác rỗng của thuộc tính điều kiện
là:{Outlook}, {Temp}, {Humidity}, {Wind}, {Outlook, Temp}, {Outlook,
Humidity}, {Outlook, Wind},{Temp, Humidity}, {Temp, Wind},{Humidity, Wind},
{Outlook, Temp, Humidity}, {Outlook, Temp, Wind}, {Outlook, Humidity, Wind},
{Temp, Humidity, Wind}, {Outlook, Temp, Humidity, Wind}.
- IND({Outlook})={{U1, U2, U8, U9, U11},{U2,U7, U12, U13}, {U4, U5, U6,
U10, U14}}
- IND=({ Temp })={{U1, U2, U3, U13}, {U4, U8, U10, U11, U12,U14}, {U5,
U6,U7,U9}}
- IND=({Humidity })={{U1, U2, U3, U4, U8, U12, U14},{U5, U6, U7,U9, U10,
U11, U13}}
- IND=({Wind})={{U1, U3, U4, U5, U8, U9, U10}, {U2, U6, U7, U11, U12,
U13, U14}}
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 7
- IND=({ Outlook, Temp })={{U1,U2},{U3, U13}, {U4, U10, U14}, {U5, U6},
{U7}, {U8, U11}, {U9}, {U12}}
- IND=({ Outlook, Humidity })={{U1, U2, U8},{U3, U12}, {U4, U14}, {U5, U6,
U10}, {U7, U13},{U9, U11}}
1.4 Các quan sát
- Quan hệ tương đương dẫn đến một phân hoạch tập phổquát.
- Có thể dùng các phân hoạch để tạo các tập con mới của tập phổ quát.
- Các tập con thường được quan tâm có cùng giá trị thuộc tính điều kiện.
- Tuy vậy một sốkhái niệm như“Walk” không thể được định nghĩa rõ ràng.
1.5 Xấp xỉ tập hợp
Các tập xấp xỉ là cơ sở để rút ra các kết luận (tri thức) từ cơ sở dữ liệu. Cho hệ
thống thông tin .
Với các tri thức được cho bởi tập thuộc tính B, vấn đề đặt ra là liệu chúng ta có
thể biểu diễn tập các đối tượng V bằng các tri thức có sẵn hay không? Hay nói cách
khác, với tập thuộc tính B cho trước, chúng ta có các lớp tương đương của quan hệ
IND(B), thế thì tập các đối tượng X có thể được diễn đạt thông qua các lớp tương đương
này như thế nào? Trong lý thuyết tập thô, để biểu diễn tập đối tượng V bằng tri thức có
sẵn B người ta xấp xỉ chúng bởi hợp của một số hữu hạn các lớp tương tương của
IND(B). Có 2 cách xấp xỉ đó là B-Xấp xỉ dưới của X, ký hiệu là BX và B-Xấp xỉ trên
của tập X, ký hiệu là
. Các tập xấp xỉ này được định nghĩa như sau:
,
- Tập BX bao gồm tất cả các phần tử của U chắc chắn thuộc vào X
- Tập
bao gồm các phần tử của U có khả năng được phân loại vào những phần
tử thuộc X.
Từ 2 tập xấp xỉ trên và xấp xỉ dưới của X, người ta định nghĩa các tập sau:
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 8
- Vùng B-biên của X:
: , chứa các đối tượng không thể phân
lớp theo B.
- Vùng B-ngoài của X, U -
, chứa các đối tượng chắc chắn được phân lớp không
thuộc về X.
- Một tập được gọi là thô (rough) nếu vùng biên của nó là rỗng, ngược lại tập là
rõ.
Ví dụ: Xét hệ thống thông tin biểu diễn các triệu chứng của cảm cúm như sau:
Gọi tập đối tượng X = {x | Playtennis(x) = yes} = {U3, U4, U5, U7, U9, U10,
U11, U12, U13}
và A={ Outlook, Temp, Humidity }
Ta có các lớp tương đương :
IND=({ Outlook, Temp, Humidity })={{U1,U2}, {U3}, {U4, U14}, {U5,
U6}, {U7}, {U8}, {U9}, {U10}, {U11}, {U12}, {U13}}
Ta có các vùng xấp xỉ
AX={ U3, U7, U9, U10, U11, U12, U13 }
BN
A
(X) = {U4, U5, U6, U14}
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 9
NEG
B
(X) = U - = {U1, U2, U8}
Như vậy lớp quyết định PlayTennis là thô vì vùng biên khác rỗng
1.5.1 Các khái niệm xấp xỉ trong tập thô
1.5.1.1 Xấp xỉ dưới, xấp xỉ trên
Cho bảng quyết định DT = (U, CD) và tập thuộc tính BC, X
U. Xấp xỉ trên và xấp xỉ dưới của tập X tương ứng với B, ký hiệu theo thứ tự là
được định nghĩa như sau:
-
-
Tập hợp BX là tập các đối tượng trong U mà sử dụng các thuộc tính
trong B ta có thể biết chắc chắn chúng là phần tử của X.
Tập hợp X là tập các đối tượng trong U mà sử dụng các thuộc tính
trong B ta chỉ có thể nói rằng chúng có thể là các phần tử của X.
1.5.1.2 Miền biên, Miền ngoài
B-biên của tập X, ký hiệu BN
B
(X), được định nghĩa BN
B
(X) = X
\BX
BN
B
(X) chứa những đối tượng mà sử dụng các thuộc tính trong B ta
không thể xác định được chúng có thuộc X hay không.
B-ngoài của tập X, ký hiệu NEG
B
(X) được định nghĩa NEG
B
(X) = U
\X NEG
B
(X) chứa những đối tượng mà sử dụng các thuộc tính trong B ta biết chắc
chắn chúng không thuộc X .
Hình sau trình bày sự mô tả về tập xấp xỉ và miền
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 10
Hình 1.1 Mô tả về tập xấp xỉ và miền
1.5.1.3 Một số tính chất của xấp xỉ tập hợp:
1.5.1.4 Bốn lớp cơ bản của tập thô
X là có thể xác định thô theo B (roughly B-definable) nếu và chỉ
nếu
.
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 11
X là không thể xác định phía trong theo B (internally B-
underfinable), nếu và chỉ nếu
.
X là không thể xác định phía ngoài theo B(externally B-
underfinable), nếu và chỉ nếu
.
X là hoàn toàn không thể xác định theo B(totally B-undefinable),
nếu và chỉ nếu
.
1.5.1.5 Độ chính xác của xấp xỉ
Tập thô còn có thể đặc trưng hóa dưới hình thức hình thức số bằng hệ
số phản ánh độ chính xác của xấp xỉ:
,
Trong đó
biểu diễn số phần tử của tập .
Rõ ràng ta có
.
Nếu
. X là rõ theo B (X là chính xác theo B), ngược lại, nếu
, X là thô theo B (X là gần đúng theo B).
1.5.1.6 Các rút gọn
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.
Thường có nhiều tập con như thếvà tập con nhỏ nhất được gọi là rút
gọn(reducts).
1.5.1.7 Phụ thuộc thuộc tính trong hệ thông tin
Giả sử D và C là các tập con của A, ta nói rằng D phụ thuộc vào C với
mức k (k [0, ,1]) biểu thị C =>
k
D nếu như:
k=
),( Dc
=
||
|)(|
U
DPos
C
, với Pos
C
(D) =
DUx /
C(X)
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 12
Được gọi là một C - vùng dương của phân hoạch U/D đối với C, là tập
tất cả các phần tử của U mà có thể được phân loại duy nhất thành khối của phân hoạch
U/D với các thành phần thuộc tính trong C.
),( Dc
=
DUx /
||
|)(|
U
XC
Nếu k = 1 ta nói là D phụ thuộc hoàn toàn vào C và nếu k < 1, ta nói là
D phụ thuộc một phần vào C.
Hệ số k diễn tả tỷ lệ của các thành phần trong tập tổng thể, với sự phân
loại thành khối của phân hoạch U/D, các thuộc tính sử dụng trong C gọi là mức phụ
thuộc.
1.5.2 Tập thuộc tính rút gọn và tập thuộc tính lõi
Reduct là tập nhỏ nhất trong tập các thuộc tính điều kiện nhưng có khả
năng phân lớp như toàn bộ thuộc tính. Điều đó có nghĩa là: thay vì ta phải xét tất cả các
thuộc tính điều kiện để có thể rút ra được quyết định, thì ta chỉ xét các thuộc tính điều
kiện đặc trưng nhất mà không làm ảnh hưởng gì đến quyết định cuối cùng.
Điều này làm giảm khối lượng xem xét thuộc tính điều kiện và ta sẽ phát
hiện ra các thuộc tính điều kiện dư thừa.
Thông tin trong các hệ thống có thể dư thừa, các dư thừa có thể xảy ra:
Trường hợp 1: Các đối tượng giống nhau theo một tập thuộc tính đang
quan tâm được lặp lại nhiều lần.
Trường hợp 2: Một số thuộc tính có thể bỏ đi mà thông tin chúng ta đang
quan tâm do bảng quyết định cung cấp vẫn không bị mất mát.
Với trường hợp 1: Khái niệm lớp tương đương cho ta tiếp cận tinh giảm
thông tin cần lưu trữ trong một hệ thông tin. Ta chỉ cần sử dụng một đối tượng để đại
diện cho mỗi lớp tương đương.
Với trường hợp 2: Chỉ giữ lại những thuộc tính bảo toàn quan hệ bất khả
phân biệt, do đó bảo toàn khả năng xấp xỉ tập hợp trong một hệ thông tin.
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 13
1.5.2.1 Rút gọn và lõi:
Tập thuộc tính R € C được gọi là một rút gọn của C nếu DT’=(U, R D)
là độc lập và POSR(D ) = POSC(D ).
Một tập rút gọn là một tập con các thuộc tính duy trì các đặc tính cơ bản
của tập dữ liệu gốc; do đó các thuộc tính không thuộc về một tập rút gọn là không cần
thiết đối với sự phân loại các phần tử của tập vũ trụ.
Tập tất cả các thuộc tính cần thiết trong DT kí hiệu: CORE(C). Khi đó,
CORE(C) = ∩RED(C) Với RED(C): Là tập tất cả các rút gọn của C.
1.5.3 Ma trận phân biệt
Cho T = (U,C,D) là bảng quyết định với U là các đối tượng trong bảng
Ma trận bất khả phân biệt của T được kí hiệu là M(T) là ma trận đối xứng
nn với các phần tử M
ij
được định nghĩa như sau:
)]()([
)]()([)}()(:{
ji
jiji
ududDdif
ududDdifucucCc
Mij
Với i,j = 1,2,…,n sao cho u
i
hay u
j
thuộc về vùng C-dương của D
M
ij
là tập tât cả thuộc tính điều kiện để phân lớp các đối tượng u
i
và u
j
vào
các lớp khác nhau.
Giá trị hàm ý cặp đối tượng u
i
và u
j
không phân biệt trên tập
thuộc tính
quyết định D
Ví dụ 1.8: Xét bảng quyết định sau
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 14
Trong đó tập thuộc tính điều kiện C = { Outlook, Temp, Humidity, Wind
} và tập thuộc tính quyết định D = {PlayTennis}.
Ta có ma trận phân biệt được tương ứng (là ma trận đối xứng nên ta chỉ
cần xác định nửa ma trận dưới):
Bảng 1.6 Ma trận phân biệt của hệ thông tin trong Bảng trên
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 15
CHƯƠNG 2 THUẬT TOÁN CSD
Thuật toán CSD (Classification Set Degree) dựa vào mức độ phân lớp thô để làm
tiêu chí chọn thuộc tính để tạo cây quyết định, được định nghĩa:
Trong đó:
, C là tập thuộc tính điều kiện và D là tập thuộc tính quyết định.
Mỗi
là một lớp quyết định thứ i của tập U
mức độ phụ thuộc của tập thuộc tính D vào C
thể hiện tổng độ chính xác phân lớp của thuộc tính C cho mỗi
thuộc tính quyết định.
Về cơ bản thuật toán tạo cây quyết định dựa vào CSD(a, C, D) lớn nhất để làm
tiêu chí phân chia nút.
Thuật toán tạo cây quyết định dựa vào CSD như sau:
Đầu vào: tập học S, tập thuộc tính
Đầu ra: cây quyết định
Bước 1: Tạo nút N cho cây quyết định
Bước 2: Nếu tập tất cả các mẫu học của D có giá trị C, trả về cây có một nút duy
nhất là nút gốc với nhãn C.
Bước 3: Nếu tập thuộc tính attribute_list là null thì trả về nút N với nhãn phổ biến
nhất trong tập học
Bước 4: Tính xấp xỉ trên và xấp xỉ dưới cho mỗi thuộc tính trong attribute_list.
Nếu xấp xỉ dưới là null, thì CSD(a, C, D) = 0.
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 16
Bước 5: Tính mức độ phân lớp thô CSD(a, C, D) của mỗi thuộc tính attribute_list.
Chọn thuộc tính best_attribute có CSD(a, C, D) lớn nhất trong tập thuộc tính
attribute_list.
Bước 6: Đánh dấu nút N có nhãn là thuộc tính best_attribute được chọn từ bước 5.
Bước 7: Với mỗi giá trị v thuộc best_attribute
Đặt S
i
là tập dữ liệu của tập S với giá trị best_attribute là v
i
Nếu S
i
là rỗng, thêm nút lá có nhãn là lớp nhãn phổ biến nhất
Ngược lại, thêm nút được trả về từ việc gọi đệ quy thuật toán trên với tập học
S
i
, attribute_list – best_attribute
Bước 8:
Điều kiện dừng của thuật toán:
Tất cả các đối tượng của tập học tại một bước tạo cây có cùng nhãn (bước 2)
Tập thuộc tính còn lại để để tạo cây quyết định là rỗng (bước 3)
Không có tập học S
i
thỏa mãn giá trị best_attribute là a
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 17
CHƯƠNG 3 THUẬT TOÁN DTCRSCR
Thuật toán DTCRSCR (Decision Tree Construction based on Rough Set Theory
under Characteristic Relation) dựa vào trọng số thô (weighted mean roughness) để
làm tiêu chí chọn thuộc tính để tạo cây quyết định, được định nghĩa:
Trong đó:
, C là tập thuộc tính điều kiện và D là tập thuộc tính quyết định.
Mỗi
là một lớp quyết định thứ i của tập U.
là độ chính xác xấp xỉ của thuộc tính C trong tập X
i
.
Về cơ bản thuật toán tạo cây quyết định dựa vào
nhỏ nhất để làm tiêu
chí phân chia nút.
Thuật toán tạo cây quyết định dựa vào DTCRSCR như sau:
Đầu vào: tập học S, tập thuộc tính điều kiện, thuộc tính quyết định
Đầu ra: cây quyết định
Bước 1: Tương ứng với tập học S, tính xấp xỉ trên và xấp xỉ dưới cho mỗi thuộc
tính điều kiện tương ứng với mỗi phân hoạch X
i
của của tập thuộc tính quyết định.
Sau đó, tính trọng số thô
của mỗi thuộc tính điều kiện.
Bước 2: Chọn thuộc tính best_attribute có trọng số thô
nhỏ nhất là
thuộc tính phân chia nút.
Bước 3: Với mỗi giá trị v thuộc best_attribute
Đặt S
i
là tập dữ liệu của tập S với giá trị best_attribute là v
i
Nếu S
i
là rỗng, thêm nút lá có nhãn là lớp nhãn phổ biến nhất
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 18
Ngược lại, thêm nút được trả về từ việc gọi đệ quy thuật toán trên với tập học
S
i
, attribute_list – best_attribute
Bước 4: Điều kiện dừng của thuật toán:
Tất cả các đối tượng của tập học tại một bước tạo cây có cùng nhãn (bước 2)
Tập thuộc tính còn lại để để tạo cây quyết định là rỗng (bước 3)
Không có tập học S
i
thỏa mãn giá trị best_attribute là a
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 19
CHƯƠNG 4 CÀI ĐẶT VÀ THỬ NGHIỆM
Các thuật toán được cài đặt trong chương trình:
Thuật toán ID3 tạo cây quyết định dựa trên độ lợi thông tin
Thuật toán CSD tạo cây quyết định dựa trên tập thô
Thuật toán DTCRSCR tạo cây quyết định dựa trên tập thô
Thuật toán thu gọn thuộc tính Quick Reduct
Chương trình được cài đặt như sau:
Ngôn ngữ và thư viện
Dùng ngôn ngữ lập trình F# để cài đặt phần lõi của các thuật toán
Dùng ngôn ngữ lập trình C# để tạo giao diện của chương trình
Dùng thư viên GraphViz để vẽ cây quyết định.
Công cụ: Visual Studio 2012, .NET Framework 4.5
Môi trường: Windows 8 với cấu hình CPU Core i5, RAM 8G
Chú ý: Các thuật toán sau được viết theo phong cách lập trình
hàm bằng F# thay vì viết theo phong cách lập trình khai báo
4.1 Cài đặt tập thô
Tập tin RoughSet.fs: định nghĩa kiểu dữ liệu tập thô với các thao tác cơ bản: tính
xấp xỉ, tính miền dương, tính độ chính xác xấp xỉ, tính độ phụ thuộc ….
namespace DataMining
open System
open System.Collections
/// <summary>
/// Tập thô
/// </summary>
/// <param name="infoSys">Hệ quyết định</param>
/// <param name="indiscernibilityRelation">Quan hệ bất khả phân biệt</param>
type RoughSetBase(infoSys: DecisionSystem, indiscernibilityRelation) =
member v.IS = infoSys
member v.IndiscernibilityRelation = indiscernibilityRelation
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 20
/// <summary>
/// Lớp phân biệt
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="universe">Tập dữ liệu U</param>
/// <param name="x">Đối tượng x</param>
member v.IndiscernibilityClass (B: seq<int>) (universe: seq<string array>) (x:
string array)=
universe
|> Seq.where (fun (y: string array) ->
v.IndiscernibilityRelation x y B
)
/// <summary>
/// Không gian thương
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.QuotientSpace (B: seq<int>) (universe: seq<string array>) =
universe
|> Seq.map (v.IndiscernibilityClass B universe)
/// <summary>
/// Xấp xỉ dưới của X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.LowerApproximation (B: seq<int>) (X: seq<_>) (universe: seq<string
array>) =
let setX = Set.ofSeq X
v.QuotientSpace B universe
|> Seq.where (fun ec ->
let setEc = Set.ofSeq ec
Set.isSubset setEc setX
)
|> Seq.fold (fun x ec -> Set.union x (Set.ofSeq ec)) (set [])
|> Set.toSeq
/// <summary>
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 21
/// Xấp xỉ trên của X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.UpperApproximation (B: seq<int>) (X: seq<_>) (universe: seq<string
array>) =
let setX = Set.ofSeq X
v.QuotientSpace B universe
|> Seq.where (fun ec ->
ec
|> Set.ofSeq
|> Set.intersect setX
|> Set.isEmpty
|> (not)
)
|> Seq.fold (fun x ec -> Set.union x (Set.ofSeq ec)) (set [])
|> Set.toSeq
/// <summary>
/// Vùng biên của X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.BoundaryRegion (B: seq<int>) (X: seq<_>) (universe: seq<string array>) =
let setUpperX = universe |> v.UpperApproximation B X |> Set.ofSeq
let setLowerX = universe |> v.LowerApproximation B X |> Set.ofSeq
(setUpperX - setLowerX) |> Set.toSeq
/// <summary>
/// Miền ngoài của X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.Outside (B: seq<int>) (X: seq<_>) (universe: seq<string array>) =
let setU = universe |> Set.ofSeq
let setUpperX = universe|> v.UpperApproximation B X |> Set.ofSeq
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 22
(setU - setUpperX) |> Set.toSeq
/// <summary>
/// Hàm liên thuộc của x thuộc X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="x">Đối tượng x thuộc X</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.MembershipFunction (B: seq<int>) (x: string array) (X: seq<_>) (universe:
seq<string array>)=
let cardxnX =
v.IndiscernibilityClass B universe x
|> Set.ofSeq
|> Set.intersect (Set.ofSeq X)
|> Set.count
let cardx =
v.IndiscernibilityClass B universe x
|> Seq.length
(double)cardxnX/(double)cardx
/// <summary>
/// Hàm thông tin để lấy tập giá trị của attribute trong tập dữ liệu universe
/// </summary>
/// <param name="attribute">Thuộc tính </param>
/// <param name="universe">Tập dữ liệu U</param>
member v.InformationFunction (attribute: int) (universe: seq<string array>) =
attribute |> v.IsDecisionAttribute
universe
|> Seq.map (fun x -> x.[attribute])
|> Seq.distinct
/// <summary>
/// Hạng của thuộc tính
/// </summary>
/// <param name="attribute">Thuộc tính </param>
member v.Rank (attribute: int) =
v.InformationFunction attribute v.IS.Universe
|> Set.ofSeq
Tìm hiểu về lý thuyết tập thô và tạo cây quyết định
2014
Trần Cảnh Khánh - CH1301093 Trang 23
|> Set.count
/// <summary>
/// Kiểm tra tính rõ của tập X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.IsCrisp (B: seq<int>) (X: seq<_>) (universe: seq<string array>) =
universe
|> v.BoundaryRegion B X
|> Set.ofSeq
|> Set.isEmpty
/// <summary>
/// Kiểm tra tính thô của tập X trên tập thuộc tính B
/// </summary>
/// <param name="B">Tập thuộc tính B</param>
/// <param name="X">Tập dữ liệu X</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.IsRough (B: seq<int>) (X: seq<_>) (universe: seq<string array>) =
universe |> v.IsCrisp B X |> not
/// <summary>
/// Hàm phân hoạch U/R(d)
/// </summary>
/// <param name="d">Thuộc tính quyết định d</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.PartitionFn (d: int) (universe: seq<string array>) =
fun vd ->
universe
|> Seq.where (fun (x: string array) -> x.[d] = vd)
/// <summary>
/// Miền dương của X trên tập thuộc tính C
/// </summary>
/// <param name="C">Tập thuộc tính điều kiện C</param>
/// <param name="D">Tập thuộc tính quyết định D</param>
/// <param name="universe">Tập dữ liệu U</param>
member v.PositiveRegion (C: seq<int>, D: seq<int>, universe: seq<string array>) =
D