… Vấn đề tự động kết luận về sự xác định tổng quát nhất của một vài khái niệm, các ví dụ cho trước được ghi nhãn có phải là bộ phận của khái niệm hay không, nhiệm vụ đó thường được xem n
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CAO HỌC CÔNG NGHỆ THÔNG TIN QUA MẠNG
KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU
BÀI THU HOẠCH:
NGHIÊN CỨU VÀ CÀI ĐẶT CÁC THUẬT
TOÁN PHÂN LỚP DỮ LIỆU
Trang 2Xin chân thành cám ơn gia đình và bạn bè đã ủng hộ, giúp đỡ và động viên emtrong thời gian học tập và nghiên cứu.
Mặc dù đã cố gắng hoàn thành bài luận nhưng chắc chắn không tránh khỏi thiếusót Em kính mong nhận được sự thông cảm và tận tình chỉ bảo của quý thầy cô
Học viên thực hiệnHuỳnh Tuấn AnhTpHCM, 08/2012
Mục Lục
Trang 3Lời cám ơn 2
Chương 1: THUẬT TOÁN FIND-S 4
1 HỌC KHÁI NIỆM VÀ BÀI TOÁN CỤ THỂ 4
2 THUẬT TOÁN FIND – S: TÌM MỘT GIẢ THUYẾT ĐẶC THÙ NHẤT 6
3 CÀI ĐẶT CHƯƠNG TRÌNH 7
4 HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH 10
5 MỘT SỐ VÍ DỤ VÀ KẾT QUẢ CHƯƠNG TRÌNH 11
Chương 2: THUẬT TOÁN ID3 1
1 MÔ TẢ CHUNG THUẬT TOÁN ID3 VÀ BÀI TOÁN 1
2 THUẬT TOÁN ID3 VÀ CƠ SỞ LÝ THUYẾT 2
3 CÀI ĐẶT CHƯƠNG TRÌNH 8
4 HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH 15
5 MỘT SỐ VÍ DỤ VÀ KẾT QUẢ CHƯƠNG TRÌNH 16
Chương 3: THUẬT TOÁN CANDIDATE ELIMINATION 24
1 MÔ TẢ THUẬT TOÁN 24
2 CÀI ĐẶT THUẬT TOÁN 25
2.1 Hướng dẫn sử dụng chương trình: 25
2.2 Cài đặt thuật toán: 27
2.3 Chạy thử trên một số tập ví dụ huấn luyện: 30
TÀI LIỆU THAM KHẢO 34
Trang 4Chương 1: THUẬT TOÁN FIND-S
1 HỌC KHÁI NIỆM VÀ BÀI TOÁN CỤ THỂ
Theo Tom M.Mitchell: “Nhiều vấn đề học đòi hỏi các khái niệm tổng quát thu được từ các ví dụ huấn luyện … Vấn đề tự động kết luận về sự xác định tổng quát nhất của một vài khái niệm, các ví dụ cho trước được ghi nhãn có phải là bộ phận của khái niệm hay không,
nhiệm vụ đó thường được xem như là học khái niệm.”
- “Học khái niệm là đưa ra một hàm boolean từ tập input và putput của các ví dụ
huấn luyện” (Tom M.Mitchell – Machine Learning)
Ví dụ:
o (Input) Các ví dụ huấn luyện:
Tập các animal cùng thuộc tính của nó
o (Output) Khái niệm được trích ra:
1.2 Bài toán cụ thể
- (Input) Tập ví dụ huấn luyện gồm 4 cá thể sau:
o Tập này nói về những ngày (như thế nào đó) mà Aldo thích chơi môn
thể thao dưới nước của anh ta (Table 2.1 – Positive and negative
training examples gor thw target concept EnjoySport, Machine Learning
– Tom M.Mitchell, 2003).
Bảng 1.1 – Các ví dụ huấn luyện thuộc và không thuộc khái niệm đích EnjoySport
Trang 5- (Output) Khái niệm được học: “EnjoySport”
o Ví dụ trên: tập cá thể = tập ngày, mỗi ngày có 6 thuộc tính.
- Khái niệm đích (target concep)
o Khái niệm (hàm) được học.
o Ký hiệu: c
c: X {0,1}
Ví dụ trên: c(X) = 1 nếu EnjoySport = Yes
Ví dụ trên: c(X) = 0 nếu EnjoySport = No
o Cho trước tập ví dụ huấn luyện.
o Đưa ra giả thiết về sự phân loại tập cá thể: h(X) = c(X)
Trang 61.5 Thứ tự các giả thiết
- Các giả thiết trong không gian đều có thứ tự
- Có thể sắp xếp theo dạng: Tổng quát cụ thể
- Thứ tự:
o hj và hk là hai giả thiết.
o hj được nó là tổng quát hơn hay bằng hk nếu và chỉ nếu:
2 THUẬT TOÁN FIND – S: TÌM MỘT GIẢ THUYẾT ĐẶC THÙ NHẤT
2.1 Thuật toán Find-S
1 h = giả thiết cụ thể nhất trong H.
2 Với mỗi x Є tập ví dụ huấn luyện, mà c(X) = 1
o Với mỗi ràng buộc a i trong h
IF a i thoả bởi x THEN do nothing ELSE
thay a i bởi ràng buộc tổng quát hơn kế tiếp mà nó được thoả bởi x
3 Xuất ra h.
2.2 Áp dụng thuật toán với ví dụ huấn luyện mục 1.2:
- h < ∅ , ∅ , ∅ , ∅ , ∅ , ∅ >
- Cá thể 1 (positive):
<Sunny, Warm, Normal, Strong , Warm , Same >
o h <Sunny, Warm, Normal, Strong , Warm , Same >
- Cá thể 2 (positive):
<Sunny, Warm, High, Strong , Warm , Same >
Trang 7o h <Sunny, Warm, ?, Strong , Warm , Same >
- Cá thể 3 (negative): h không đổi
- Cá thể 4 (positive):
<Sunny, Warm, High, Strong , Cold , Change >
o h <Sunny, Warm, ?, Strong , ? , ? >
- OUTPUT: <Sunny, Warm, ?, Strong , ? , ? >
3 CÀI ĐẶT CHƯƠNG TRÌNH
3.1 Ngôn ngữ lập trình, biến môi trường, các thư viện được sử dụng
- Thuật toán Find-S được viết bằng ngôn ngữ Maple (dùng Maple 12), sau đó đóng gói lạithành môt thư viện và lưu vào thư mục “C:\Find-S\”
- Chương trình được viết hoàn chỉnh dưới dạng thể hiện form liên kết bên dưới với package đã được tạo ra ở trên, bằng ngôn ngữ Java (dùng NetBeans IDE 6.5)
- Biến môi trường:
o Mục đích: kết nối Maple với Java
o Cách đặt biến môi trường:
Click chuột phải vào My computer, chọn Properties
Trong hộp thoại mới hiện ra, chọn tiếp Advanced System Setting nếu là Win Vista hoặc Win 7, Win XP thì chọn Advanced
Trong hộp thoại System Properties, chọn Environment Variables…
Trong bảng System Variables, chọn Path trong phần Variables, rồi bấm Edit
Trong hộp thoại Edit System Variable, thêm dòng sau vào mục Variable value “C:\Program Files\Maple 12\bin.win” Lưu ý: ngăn cách giữa các Variable value là các dấu “;”
Bấm chọn OK (hoặc Apply) để đồng ý thay đổi
Khởi động lại máy
- Một số thư viện đặc biệt được sử dụng:
o com.maplesoft.openmaple.* : import các lớp OpenMaple của Java.
o com.maplesoft.externalcall.MapleException : import lớp MapleException.
Trang 8Ngoài ra, chương trình còn sử dụng Maple Engine, engine này có chức năng kết nối với Maple để thực hiện các lệnh trong Maple.
3.2 Cấu trúc, chức năng các tập tin cài đặt và tập tin training examples
3.2.2 Các tập tin training examples:
Cấu trúc chung của các tập tin training examples dạng txt là:
- Mỗi dòng là một mô tả chi tiết các thuộc tính của một cá thể trong tập cá thể, mỗi thuộc tính cách nhau ít nhất một khoảng trắng hoặc một tab Mỗi thuộc tính có một số giá trị hữu hạn Cuối cùng là khái niệm đích
- Thứ tự giá trị cho mỗi thuộc tính trong ví dụ đó được nhập tương ứng Tên tập tin, thuộctính và các giá trị không chấp nhận các giá trị đặc biệt như: `, ~, &, (, ), !, #,%, ^, -, \, |, {, }, [, ], ;, có thể chấp nhận ký tự gạch dưới
3.3 Nội dung các hàm chính và các tham số có liên quan
- Trong Java, tập tin Main.java:
o public Main() throwMapleException:
Khởi tạo Maple Engine với Java
Đồng thời đặt Table không có Header
o void jButton2ActionPerformed(java.awt.event.ActionEvent evt):
Sự kiện của button Show Version Space, hiển thị những giả thiết phù hợpvới Training Examples
Gọi ShowMaximallySpecificHypothesis()
o void jButton3ActionPerformed(java.awt.event.ActionEvent evt):
Sự kiện của button ReadFromFile
Trang 9o void jButton4ActionPerformed(java.awt.event.ActionEvent evt):
Sự kiện button Create Table
Tạo bảng với số dòng và số cột được cho trong jTextField1 ColunmCount và jTextField2 RowCount
o void ShowMaximallySpecificHypothesis()
Hiển thị Maximally Specific Hypothesis lên jTextArea1
Thực hiện hàm FindS của package FindSAlgorithm bằng Maple với tập
ví dụ huấn luyện đưa vào là D, sau đó lấy kết quả Maximally Specific Hypothesis trả về hiển thị lên jTextArea1 Maximally Specific Hypothesistrong form Chuỗi S chứa tập ví dụ từ D[1] đến D[i], nhằm hiển thị kết quả theo từng bước thực hiện giải thuật
- Trong Maple, tập tin Find-S.mw:
+ Finding maximally specific hypothesis consistent with the training examples D
FindS:=proc(D::list)
h: kết quả trả về
x: danh sách lưu mỗi ví dụ, không bao gồm giá trị phân loại
cx: bằng 1 nếu giá trị của thuộc tính phân loại là positive, bằng 0 nếu là negative
Đối với mỗi ràng buộc trên thuộc tính trong h
for i from 1 to nops(h) do
Nếu x thỏa ràng buộc trên thuộc tính trong h thì không làm gì cả
if h[i]=x[i] or h[i]=`?` then
Trang 10for i from 1 to nops(h) do
if h[i]=`?` or h[i]=x[i] then
- Đặt biến môi trường như mục 3.1
- Tạo thư mục Find-S tại thư mục gốc ổ đĩa C (tức là thư mục Find-S có đường dẫn như sau “C:\Find-S\”) Sau đó chạy tập tin Find-S.mw với phần mềm Maple để đóng gói thuật toán thành package lưu vào thư mục vừa tạo ở trên
- Chạy project Find-S với NetBeans Giao diện chương trình như sau:
Trang 11- Có thể tạo tập ví dụ huấn luyện bằng một trong hai cách sau:
o Tạo mới một Table: bằng cách nhập số cột (vào mục Column Count) và số dòng
(vào mục Row Count) rồi bấm nút Create Table
o Bấm nút Read From File để load tập tin Training Examples sẵn có với cấu trúc
giống như mô tả trong mục 3.2.2
- Bấm nút Show để hiện thị các giả thiết đặc thù nhất từ tập ví dụ huấn luyện
5 MỘT SỐ VÍ DỤ VÀ KẾT QUẢ CHƯƠNG TRÌNH
5.1 EnjoySport training examples:
- TrainingExample1.txt
- Hiển thị Maximally Specific Hypothesis theo từng bước tính toán:
h1 = [Sunny, Warm, Normal, Strong, Warm, Same]
Trang 12h2 = [Sunny, Warm, `?`, Strong, Warm, Same]
h3 = [Sunny, Warm, `?`, Strong, Warm, Same]
h4 = [Sunny, Warm, `?`, Strong, `?`, `?`]
Kết quả thuật toán chính xác với phần áp dụng thuật toán cho ví dụ huấn luyện mục 2.2
- Phân lớp một New Instance mới:
x:= [Sunny,Cold,Low,Strong,Warm,Same]
Kết quả x thuộc lớp: Negative5.2 Sunburned training examples:
- TrainingExample2.txt
- Hiển thị Maximally Specific Hypothesis theo từng bước tính toán:
Trang 13Kết quả x thuộc lớp: Positive5.3 Auto training examples:
- TrainingExample3.txt
- Hiển thị Maximally Specific Hypothesis theo từng bước tính toán:
h1 = [Japan, Honda, Blue, `1980`, Sedan]
h2 = [Japan, Honda, Blue, `1980`, Sedan]
h3 = [Japan, `?`, Blue, `?`, Sedan]
h4 = [Japan, `?`, Blue, `?`, Sedan]
Trang 14Chương 2: THUẬT TOÁN ID3
1 MÔ TẢ CHUNG THUẬT TOÁN ID3 VÀ BÀI TOÁN
1.1 Thuật toán ID3
Thuật toán học quy nạp (inductive learning algorithm) cây quyết định ID3 là một thuật toán được sử dụng rộng rãi trong số nhiều thuật toán được đưa ra theo tiếp cận học dựa trên ký hiệu biểu diễn vấn đề dưới dạng các ký hiệu (symbol-based learning)
Thuật toán học quy nạp cây ID3 (gọi tắt là ID3) là một thuật toán học đơn giản nhưng tỏ ra thành công trong nhiều lĩnh vực ID3 là một thuật toán hay vì cách biểu diễn tri thức học được của
nó, tiếp cận của nó trong việc quản lý tính phức tạp, Heuristic của nó dùng cho việc chọn lựa các khái niệm ứng viên và tiềm năng của nó đối với việc xử lý dữ liệu nhiễu
ID3 biểu diễn các khái niệm ở dạng các cây quyết định Biểu diễn này cho phép chúng ta xác định phân loại của một đối tượng bằng cách kiểm tra các giá trị của nó trên một số thuộc tính nào đó
Như vậy, nhiệm vụ của thuật toán ID3 là học cây quyết định từ một tập các ví dụ huấn luyện(training examples) hay còn gọi là dữ liệu huấn luyện Hay nói khác hơn, thuật toán có:
- Đầu vào: Một tập hợp các ví dụ Mỗi ví dụ bao gồm các thuộc tính mô tả một tình huống, hay một đối tượng nào đó, và một giá trị phân loại của nó
- Đầu ra: Cây quyết định có khả năng phân loại đúng đắn các ví dụ trong tập dữ liệu huấn luyện, cũng như đối với các ví dụ khác
1.2 Xét một bài toán phân loại cụ thể
Xét bài toán phân loại xem “có đi chơi Tennis” (PlayTennis) ứng với một điều kiện nào đó hay không? Thuật toán ID3 sẽ học cây quyết định từ tập hợp các ví dụ huấn luyện
sau (Table 3.2 – Training examples for target concept PlayTennis, Machine Learning –
Tom M.Mitchell, 2003):
Trang 15Day Outlook Temp Humidity Wind PlayTennis
Bảng 1.1 – Tập dữ liệu huấn luyện cho khái niệm “PlayTennis”
Tập dữ liệu này bao gồm 14 ví dụ Mỗi ví dụ biểu diễn cho điều kiện thời tiết gồm các thuộctính Outlook (quang cảnh), Temp (nhiệt độ), Humidity (độ ẩm) và Wind (gió); và đều có một thuộc
tính phân loại PlayTennis (Yes, No), còn được gọi là thuộc tính đích “No” nghĩa là không đi chơi
Tennis ứng với thời tiết đó, “Yes” nghĩa là ngược lại Giá trị phân loại ở đây chỉ có hai loại (Yes, No)
Mỗi thuộc tính đều có một tập các giá trị hữu hạn Thuộc tính Outlook có ba giá trị
(Overcast, Rain, Sunny), Temp có ba giá trị (Hot, Cool, Warm), Humidity có hai giá trị (High, Normal) và Wind có hai giá trị (Strong, Weak) Các giá trị này chính là ký hiệu (symbol) dùng để biểu diễn bài toán
2 THUẬT TOÁN ID3 VÀ CƠ SỞ LÝ THUYẾT
Quinlan (1983) là người đầu tiên đề xuất việc sử dụng lý thuyết thông tin để tạo ra các cây quyết định và công trình của ông là cơ sở cho phần trình bày ở đây Lý thuyết thông tin của
Shannon (1948) cung cấp khái niệm Entropy để đo tính thuần nhất (hay ngược lại là độ pha trộn) của một tập hợp Một tập hợp là thuần nhất nếu như tất cả các phần tử của tập hợp đều thuộc cùng một loại, và khi đó ta nói tập hợp này có độ pha trộn là thấp nhất Trong trường hợp của tập ví dụ, thì tập ví dụ là thuần nhất nếu như tất cả các ví dụ đều có cùng giá trị phân loại
Trang 16Khi tập ví dụ là thuần nhất thì có thể nói: ta biết chắc chắn về giá trị phân loại của một ví dụ thuộc tập này, hay ta có lượng thông tin về tập đó là cao nhất Khi tập ví dụ có độ pha trộn cao nhất,nghĩa là số lượng các ví dụ có cùng giá trị phân loại cho mỗi loại là tương đương nhau, thì khi đó ta không thể đoán chính xác được một ví dụ có thể có giá trị phân loại gì, hay nói khác hơn, lượng thông tin ta có được về tập này là ít nhất Vậy, ta cần chọn thuộc tính để hỏi sao cho có thể chia tập
ví dụ ban đầu thành các tập ví dụ thuần nhất càng nhanh càng tốt Vậy trước hết, ta cần có một phép
đo để đo độ thuần nhất của một tập hợp, từ đó mới có thể so sánh tập ví dụ nào thì tốt hơn
2.1 Entropy đo tính thuần nhất của tập ví dụ
Khái niệm entropy của một tập S được định nghĩa trong Lý thuyết thông tin là số lượng mong đợi các bít cần thiết để mã hóa thông tin về lớp của một thành viên rút ra một cách ngẫu nhiên từ tập S Trong trường hợp tối ưu, mã có độ dài ngắn nhất Theo lý thuyết thông tin, mã có độ
dài tối ưu là mã gán –log2p bits cho thông điệp có xác suất là p.
Trong trường hợp S là tập ví dụ, thì thành viên của S là một ví dụ, mỗi ví dụ thuộc một lớp hay có một giá trị phân loại
Entropy có giá trị nằm trong khoảng [0 1],
Entropy(S) = 0 tập ví dụ S chỉ toàn ví dụ thuộc cùng một loại, hay S là thuần nhất
Entropy(S) = 1 tập ví dụ S có các ví dụ thuộc các loại khác nhau với độ pha trộn là cao nhất
0 < Entropy(S) < 1 tập ví dụ S có số lượng ví dụ thuộc các loại khác nhau là không bằng
nhau
Để đơn giản ta xét trường hợp các ví dụ của S chỉ thuộc loại âm (-) hoặc dương (+)
Hình 3.4 minh họa sự phụ thuộc của giá trị entropy vào xácsuất xuất hiện của ví dụ dương
Trang 17• p+ là phần các ví dụ dương trong tập S
• p_ là phần các ví dụ âm trong tập S
Khi đó, entropy đo độ pha trộn của tập S theo công thức sau:
Entropy(S) = - p + log 2 p + - p - log 2 p
-Một cách tổng quát hơn, nếu các ví dụ của tập S thuộc nhiều hơn hai loại, giả sử là có c giá trị phân loại thì công thức entropy tổng quát là:
Entropy(S) = ∑
i=1
c
−p I log 2 p i
2.2 Lượng thông tin thu được đo mức độ giảm entropy mong đợi
Entropy là một số đo đo độ pha trộn của một tập ví dụ, bây giờ chúng ta sẽ định nghĩa một phép đo hiệu suất phân loại các ví dụ của một thuộc tính Phép đo này gọi là lượng thông tin thu được, nó đơn giản là lượng giảm entropy mong đợi gây ra bởi việc phân chia các ví dụ theo thuộc tính này
Một cách chính xác hơn, Gain(S,A) của thuộc tính A, trên tập S, được định nghĩa như sau:
Gain (S,A) = Entropy (S) - ∑
v∈Values(A)
|Sv|
S Entropy (Sv) trong đó Values(A) là tập hợp có thể có các giá trị của thuộc tính A, và Sv là tập con của S chứa các ví dụ có thuộc tính A mang giá trị v
2.3 Áp dụng cụ thể cho ví dụ huấn luyện ở Bảng 1.1
- Bước 1: cây cho S
o Gain(S, Outlook) = 0.246
o Gain(S, Humidity) = 0.151
o Gain(S, Wind) = 0.048
o Gain(S, Temperature) = 0.029
Outlook : thuộc tính phân loại tốt nhất tại bước này
Outlook: root node
Cây như sau:
Trang 18- Bước 2: Cây cho Ssunny
o Ssunny={D1,D2,D8,D9,D11}
o Gain(Ssunny, Humidity) = 0.97- (3/5)0.0 – (2/5)0.0 = 0.97
o Gain(Ssunny, Wind) = 0.97 – (2/5)1.0 –(3/5)0.918 = 0.019
o Gain(Ssunny, Temperature) = 0.97-(2/5)0.0-(2/5)1.0-(1/5)0.0=0.57
Humidity : thuộc tính phân loại tốt nhất tại bước này
Humidity: root của Ssunny
Cây như sau:
Trang 19- Bước 3: Cây cho S rain
o S rain ={D4,D5,D6,D10,D14}
Kết quả:
Trang 20- Điều kiện dừng:
o Mọi nút là đều nằm vào 1 trong hai trường hợp:
1 Tất cả các thuộc tính đều đã nằm trên node thuộc con đường từ root đến lá đó
2 Node lá có entropy = 0
Entropy=0, Tất cả cá thể đều + Phân loại Yes
Entropy=0, Tất cả cá thể đều - Phân loại No
2.4 Thuật toán ID3
- Tạo node gốc cho cây
- if tất cả các cá thể là positive then trả về cây chỉ có node, nhãn là +
- if tất cả các cá thể là negative then trả về cây chỉ có node, nhãn là –
- if Attributes trống then trả về cây chỉ có 1 node, nhãn là giá trị chung nhất của
Target_Attribute trong tập cá thể
- else: Begin
o A Thuộc tính từ Attributes tốt nhất phân loại tập cá thể.
o Thuộc tính cho root là A (root A)
o For each trị Vi của A:
Thêm 1 nhánh mới dưới root, tương ứng A = Vi
ExamplesVi = tập con các cá thể thuộc Examples có A=Vi
if ExamplesVi trống:
then dưới nhánh mới này, thêm 1 node lá có nhãn = trị chung nhất
của Target_Attribute trong Examples
else dưới nhánh mới này thêm 1 cây con, trả về từ lời gọi:
ID3(ExamplesVi, Target_Attribute, Attributes – {A})
- End /*Begin*/
- Return Root.
3 CÀI ĐẶT CHƯƠNG TRÌNH
3.1 Ngôn ngữ lập trình, biến môi trường, các thư viện được sử dụng
- Thuật toán ID3 được viết bằng ngôn ngữ Maple (dùng Maple 12), sau đó đóng gói lại thành môt thư viện và lưu vào thư mục “C:\ID3\”
- Chương trình được viết hoàn chỉnh dưới dạng thể hiện form liên kết bên dưới với package đã được tạo ra ở trên, bằng ngôn ngữ Java (dùng NetBeans IDE 6.5)
- Biến môi trường:
Trang 21o Mục đích: kế nối Java với Maple
o Cách đặt biến môi trường:
Click chuột phải vào My computer, chọn Properties
Trong hộp thoại mới hiện ra, chọn tiếp Advanced System Setting nếu là Win Vista hoặc Win 7, Win XP thì chọn Advanced
Trong hộp thoại System Properties, chọn Environment Variables…
Trong bảng System Variables, chọn Path trong phần Variables, rồi bấm Edit
Trong hộp thoại Edit System Variable, thêm dòng sau vào mục Variable value “C:\Program Files\Maple 12\bin.win” Lưu ý: ngăn cách giữa các Variable value là các dấu “;”
Bấm chọn OK (hoặc Apply) để đồng ý thay đổi
Khởi động lại máy
- Một số thư viện đặc biệt được sử dụng:
o com.maplesoft.openmaple.* : import các lớp OpenMaple của Java.
o com.maplesoft.externalcall.MapleException : import lớp MapleException.
Ngoài ra, chương trình còn sử dụng Maple Engine, engine này có chức năng kết nối với Maple để thực hiện các lệnh trong Maple
3.2 Cấu trúc, chức năng các tập tin cài đặt và tập tin training examples
- Tập tin DecisionTreeFrame.java: hiển thị cây quyết định
- Tập tin Main.java: tạo form với các thao tác tương ứng (Tạo bảng, Đọc ví dụ huấn luyện
từ tập tin, Hiển thị các luật, Hiển thị cây quyết định)
3.2.2 Các tập tin training examples:
Cấu trúc chung của các tập tin training examples dạng txt là:
Trang 22- Dòng đầu tiên mô tả các thuộc tính có trong ví dụ huấn luyện, mỗi thuộc tính cách nhau
ít nhất một khoảng trắng hoặc một tab Thuộc tính cuối cùng là thuộc tính phân loại Mỗi thuộc tính có một số giá trị hữu hạn
- Mỗi dòng kế tiếp là một ví dụ huấn luyện, thứ tự giá trị cho mỗi thuộc tính trong ví dụ
đó được nhập tương ứng Tên tập tin, thuộc tính và các giá trị không chấp nhận các giá trị đặc biệt như: `, ~, &, (, ), !, #, %, ^, -, \, |, {, }, [, ], ;, có thể chấp nhận ký tự gạch dưới
3.3 Nội dung các hàm chính và các tham số có liên quan
- Trong Java:
+ Tập tin Main.java:
o public Main() throws MapleException:
Khởi tạo Maple Engine với Java
Đồng thời đặt Table không có Header
o Vector ListNodes(String Nodes):
Chuyển chuỗi Nodes kết quả trả về của hàm GetNodes(T) trong Maple thành 1 Vector trong Java
Thành phần của Vector sẽ là mỗi nút được lưu thành 1 danh sách gồm nútcha và các nút con, mỗi nút sẽ được tách bởi dấu "|" để phân biệt giữa 2 nút, để vẽ các nút trong form DecisionTreeFrame.java
o void jButton1ActionPerformed(java.awt.event.ActionEvent evt):
Sự kiện của button ShowDecisionTree, hiển thị cây quyết định trên form DecisionTreeFrame
Thực hiện lệnh GetNodes(T) để chuyển chuỗi T, là danh sách các nhánh của cây quyết định từ Maple với Training Examples lấy từ bảng dữ liệu
Trang 23trong form, sang danh sách các nút để vẽ cây quyết định ở Form DecisionTreeFrame.
o void jButton2ActionPerformed(java.awt.event.ActionEvent evt):
Sự kiện của button ShowRules, hiển thị các luật
Chuyển từ chuỗi T, là danh sách các nhánh của cây quyết định từ Maple với Training Examples lấy từ bảng dữ liệu trong form, sang các luật.+ Tập tin DecisionTreeFrame:
o void paintComponent(Graphics g): hàm vẽ cây quyết định
Duyệt qua các nút con của nút parent (khởi tạo = 0) Trường hợp nếu chỉ
có 1 nút con, vẽ nút đó ngay bên dưới nút parent; nếu số nút con là chẵn,
vẽ bên dưới nút parent, lấy nút parent là điểm giữa cách đều các nút con; nếu số nút con là lẻ, vẽ bên dưới nút parent, lấy phần tử ở giữa của nút con là điểm cách đều
Vẽ 1 đường thẳng từ nút parent đến các nút con
- Trong Maple, tập tin ID3.mw:
+ Hàm tìm tập con Sv của S1 cho mỗi thuộc tính attr có giá trị là val(Sv = {s ∈S ∣ A(s) =0})