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

Nghiên cứu phương pháp cây quyết địnhvà cài đặt mô phỏng thuật toán ID3

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 (243.62 KB, 39 trang )

1.Các khái niệm cơ bản:
Cây quyết định là công cụ mạnh mẽ cho việc phân loại và tiên đoán.Sự hấp dẫn
của của phương pháp thiết lập cây này là vì nó thích hợp với một lượng lớn sự
kiện , ngược lại với mạng Neutral cây quyết định thể hiện những luật.Những luật
này có thể dễ dàng diễn tả mà con người có thể hiểu chúng.Việc tạo quyết định có
rất nhiều ứng dụng ví dụ như hệ thống thư tín của công ty chứa đựng một mô
hình mà có thể chính xát tiên đoán thành viên nào của nhóm trực sẽ trả lời cho một
yêu cầu nhất định mà họ không cần quan tâm mô hình này hoạt động như thế
nào.Trong một số những trường hợp khác khả năng giải thích cho việc đưa ra
quyết định là vấn đề chính yếu.Trong một số ứng dụng , sự phân loại hay sự tiên
đoán là vấn đề hết sức quan trọng.
1.1 Học cây quyết định (Dicision tree learning):
Là phương pháp xấp xỉ giá trị rời rạc bởi những hàm mục tiêu ( target function),
trong đó hàm được biểu diễn bởi một cây quyết định.Những cây học ( learned trees)
có thể cũng được biểu diễn như là tập hợp của những luật if then để tăng tính dễ
đọc cho con người . Những phương pháp học này thể hiện trong những giải thuật
suy diễn quy nạp thông dụng nhất và được ứng dụng thành công trong những nhiệm
vụ từ việc học để chuẩn đoán bệnh trong y học đến việc định giá rủi ro trong tài
chính về kinh tế
1.2 Cây quyết định :
Cây quyết định là cây trong đó mỗi nút nhánh thể hiện một sự lựa chọn trong số
nhiều sự lựa chọn và mỗi nút lá là sự thể hiện của một quyết định.Cây quyết định
thông thường được sử dụng cho việc đạt được thông tin cho mục đính tạo quyết
định.Cây quyết định bắt đầu với một nút gốc từ đó user nhận được những hành
động.Từ nút này , user chia ra mỗi nút theo cách đệ qui theo giải thuật học cây
quyết định .Kết quả cuối cùng là một cây quyết định trong đó mỗi nhánh thể hiện
một trường hợp có thể của quyết định và hệ quả của quyết định đó.
1.3 Sự thể hiện của cây quyết định :
Cây quyết định phân chia những trường hợp bằng việc xắp xếp từ nút gốc đến
những nút lá . Điều đó đã đưa ra sự phân loại cho từng trường hợp .Mỗi nút trong
cây diễn tả một sự kiểm tra cho một số thuộc tính của trường hợp và mỗi nhánh


đi xuống từ nút đó đại diện cho một trong những giá trị có thể cho thuộc tính này .
Một trường hợp được phân loại bằng việc bắt đầu tại nút gốc của cây , kiểm tra
những thuộc tính xát định của nút này sau đó chuyển xuống những nhánh tương
ứng với việc đánh giá thuộc tính .Quá trình này được lặp lại cho những cây con
lúc đó nút gốc mới được xát định .
1.4 Giải thuật học cây quyết định:
Cây quyết định là phương pháp xấp xỉ hóa bằng hàm mục tiêu những giá trị rời
,rạc trong đó những hàm được học được thể hiện bằng cây quyết định . Học cây
quyết định là một trong những phương pháp thực dụng và được sử dụng rộng rãi
nhất cho phương pháp suy diễn qui nạp.
Giải thuật học cây quyết định được sử dụng thành công trong hệ chuyên gia trong
việc nằm bắt kiến thức.Công việc chính sử dụng trong các hệ thống này là việc sử
dụng phương pháp qui nạp cho những giá trị cho trước của những thuộc tính của
một đối tượng chưa biết để xát định sự phân loại xấp xỉ theo những luật của cây
quyết định.Cây quyết định sẽ phân loại các trường hợp bằng cách duyệt từ nút gốc
đến những nút lá.Chúng ta sẽ bắt đầu từ nút gốc của cây quyết định , kiểm tra
thuộc tính xát định bởi nút này sau đó chuyển xuống những nhánh của cây theo
giá trị thuộc tính trong tập hợp cho trước.Quá trình này được lặp lại tại những cây
con .Giải thuật cây quyết định thích hợp cho những điều dưới đây:
1.Mỗi trường hợp được biểu diễn bởi cặp những giá trị thuộc tính.Ví dụ thuộc
tính “nhiệt độ“ có những giá trị “nóng”,”mát”, “lạnh”.Chúng cũng đồng thời liên
quan đến thuộc tính mở rộng , giá trị tiếp theo, dữ liệu được tính toán ( giá trị
thuộc tính bằng số) trong dự án của chúng ta.
2.Hàm mục tiêu có giá trị đầu ra là những giá trị rời rạc.Nó dễ dàng liên hệ đến
trường hợp mà được gán vào một quyết định đúng hoặc sai.Nó cũng có thể mở
rộng hàm mục tiêu đến giá trị đầu ra là những giá trị thực .
3.Những dữ liệu đưa vào có thể chứa đựng nhiều lỗi điều này liên quan đến kĩ
thuật giản lược những dữ liệu thừa.
1.5 Tại sao Học cây quyết định là một phương pháp học qui nạp hấp dẫn:
Những phương pháp học qui nạp tạo thành những công thức cho không gian giả

thuyết tổng quát bằng việc tìm ra tính qui tắc bằng kinh nghiệm dựa trên những dữ
liệu ví dụ.
Với học qui nạp , học cây quyết định hấp dẫn vì 3 nguyên nhân:
1. Cây quyết định là một sự tổng quát tốt cho những trường hợp ta không để ý
đến , chỉ những trường hợp được mô tả trong những giới hạn của những đặc
tính mà liên quan đến những khái niệm mục tiêu.
2. Những phương pháp hiệu quả trong tính toán là số hạng của tỉ lệ thức đến
số của những trường hợp của dữ liệu đưa vào tính toán.
3. Kết quả của cây quyết định đưa ra một sự biểu diễn của ý niệm mà dễ dàng
cho con người bởi vì nó đưa ra quá trình phân loại hiển nhiên
2.Giải thuật học cây quyết định – ID3 Cơ bản:
2.1.ID3 Cơ bản:
ID3 là một giải thuật học cây quyết định được phát triển bởi Ross Quinlan (1983).
Ý tưởng cơ bản của giải thuật ID3 là để xây dựng cây quyết định bằng việc sử
dụng một cách tìm kiếm từ trên xuống trên những tập hợp cho trước để kiểm tra
mỗi thuộc tính tại mỗi nút của cây . Để chọn ra thuộc tính mà hữu ích nhất cho sự
phân loại trên những tập hợp cho trước , chúng ta sẽ đưa ra một metric thu thập
thông tin.
Để tìm ra một cách tối ưu để phân loại một tập hợp thông tin , vấn đề đặt ra là
chúng ta cần phải làm tối thiểu hóa ( Chẳng hạn, tối thiểu chiều cao của cây). Như
vậy chúng ta cần một số chức năng mà có thể đánh giá trường hợp nào nào cho ra
một sự phân chia cân bằng nhất.Matric thu thập thông tin sẽ là hàm như vậy.
2.2 Entropy-Đồng nhất định lượng của một tập hợp thông tin:
Để định nghĩa thông tin tìm được một cách chính xát chúng ta cần phải tìm hiểu về
hàm entropy trước tiên.
Đầu tiên không mất tính tổng quát giả sử rằng kết quả việc phân loại những
trường hợp của cây quyết định thuộc vào hai loại chúng ta gọi chúng là P
( dương ) và N (âm).
Cho trước một tập hợp S , bao hàm những mục tiêu dương và âm, hàm entropy
của S liên quan đến sự phân loại là :

Entropy(S) = -P(positive)log
2
P(positive) – P(negative)log
2
P(negative)
P(positive) : tỉ lệ thức của những trường hợp dương trong S.
P(negative): tỉ lệ thức của những trường hợp âm trong S.
Cho ví dụ , nếu S là (0.5+,0.5-) then Entropy(S) là 1, nếu S là (0.67+,0.33-) thì
Entropy(S) là 0. Để ý rằng nếu khả năng phân bố ở nhiều dạng khác nhau thì
thông tin của nó sẽ lớn.
Chúng ta cũng để ý rằng hàm entropy là một sự định lượng cho tính không thuần
khiết trong tập hợp thông tin đưa vào.Nhưng làm thế nào nó liên quan đến sự tối
ưu hoá của việc tạo quyết định của chúng ta tạo ra bởi vịêc phân loại trong những
trường trường hợp. Những gì chúng ta thấy sau đây sẽ là câu trả lời cho vấn đề
này.
2.3 Thu thập thông tin - định lượng thu giảm mong đợi trong hàm Entropy:
Như chúng ta đề cập trước đây, để tối thiểu hóa chiều sâu của cây quyết định , khi
chúng ta duyệt nhánh cây, chúng ta cần chọn những thuộc tính tối ưu để chia nút
cây, những cái mà chúng ta có thể dễ dàng cho là thuộc tính với sự thu giảm
entropy là sự lựa chọn tốt nhất.
Chúng ta định nghĩa thu thập thông tin như là việc thu giảm mong đợi của entropy
liên quan đến thuộc tính xát định khi phân chia một node thuộc cây quyết định .
Gain(S,A)=Entropy(S) - Sum for v from 1 to n of (|Sv|/|S|) * Entropy(Sv)
Chúng ta có thể sử dụng khái niệm của thu thập để đánh giá tầm quan trọng
những thuộc tính và xây dựng những cây quyết định mà mỗi nút chứa thuộc tính
mà nhận được lớn nhất trong những thuộc tính chưa được xem xét trong đường đi
từ gốc.
Mục đích của việc sắp thứ tự này là :
1. Để tạo ra cây quyết định nhỏ mà những record có thể được xát định sau chỉ
một vài lần cây quyết định phân chia.

2. Để kết nối một hi vọng đối với việc tối thiểu của quá trình tạo quyết định .
3. Giải thuật ID3:
3.1 Hiện thực của giải thuật ID3:
Nội dung giải thuật:
ID3 ( Learning Sets S, Attributes Sets A, Attributesvalues V)
Return Decision Tree.
Begin
Load learning sets first, create decision tree root
node 'rootNode', add learning set S into root node
as its subset.
For rootNode, we compute
Entropy(rootNode.subset) first
If Entropy(rootNode.subset)==0, then
rootNode.subset consists of records
all with the same value for the
categorical attribute, return a leaf
node with decision
attribute:attribute value;
If Entropy(rootNode.subset)!=0, then
compute information gain for each
attribute left(have not been used in
splitting), find attribute A with
Maximum(Gain(S,A)). Create child
nodes of this rootNode and add to
rootNode in the decision tree.
For each child of the rootNode, apply
ID3(S,A,V) recursively until reach
node that has entropy=0 or reach
leaf node.
End ID3.

3.2 Ví dụ :
Để mô tả hoạt động của ID3 chúng ta sử dụng ví dụ “Play Tennis”.Sự mô tả
tượng trưng thuộc tính như sau:
Attribute Possible Values:
Outlook sunny, overcast , rain
Temperature hot , mild, cood
Humidity high,normal
Windy true,false
Decision n(negative),p(positive)
Tập Leaning set cho ví dụ chơi tennis:
Outlook Temperature Humidity Windy Decision
sunny hot high false n
sunny hot high true n
overcast hot high false p
rain mild high false p
rain cool normal false p
rain cool normal false n
overcast cool normal true p
sunny mild high false p
sunny mild normal true p
rain mild normal false p
sunny mild normal true p
overcast mild high true p
overcast hot normal false p
rain mild high true n
Giải thuật ID3 thực hiện như sau:
1. Tạo nút gốc( rootNode) , chứa đựng toàn bộ learning set như là những tập
hợp con của chúng (subset) sau đó tính :
Entropy(rootNode.subset)= -(9/14)log
2

( 9/14 ) – ( 5/14)log
2
(5/14)= 0.940
2. Tính toán thông tin nhận được cho mỗi thuộc tính :
Gain(S,Windy)= Entropy(S)-(8/14)Entropy(S
false
) – (6/14)Entropy(S
true
) =
0.048
Gain(S,Humidity) = 0.151
Gain(S,Temperature) = 0.029
Gain(S,Outlook) = 0.246
3. Chọn lựa những thuộc tính với thông tin nhận được tối đa , đó chính là sự
phân chia theo thuộc tính “outlook”
4. Áp dụng ID3 cho mỗi nút con của nút gốc này , cho đến khi đạt đến nút lá
hoặc nút có entropy = 0.
3.3 Sự liên quan đến những thuộc tính mang giá trị liên tục :
Sự định nghĩa ban đầu của ID3 bị giới hạn bởi việc liên quan đến tập những
giá trị rời rạc . Chúng sẽ nắm giữ một cách hiệu quả những thuộc tính tượng
trưng . Tuy nhiên , chúng ta sẽ mở rộng phạm vi hoạt động của nó cho những
thuộc tính có giá trị liên tục ( giá trị số) để phù hợp với thế giới thực.
Những gì chúng ta phải làm là định nghĩa những giá trị rời rạc mới để phân
những giá trị liên tục thành những thuộc tính tượng trưng một lần nữa.
Outlook Temperature Humidity Windy Decision
sunny hot 0.9 false n
sunny hot 0.87 true n
overcast hot 0.93 false p
rain mild 0.89 false p
rain cool 0.80 false p

rain cool 0.59 true n
overcast cool 0.77 true p
sunny mild 0.91 false n
sunny cool 0.68 false p
rain mild 0.84 false p
sunny mild 0.72 true p
overcast mild 0.49 true p
overcast hot 0.74 false p
rain mild 0.86 true n

đối với thuộc tính humidity, chúng ta cần phải tạo ra một giá trị logic mới đó là
true khi humidity < =c và false trong những trường hợp khác . Điều còn lại là tính
ngưỡng tối ưu của c.
Trong ví dụ của chúng ta , thông tin nhiều nhất nhận được là thuộc tính
“outlook”.Trong gốc tập con tại “outlook:sunny”, chúng ta tính thu thập thông tin
cho “Humidity” là một thuộc tính . Để làm như vậy chúng ta sắp xếp humidity như
dưới đây:
Humidity 0.68 0.72 0.87 0.9 0.91
Playtennis p p n n n
Chúng sẽ chọn một ngưỡng mà có thể tạo ra thu thập thông tin lớn nhất . Bằng
việc sắp xếp những giá trị số sau đó xát định ví dụ xát với mà khác với sự phân
chia mục tiêu.Chúng ta có thể tạo ra một tập hợp những ngưỡng cho phép sau đó
chúng ta tính thông tin đạt được với mỗi ngưỡng tối ưu cho việc phân chia .
Ngưỡng được phép trong trường hợp này là 1:
Humidity > (0.7+0.87)/2 hay Humidity > 0.795 với sự thập thông tin
G(S,Humidity) =0.97 . Nếu chúng ta có hơn 1 ứng cử ở đây chúng ta chỉ cần tìm
cái nào thu thập thông tin nhiều nhất .
3.4 Mở rộng ID3 với những dữ liệu tính toán thực :
Như chúng ta đề cập trước đây, ID3 là hoàn toàn hiệu quả trong việc liên hệ đến
những hàm mục tiêu đối với những giá trị tính rời rạc.Nó cũng dễ dàng liên hệ đến

những trường hợp mà được gán bởi những giá trị quyết định logic , như là “true “
và “false”,”p (positive)” and “n(negative)”. Điều đó cũng có thể mở rộng hàm mục
tiêu sang những giá trị output thực .
4.Những thiếu sót của giải thuật ID3:
4.1 Trường hợp thứ nhất :
Một thiếu sót quan trọng của ID3 là không gian phân chia hợp lệ tại một node
là cạn kiệt . Một sự phân chia là sự phân hoạch của mỗi trường hợp của không
gian mà kết quả đạt được từ việc thử nghiệm tại một node quyết định .ID3 và
con cháu của nó cho phép sự kiểm tra tại tại một thuộc tính đơn và nhánh
trong kết quả cho ra từ sự kiểm tra này.
4.2 Trường hợp thứ 2:
Một thiếu sót mà ID3 mắc phải là nó dựa vào rất nhiều vào số lượng của
những tập hợp dữ liệu đưa vào. Quản lý sự tạp nhiễu của tập dữ liệu vào là vô
cùng quan trọng khi chúng ta ứng dụng giải thuật học cây quyết định vào thế
giới thực . Cho ví dụ ,Khi có sự lẫn tạp trong tập dữ liệu đưa vào hoặc khi số
lượng ví dụ đưa vào là quá nhỏ để tạo ra một ví dụ điển hình của hàm mục tiêu
đúng.ID3 có thể dẫn đến việc tạo quyết định sai.
Có rất nhiều những mở rộng từ giải thuật ID3 cơ bản đã phát triển để áp dụng
những luật học cây quyết định vào thế giới thực , như là những post-pruning
tree , quản lý những thuộc tính giá trị thực , liên quan đến việc thiếu những
thuộc tính , sử dụng những tiêu chuẩn chọn lựa thuộc tính khác hơn thu thập
thông tin .
5.Giải thuật mở rộng C4.5:
C4.5 là sự mở rộng của giải thuật ID3 trên một số khía cạnh sau:
Trong việc xây dựng cây quyết định , chúng có thể liên hệ với tranning set mà
có những records với những giá trị thuộc tính không được biết đến bởi việc
đánh giá việc thu thập thông tin hoặc là tỉ số thu thập thông tin , cho những
thuộc tính bằng việc xem xét chỉ những record mà ở đó thuộc tính được định
nghĩa .
Trong việc sử dụng cây quyết định , chúng ta có thể phân loại những record mà

có những giá trị thuộc tính không biết bằng việc ước lượng những kết quả có
khả năng sãy ra.Trong ví dụ chơi đánh gôn của chúng ta , nếu chúng ta được
đưa một record mới mà outlook là sunny và humidity chưa cho biết , chúng ta
sẽ xử lý như sau:
Chúng ta di chuyển từ nút gốc Outlook đến nút Humidity theo cung được
đánh nhãn là sunny. Ở điểm đó từ lúc chúng ta không biết giá trị của Humidity
chúng ta để ý rằng nếu humidity là ở 75 có 2 records , và nếu humidity là lớn
hơn 75 có 3 records trong đó có 1 record không hoạt động . Như vậy điều đó
có thể đưa ra như câu trả lới cho record khả năng (0.4,06) cho chơi gôn hoặc
không chơi gôn.
Chúng ta có thể liên hệ đến những giá trị liên tục . Giả sử rằng thuộc tính Ci có
tầm giá trị thuộc tính liên tục . Chúng ta sẽ xem xét những giá trị này trong tập
learning set . Cho rằng chúng được xắp sếp thứ tự tăng dần A1, A2, ,Am sau
đó với mỗi giá trị Ai i=1,2, ,m.Chúng ta chia những records thành những cái
có giá trị từ Ci trở lên và bao gồm cả Aj và những cái có những giá trị lớn hơn
Aj .Với những lần phân hoạch này chúng ta tính lại giá trị thu thập và tỉ số thu
thập và chọn ra phân hoạch có tỉ số thu thập thông tin nhận được tối đa.
Trong ví dụ về chơi Golf của chúng ta , đối với humidity T là training set
chúng ta sẽ xát định thông tin cho mỗi lần phân chia và tìm được sự phân chia
tốt nhất tại 75 . Phạm vi của thuộc tính này trở thành {<=75,>75}. Chú ý rằng
phương pháp này liên quan đến một con số quan trọng của việc tính toán.
Cây quyết định thu giảm và những tập luật suy dẫn :
Việc xây dựng cây quyết định nhờ vào training set bởi vì cách chúng xây dựng
liên quan nghiêm ngặt đến hầu hết các record trong training set .Trong thực
tế , để làm như vậy nó có thể là điều hoàn toàn phức tạp. Với những đường đi
dài và không đều .
Việc thu giảm cây quyết định được thực hiện bằng việc thay thế những cây con
thành những nút lá.Sự thay thế này sẽ được thực hiện tại nơi mà luật quyết
định được thiết lập nếu tần suất lỗi gây ra trong cây con là lớn hơn trong một
nút lá.Cho ví dụ với cây đơn giản như sau:

Color
red blue
Success Failure
chứa 2 records thứ nhất là training red success và thứ hai là trainning blue failures
và sau đó trong Test Set chúng ta tìm thấy 3 red failures và một blue success ,
chúng ta có thể xem xét việc thay thế cây con này bằng việc thay thế bằng một
node đơn Failure . Sau việc thay thế này chúng ta sẽ còn lại 2 lỗi thay vì 5 lỗi .
Winston chỉ ra rằng làm thế nào để sử dụng Fisher's exact test để xát định nếu
thuộc tính phân loại là thực sự phụ thuộc vào một thuộc tính không xát định. Nếu
điều này không sãy ra thì thuộc tính không xát định không cần phải xuất hiện
trong đường đi hiện tại của cây quyết định.
Quinlan và Breiman đề nghị những heuristic phức tạp hơn cho việc thu giảm cây
quyết định .Một điều dễ dàng làm là có thể dẫn ra một luật từ một cây quyết định :
viết ra một luật từ mỗi đường trong cây quyết định đi từ gốc đến lá.Vế trái của luật
được xây dựng dễ dàng từ nhãn của những nút và nhãn của những cung.
Những luật rút ra có thể được rút gọn như sau:
Gọi LHS là LHS của luật Cho LHS’ nhận được bằng cách thu giảm một số điều
kiện của LHS. Chúng ta có thể chắc chắn thay thế LHS bằng LHS’ trong luật này
nếu tập con của training set thỏa mãn LHS và LHS’ là tương đương.
Một luật có thể được thu giảm bằng cách sử dụng metacondition ví dụ như “
không có luật khác có thể áp dụng ”.
5. Giải thuật mở rộng See5/C5.0 :
“See5 là một dạng nghệ thuật của hệ thống xây dựng sự phân loại trong dạng thức
của những cây quyết định và tập luật “.
See5 đã được thiết kế và hoạt động trên cơ sở dữ liệu lớn và sự kết hợp đổi mới
như là boosting. Kết quả tạo ra bởi See5 và C5.0 là tương tự nhau . Hoạt động
trước đây trên Windows95/98/NT của C5.0 là phần hoạt động của nó trên Unix .
See 5 và C5.0 là những công cụ khai khái dữ liệu phức tạp cho những mẫu khai
phá dữ liệu mà phát họa ra những loại tập hợp chúng thành những đối tượng phân
loại và sử dụng chúng để tiên đoán.

Đặc điểm chính của C5.0 là :
 C5.0 được thiết kế để phân tích những cơ sở dữ lịêu quan trọng chứa đựng
hàng ngàn đến hàng trăm ngàn những records.và hàng chục đến hàng trăm
số liệu và hoặc tên field.
 Để tối đa khả năng giải thích , đối tượng phân loại của See5.0 /C5.0 được
diễn tả như là cây quyết định hoặc tập của những luật if – then.Dạng thức
của nó dễ hiểu hơn so với neutron network.
 C5.0 dễ dàng sử dụng do đó không được gọi là kiến thức cao cấp của thống
kê và học máy.
Giải thuật See5/C5.0 là tốt hơn C4.5:
C5.0 trong hệ thống Unix và bản sao của nó See5 trong Windows là những
phiên bản cao cấp hơn C4.5 trên nhiều khía cạnh quan trọng .
Chúng ta sẽ thử so sánh C5.0 và C4.5 trên cùng hệ thống Unix.
1.Về những tập luật (Ruleset):nhanh nhiều hơn và ít tốn bộ nhớ hơn:
Cả C5.0 và C4.5 cung cấp sự lựa chọn cho những dạng thức của phân loại –
cây quyết định hoặc là những tập luật (ruleset) . Trong nhiều ứng dụng thì tập
luật (ruleset) được ưu tiên sử dụng hơn vì chúng đơn giản và dễ hiểu hơn cây
quyết định .Nhưng những phương pháp để tìm ra luật trong C4.5 là chậm và
chiếm nhiều bộ nhớ.C5.0 thể hiện sự hoàn thiện trong vấn đề tạo ra tập luật và
sự cải tiến này là gây ấn tượng mạnh mẽ.
2.Cây quyết định : nhanh hơn và nhỏ hơn :
Với cũng những tập dữ liệu (dataset) thì C4.5 và C5.0 sản sinh ra những luật
với sự chính xát về dự đoán là như nhau.Sự khác nhau chính yếu là kích cở của
cây và thời gian tính toán.Cây của C5.0 là nhỏ hơn và nhanh hơn ở một số yếu
tố.
3.Sự nâng lên(Boosting):
Dựa trên sự nguyên cứu của Freund và Schapire , đây là sự phát triển mới đầy
hấp dẫn mà nó không có sự tương tự nào trong C4.5.Boosting là một kỹ thuật
để tạo và kết hợp nhiều những đối tượng phân loại để cải thiện tính chính xát
tiên đoán .

C5.0 hỗ trợ Booting với một số những dữ liệu số thử nghiệm. Thông thường ,
C5.0 sẽ mất thời gian lâu hơn để tạo ra những đối tượng phân loại (classifier) .
Nhưng những kết quả có thể phân tích định lượng sự tính toán công thêm
.Boosting luôn cố gắng để đạt được đỉnh cao nhất của sự chính xát trong tiên
đoán yêu cầu phải đạt tới. Đặc biệt khi những đối tượng phân loại không được
nâng lên là hoàn toàn chính xát.
4.Những chức năng mới:
C5.0 kết hợp nhiều chức năng như là variable misclassfication costs.Trong
C4.5 tất cả những lỗi đều được xem như nhau.Nhưng trong những ứng dụng
thực tế sẽ có một số lỗi trong quá trình phân loại là nguy hiểm hơn những cái
khác .C5.0 chấp nhận một chi phí phân chia đối với mỗi cặp lớp được tiên
đoán.Nếu quan điểm này được áp dụng , C5.0 sau đó sẽ xây dựng những đối
tượng phân loại để tối thiểu hóa những giá trị phân loại sai được mong đợi hơn
là những tần suất lỗi.
C5.0 có nhiều kiểu dữ liệu hơn cả những cái đã có trong C4.5 bao gồm cả ngày
giờ , thuộc tính giá trị rời rạc được xếp thứ tự và case labels. Thêm vào đó là
những giá trị thiếu (missing value).C5.0 cho phép những giá trị được coi như là
không áp dụng được .Hơn nữa , C5.0 cung cấp những điều kiện dễ dàng để
định nghĩa những thuộc tính mới như những hàm của những thuộc tính khác.
Những ứng dụng khai phá dữ liệu gần đây được hình thức hoá với kích thước
lớn hơn , với hàng trăm thậm chí hàng ngàn những thuộc tính .C5.0 có thể tự
động lọc những thuộc tính , loại bỏ những cái xuất hiện bên lề trước khi một
lớp phân loại được xây dựng. Đối với ứng dụng của loại này , sự phân loại có
thể dẫn đến những đối tượng nhỏ hơn và sự tiên đoán chính xát hơn và thậm
chí thu giảm được thời gian tạo ra tập luật.
C5.0 cũng dễ dàng được sử dụng hơn. Những chọn lựa được đơn giản hóa và
mở rộng để hỗ trợ sự lấy mẫu và cross-validation , trong lúc đó chương trình
C4.5 để tạo ra cây quyết định và tập luật được kết hợp vào một chương trình
duy nhất.
Phiên bản trên windows See5 đã xây dựng được một giao diện đồ họa thân

thiện và thêm vào một số chức năng hỗ trợ khác.Ví dụ Cross-Reference
Window làm cho những đối tượng phân loại dễ hiểu hơn bằng việc liên kết
những trường hợp đến những phần liên quan đến việc phân loại.
6. Không gian giả thuyết tìm kiếm trong cây quyết định:
Cũng như với những phương pháp học qui nạp khác,ID3 có thể được mô tả
như là việc tìm kiếm một không gian của giả thuyết để tìm ra một giả thuyết
mà phù hợp với những training example.Không gian giả thuyết được tìm kiếm
bởi ID3 là tập hợp của những cây quyết định có thể.ID3 thực hiện tìm kiếm
theo cách leo núi trong không gian giả thuyết này từ đơn giản đến phức tạp.Nó
bắt đầu từ một cây rỗng sau đó đi theo tiến trình quan sát giả thuyết tỉ mỉ hơn
trong tìm kiếm của một cây quyết định mà phân loại một cách chính xát
training data.Chức năng phân loại mà dẫn đường cho việc tìm kiếm theo cách
thức leo núi (hill-climbing) chính là sự định lượng thông tin nhận được ( the
information gain measure).
Bằng sự quan sát ID3 trong ngữ cảnh của không gian tìm kiếm và chiến thuật
tìm kiếm.Chúng ta có thể thấy được một số những khả năng cũng như giới hạn
của nó.
 Không giả thuyết của ID3 của tất cả những cây quyết định là không gian
đầy đủ những hàm giá trị rời rạc , liên quan đến những thuộc tính cho
phép.Bởi vì mỗi hàm giá trị rời rạc giới hạn có thể được thể hiện bởi
một số cây quyết định , ID3 tránh một trong những rủi ro chính là tìm
kiếm trong không gian giả thuyết không đầy đủ ( ví dụ những phương
pháp mà chỉ quan tâm đến giả thuyết kết hợp).Đây chính là không gian
giả thuyết có thể không chứa những hàm mục tiêu (target function).
 ID3 duy trì chỉ một giả thuyết đơn lẻ ở hiện tại khi nó tìm kiếm thông
qua không gian của những cây quyết định .Bằng việc xát định chỉ một
giả thuyết đơn lẻ , ID3 mất đi khả năng mà theo đó thể hiện tất cả
những giả thuyết phù hợp một cách rõ ràng đi theo sau.Ví dụ, nó không
có khả năng xát định làm thế nào những cây quyết định là phù hợp với
những dữ liệu training cho phép hoặc là đưa ra những truy vấn tức thời

để giải quyết trong số những giả thuyết này một cách tối ưu.
 ID3 ở dạng nguyên thủy không thực hiện backtracking trong tìm kiếm
của nó.Một lần nó chỉ chọn ra một thuộc tính để kiểm tra ở một cấp nhất
định trong cây quyết định nó không bao giờ backtracking để xem xét lại
sự chọn lựa này.Do đó , nó dễ gặp những rủi ro thông thường của tìm
kiếm kiểu leo núi hill-climbling mà không có sự quay lui backtracking:
việc hội tụ của giải pháp tối ưu cục bộ không phải là tối ưu toàn cục
.Trong những trường hợp của ID3, một giải pháp tối ưu cục bộ liên
quan đến cây quyết định nó chọn theo con đường tìm kiếm đơn do nó
khám phá.Tuy nhiên, giải pháp tối ưu cục bộ này có thể ít mong đợi hơn
những cây mà có khả năng bắt gặp theo một nhánh khác của việc tìm
kiếm.
 ID3 sử dụng tất cả những ví dụ training ở mỗi bước trong tìm kiếm để
tạo qua thống kê dựa trên những quyết định xem xét làm thế nào cho giả
thuyết hiện tại tốt hơn.Một thuận lợi của việc sử dụng những tính chất
của thống kê của tất cả các ví dụ đó chính là tìm kiếm kết quả là ít nhạy
bén với những lỗi trong mỗi ví dụ training.ID3 có thể dễ dàng mở rộng
để nắm lấy những dữ liệu training hỗn loạn bằng việc sửa đổi tiêu chuẩn
loại bỏ để chấp nhận giả thuyết là thiếu sót với training data.
7.Khuynh hướng qui nạp trong cây quyết định :
Với phương thức gì mà ID3 tạo ra từ những training examples được theo
dõi để phân loại những thực thể không nhìn thấy được . Nói cách khác ,
ID3 tuân theo khuynh hướng qui nạp gì ?
Cho trước một tập hơp của những training example , có nhiều những cây
quyết định phù hợp với những example này. Mô tả khuynh hướng qui nạp
của ID3 do đó bao gồm sự mô tả khuynh hướng bằng cách đó nó chọn một
của những giả thuyết hợp lệ trên những cái khác.Những cây quyết định nào
mà ID3 chọn . Nó chọn những cây cây có thể chấp nhận đầu tiên mà nó
gặp trong việc tìm kiếm theo kiểu hill-climbing từ đơn giản đến phức tạp
thông qua không gian của những cây có thể.Nói đại khái , chiến thuật tìm

kiếm của ID3 như sau:
(a) Những lựa chọn theo sự ưu tiên cho những cây ngắn trên những cây
dài.
(b) Chọn lựa những cây mà đặt những thuộc tính với thông tin nhận
được cao nhất gần với gốc nhất.Bởi vì sự tương tác tinh vi giữa
heuristic chọn lựa thuộc tính được sử dụng bởi ID3 và những
training example riêng biệt nó gặp.Rất khó để mô tả đặc điểm một
cách chính xát khuynh hướng qui nạp trình bày trong ID3.Tuy
nhiên , chúng ta có thể xấp xỉ hóa mô tả khuynh hướng như là sự ưu
tiên cho những cây quyết định ngắn hơn những cây phức tạp.
Khuynh hướng qui nạp xấp xỉ của ID3:những cây ngắn được ưu tiên
hơn những cây lớn.
Trong thực tế, người ta có thể hình dung một giải thuật tương tự với ID3
mà có thể biểu diễn chính xát khuynh hướng qui nạp.Ta có thể coi giải
thuật này bắt đầu với một cây rỗng và tìm kiếm Breadth first và theo
quá trình đó làm cho cây trở nên phức tạp hơn, đầu tiên chúng ta cho tất
cả các cây đều ở mức 1, sau đó tất cả các cây ở mức 2,vân vân Mỗi lần
nó tìm một cây quyết định hợp lý với training data, nó sẽ trả về cây hợp
lý nhỏ nhất ở search depth.Chúng ta gọi giải thuật tìm kiếm này là
breadth-first search algorithm BFS-ID3,BFS-ID3 tìm kiếm một cây
quyết định ngắn nhất và như vậy thể hiện khuynh hướng “những cây
ngắn được ưu tiên hơn những cây dài” một cách chính xát.ID3 có thể
được xem như là xấp xỉ hiệu quả thành BFS-ID3, sử dụng một heuristic
tìm kiếm để cố gắng tìm một cây ngắn nhất mà không có sự dẫn đường
của toàn bộ Breadth-first search thông qua không gian giả thuyết .
Bởi vì ID3 sử dụng heuristic thu thập thông tin (the gain information) và
chiến thuật tìm kiếm hill climbing (leo núi) nó thể hiện một khuynh
hướng phực tạp hơn BFS-ID3.Cụ thể nó không phải luôn luôn tìm một
cây hợp lý ngắn nhất và nó thiên về cây để những thuộc tính với thông
tin thu thập cao gần với gốc.

8.Những vấn đề trong học cây quyết định (Decision Tree Learning):
Những vấn đề thực tế trong việc học cây quyết định bao gồm việc xát
định làm thế nào phát triển cây quyết định theo chiều sâu, quản lý những thuộc
tính liên tục , chọn một thuộc tính xấp xỉ định lượng trong việc chọn lựa, quản lý
những training data với những giá trị thuộc tính thiêu sót, quản lý những thuộc
tính với những chi phí khác nhau và việc cải tiến hiệu quả tính toán.Dưới đây
chúng ta thảo luận mỗi một vấn đề và những mở rộng từ giải thuật ID3 cơ bản .
8.1 Tránh overfitting dữ liệu:
Trong một số trường hợp giải thuật chỉ mô tả sự mọc nhánh của cây chỉ đủ sâu để
phân loại hoàn hảo những training example.Trong thực tế nó có thể dẫn đến những
khó khăn khi có những dữ liệu hỗn tạp hoặc khi số lượng của training example là
quá ít để tạo ra biểu diễn điển hình cho hàm mục tiêu.Trong cả hai trường hợp này
, giải thuật đơn giản này có thể sản sinh overfiting.Chúng ta nói rằng một giả
thuyết overfit với training example nếu một số những giả thuyết mà thích hợp với
training example thể hiện thiếu chính xát trên toàn bộ sự phân bố của trường hợp .
Định nghĩa :
Cho một không giả thuyết H , một giả thuyết h thuộc H được gọi là overfit trên
training data nếu tồn tại một vài giả thuyết h’ thuộc H mà h có ít lỗi hơn h’ trên
training example , nhưng h’ có lỗi nhỏ hơn h trên toàn bộ sự phân bố của những
trường hợp.
8.1.1 Reduced error pruning:
Làm thế nào chúng ta có thể sử dụng một tập hợp hợp lệ để tránh overfitting. Điều
này được gọi là reduced-error pruning đây là việc xem xét trên mỗi decision node
trên cây là đối tượng cho việc xén bớt (pruning).Pruning một node của cây quyết
định bao gồm việc loại bỏ cây con tại node đó , tạo một nút lá và gán cho nó một
một sự phân loại chung của những training example liên kết với nút đó.Những nút
được loại bỏ chỉ nếu kết quả thu giảm cây không tệ hơn cái cũ trên tập hợp hợp lệ.
Điều này đã ảnh hưởng đến nút lá thêm vào vì những qui luật trừng khớp ngẫu
nhiên trong training set là có khả năng được cắt xén bởi vì những khả năng trùng
khớp là không hầu như sãy ra trong một tập hợp lệ . Những nút được cắt xén theo

sự lặp lại, luôn luôn chọn nút mà sự gia tăng cây quyết định chính xát trên tập
validation set hầu hết loại bỏ.Sự thu giảm sẽ tiếp tục cho đến lúc nào những sự thu
giảm tiếp theo sẽ dẫn nguy hại.
8.1.2 Luật Post-Pruning :
Trong thực tiễn , một phương pháp hoàn toàn thành công cho việc tìm kiếm những
giả thuyết với sự chính xát cao là một kỹ thuật mà chúng ta sẽ gọi là rule post-
pruning.Một dạng khác của phương phát pruning được sử dụng trong C4.5 là một
dạng phát triển của giải thuât ID3.Luật post-pruning liên quan đến những bước sau
đây:
1. Đưa ra cây quyết định từ training set , mọc cây cho đến lúc training data là
thích hợp càng nhiều càng tốt và cho phép tránh overfitting sãy ra.
2. Thay đổi cây được học thành tập hợp những luật tương đương bằng việc
tạo ra một luật cho mỗi đường đi từ gốc đến những nút lá.
3. Thu giảm mỗi luật bằng việc loại bỏ những điều kiện trước mà kết quả
trong việc cải thiện sự chính xát được ước lượng của nó.
4. Xắp xếp những luật được thu giảm bởi việc chính xát ước lượng của nó và
xem xét chúng trong thứ tự này khi mà phân loại những trường hợp tiếp
theo.
Để minh họa , chúng ta hãy xem cây quyết định sau đây:
Sunny Overcast Rain
Outlook
Humidity Wind Yes
High Normal Strong Weak
No
Yes No Yes
Trong luật post-pruning, một luật được tạo ra cho mỗi lá trên cây.Mỗi thuộc tính
kiểm tra theo đường từ gốc đến lá trở thành một tiền luật (precondition) và sự
phân loại ở nút lá trở thành hậu luật (postcondition).Cho ví dụ:
phần trái nhất của cây được chuyển thành luật như sau:
IF (Outlook=Sunny) ∧ (Humidity=High)

THEN PlayTennis = No
Kế tiếp mỗi luật như vậy bị cắt xén bởi việc loại bỏ một vài phần tử của tiền luật.
Những phần loại bỏ sẽ không có giá trị trong việc loại ước lượng chính xát.Luật
cho ở trên ví dụ luật post-pruning sẽ được xem xét loại bỏ tiền luật
(Outlook=Sunny) and (Humidity=High) . Nó sẽ chọn bất cứ cái nào của những
bước thu giảm đã sản sinh ra sự cải thiện nhiều nhất trong ước lượng tính chính
xát của luật , sau đó xem xét việc thu giảm tiền luật thứ hai như là bước thu giảm
cao hơn.Không bước thu giảm nào được thể hiện nếu nó làm giảm đi tính ước
lượng chính xát của luật .
Như đã để ý ở trên, một phương pháp để ước lượng tính chính xát luật là sử dụng
một validation set của những ví dụ phân cách ra từ training set . Một phương
pháp khác được sử dụng bởi C4.5 là đánh giá sự thể hiện dựa trên những training
set của chính nó , sử dụng một sự đánh giá thiếu khả quan để tạo thành sự kiện mà
training data đưa ra một sự đánh giá bằng khuynh hướng dùng luật .Chính xát
hơn , C4.5 tính toán ước lượng thiếu khả quan của nó bằng việc tính toán tính
chính xát của luật trên những training example mà nó áp dụng , sau đó tính toán độ
lệch tiêu chuẩn bằng việc tính toán tính chính xát của luật trên những training
example cho nó sử dụng khi đó việc tính toán độ lệnh tiêu chuẩn trong chính xát
định lượng theo sự phân chia nhị phân . Đối với một cấp độ tin cậy cho trước , sự
ước lượng dưới biên được lấy ra sau đó như là thước đo của thể hiện luật .
Tại sao có sự chuyển đổi cây quyết định thành những luật sau khi thu giảm ? có 3
thuận lợi chính sau đây :
 Việc chuyển thành những luật cho phép phân biệt trong những ngữ cảnh
khác nhau trong đó một nút cây quyết định được sử dụng . Bởi vì mỗi
đường phân biệt thông qua nút cây quyết định cho ra một luật phân biệt ,
sự thu giảm cây quyết định xem xét việc kiểm tra các thuộc tính có thể tạo
thành những đường khác nhau.Ngược lại, cây sẽ bị thu giảm , chỉ có 2 lựa
chọn sẽ loại bỏ nút quyết định hoàn toàn hoặc giữ lại nó ở dạng nguyên
thủy.
 Việc chuyển thành luật loại bỏ thuộc tính kiểm tra phân biệt mà sãy ra gần

với gốc của cây và những cái này sãy ra gần với những lá. Như vậy chúng
ta có thể tránh được sự lộn xộn trong vấn đề kế toán như là làm thế nào để
tổ chức lại cây nếu nút gốc bị thu giảm trong khi phần còn lại của cây con
dưới trường hợp này.
 Chuyển thành luật làm tăng khả năng dễ đọc . Những luật thường dễ hiểu
hơn đối với con người.
8.2 Incorporating Continuous Value Atributes:
Trong những định nghĩa ban đầu của ID3 chỉ giới hạn đến những thuộc tính
mà nằm trong tập giá trị rời rạc . Đầu tiên thuộc tính mục tiêu , giá trị của
nó này được tiên đoán bởi learned tree phải là giá trị thực. Thứ hai những
thuộc tính được kiểm tra trong những nút cây quyết định phải là giá trị rời
rạc . Sự hạn chế thứ hai này có thể dễ dàng được loại bỏ do đó thuộc tính
quyết định với giá trị liên tục có thể được sử dụng trong learned tree. Điều
này có thể đạt tới bằng việc hạn chế tối đa những thuộc tính giá trị rời rạc
mới mà phân chia giá trị liên tục thành tập hợp của những giá trị rời rạc
theo khoảng. Cụ thể với một giá trị thuộc tính A là giá trị liên tục giải thuật
có thể linh động tạo ra một thuộc tính logic A
c
mang giá trị true nếu A < c
và false nếu ngược lại.Vấn đề còn lại là lựa chọn giá trị tốt nhất cho ngưỡng
c như thế nào.
8.2 Alternative Measures for Selecting Attributes:
Có một khuynh hướng tự nhiên trong định lượng thu thập thông tin
( information gain ) đó là những thuộc tính được chọn với nhiều giá trị trên
những thuộc tính khác với một vài giá trị . Xét một ví dụ đặc biệt ,xét thuột
tính Date nó có nhiều những giá trị có thể sãy ra (ví dụ ngày 4 tháng 3 năm
1979 ).Nếu chúng ta thêm thuộc tính này vào bảng ví dụ về play tennis ở
trên thì nó sẽ có sự thu thập thông tin (information gain ) cao nhất so với
bất kì những thuộc tính nào . Điều này sãy ra bởi vì Date hoàn toàn độc lập
tiên đoán hàm mục tiêu trên training data.

Điều gì sai với thuộc tính Date ? Điều đơn giản đặt ra nó có nhiều những
giá trị có thể mà nó giới hạn trong việc phân chia những training example
thành những tập nhỏ. Cũng chính vì điều này nó sẽ có thu thập thông tin rất
cao liên quan đến những training example , mặc dù là một công cụ tiên
đoán tồi của hàm mục tiêu trên những trường hợp vô hình .
Một cách để tránh sự khó khăn này là chọn lựa những thuộc tính dựa trên
một số đánh giá khác hơn là sử dụng thu thập thông tin (gain information) .
Sự đánh giá thay đổi được sử dụng thành công là gain ratio ( tỉ số thu thập).
Đánh giá Gain ratio cản trở những thuộc tính như là Date bằng việc kết hợp
một biểu thức gọi là split information , đó là vấn đề nhạy cảm để làm thế
nào mở rộng và hợp nhất thuộc tính phân chia dữ liệu :

c
SplitInformation(S,A) ≡ - ∑ (|S
i
|\|S|) log
2
(|S
i
|\|S|)

i=1
Trong đó S1 đến Sc là tập con của c kết quả của những trường hợp từ sự
phân hoạch S bằng thuộc tính được đánh giá với c là A . Để ý rằng
SplitInformation thực sự chính là entropy của S với với sự liên quan trên
những giá trị của thuộc tính A . Điều này ngược với việc sử dụng của
Entropy trước đây trong đó chúng ta xem xét chỉ entropy của S với sự liên
quan đến giá trị mục tiêu mà những giá trị của nó được tiên đoán bởi
learned tree.
Đánh giá Gain Ratio được định nghĩa trong biểu thức của đánh giá Gain

trước đây cũng như đối với SplitInformation như sau:

Gain(S,A)
GainRation(S,A) ≡


SplitInformation(S,A)
8.3 Handing Traning Examples with Missing Attribute Values :
Trong một số trường hợp nhất định dữ liệu cho phép có thể thiếu
những giá trị đối với một số thuộc tính . Cho ví dụ , trong lĩnh vực y khoa
mà chúng ta mong muốn tiên đoán kết quả bệnh nhân dựa trên nhiều
những kiểm tra trong phòng thí nghiệm , nó có thể là kiểm tra thử máu trên
một tập những bệnh nhân cho phép. Trong truờng hợp như vậy chúng ta
thông thường phải ước đoán những giá trị thiếu dựa trên những trường hợp
mà thuộc tính này có một giá trị đã biết.
Xét một trường hợp mà trong đó Gain(S,A) được tính toán tại nút n trong
cây quyết định đề xát định khi nào thuộc tính A là thuộc tính tốt nhất để
kiểm tra nút quyết định này. Giả sử rằng (x,c(x)) là một trong những
training example trong S và giá trị A(x) là không được biết đến.
Một trong những chiến thuật liên quan đến thiếu giá trị thuộc tính là
gán nó giá trị mà hầu như chung trong số những training example tại nút n .
Thay phiên nhau, chúng ta gán nó giá trị chung trong số những training
example tại nút n mà có sự phân loại c(x).
Thứ hai một thủ tục phức tạp hơn là gán một kết quả có thể sãy ra
cho mỗi một giá trị của A hơn là đơn giản gán một giá trị chung cho
A(x).Khả năng có thể nhận được bằng cách quan sát tần số của những giá
trị khác nhau cho A trong số những ví dụ tại nút n. Cho ví dụ, cho trước
thuộc tính với giá trị logic A , nếu nút n chứa 6 trường hợp được biết đến
với A=1 và 4 trường hợp là A=0 , như vậy chúng ta có xát suất mà A=1 là
0,6 và xát suất mà A=0 là 0,4.Phân số 0,6 của thực thể x được phân bố

xuống nhánh với A=1 và phân số 0,4 của x phân bố xuống nhánh của
những nhánh cây khác.Những tỉ số ví dụ này được sử dụng mục đích tính
toán thông tin Gain và những sự phân chia xa hơn ở những nhánh con của
cây nếu sự thiếu giá trị thuộc tính thứ hai của cây phải được kiểm tra .
Phương pháp để quản lý thiếu sót giá trị thuộc tính này được sử dụng trong
C4.5.
8.4 Handing Attribute with Differing Cost :
Trong một số những công đoạn của learning những thuộc tính của
thực thể có sự liên hệ đến cost . Cho ví dụ , trong việc học để phân loại
những căn bệnh chúng ta có thể mô tả những trong biểu thức của những
thuộc tính như là Temperature , BiopsyResult , Pulse , BloodTestResults ,
vân vân Những thuộc tính này biến đổi nhanh chóng trong cost của
chúng , trong cả những biểu thức của chi phí tiền tệ và chi phí của tiện nghi
của bệnh nhân . Trong những việc như vậy, chúng ta sẽ ưu tiên những cây
quyết định sử dụng những thuộc tính chi phí thấp ở những nơi có thể , dựa
trên những thuộc tính có giá cao chỉ khi cần tạo ra những sự phân loại đáng
tin cậy.
ID3 có thể sửa đổi để chuyển thành thuộc tính tính toán phải trả bằng việc
đưa ra một biểu thức giá trị sang định lượng lựa chọn thuộc tính . Cho ví dụ
, chúng ta có thể phân chia Gain bằng chi phí của thuộc tính, do đó những
thuộc tính với chi phí thấp sẽ được ưu tiên .
9.Tóm tắt và kết luận :
 Học cây quyết định cung cấp một phương pháp thực tiễn cho nguyên
lý học và cho việc học đối với những hàm giá trị rời rạc khác . Họ
giải thuật ID3 suy diễn ra cây quyết định bằng việc mọc từ gốc
xuống.
 ID3 tìm kiếm không gian giả thuyết đầy đủ .Bằng cách đó nó tránh
những khó khăn liên quan đến tính gần đúng mà được xem như giới
hạn của tập hợp những giả thuyết : hàm mục tiêu đó có thể không
thể hiện trong không gian giả thuyết .

 Khuynh hướng qui nạp ẩn trong ID3 bao gồm một sự ưu tiên cho
những cây nhỏ . Đó là nó tìm kiếm thông qua không gian giả thuyết
sinh cây càng lớn theo yêu cầu phân chia những training example
cho phép.
 Overfitting training data là một vấn đề quan trọng trong học cây
quyết định . Bởi vì những training example là một trường hợp của
tất cả những thực thể cho phép , nó có thể thêm những nhánh vào
cây để cải thiện sự thể hiện trên những traning example trong khi
giảm đi sự thể hiện của những thực thể khác bên ngoài tập hợp
này.Những phương pháp sử dụng cho post-pruning cây quyết định
trở nên quan trọng trong việc tránh overfitting trong học cây quyết
định .
 Rất nhiều những mở rộng của giải thuật ID3 đã được phát triển theo
nhiều nguyên cứu khác nhau. Những phương pháp này bao gồm
post-pruning tree , handing real-valued attributes , sự điều tiết những
training example với missing attribute values , gia tăng cải tiến cây
quyết định khi những training example mới cho phép , sử dụng
những đánh giá chọn lựa thuộc tính khác hơn information gain và
xem xét đến những chi phí liên quan đến những thuộc tính của thực
thể .
Tài liệu tham khảo:
- Bài giảng CNTT& ứng dụng , GS.TSKH Hoàng Kiếm,
ĐHQG TpHCM
- ID3, its Children, and their Safety ,Sunil Vadera and Said Nechab
Department of Mathematics and Computer Science University of
Salford, Salford M5 4WT.
- Machine Learning , Tom M.Mitchell
- Introduction to knowledge discovery and data mining ,Ho Tu Bao,
Institute of Information Technology VietNam
- Analysis of Data Mining Algorithms , Karuna Pande Joshi

- An Implementation of ID3 –Decision treeLearning Algorithm Wei
Peng,Juhua Chen and Haiping Zhou,University of New South
Wales.
- Quinlan,J.R.: C4.5: Programs for Machine Learning Morgan
Kauffman, 1993
- Quinlan,J.R.: Simplifying decision trees International Journal of
Man-Machine Studies, 27, 221-234, 1987
- Winston,P.H.: Artificial Intelligence, Third Edition Addison-
Wesley, 1992
Phụ lục
Source Code hiện thực ID3 bằng ngôn ngữ C++.NET trên ví dụ Playtennis:
using System;
using System.Collections;
using System.Data;
namespace ExemploID3
{
public class Attribute
{
ArrayList mValues;
string mName;
object mLabel;
public Attribute(string name, string[] values)
{
mName = name;
mValues = new ArrayList(values);
mValues.Sort();
}
public Attribute(object Label)
{
mLabel = Label;

mName = string.Empty;
mValues = null;
}
public string AttributeName
{
get
{
return mName;
}
}
public string[] values
{
get
{
if (mValues != null)
return
(string[])mValues.ToArray(typeof(string));
else
return null;
}
}
public bool isValidValue(string value)
{
return indexValue(value) >= 0;
}
public int indexValue(string value)
{
if (mValues != null)
return mValues.BinarySearch(value);
else

return -1;
}
public override string ToString()
{
if (mName != string.Empty)
{
return mName;
}
else
{
return mLabel.ToString();
}
}
}
public class TreeNode
{
private ArrayList mChilds = null;
private Attribute mAttribute;
public TreeNode(Attribute attribute)
{
if (attribute.values != null)
{
mChilds = new ArrayList(attribute.values.Length);
for (int i = 0; i < attribute.values.Length; i++)
mChilds.Add(null);
}
else
{
mChilds = new ArrayList(1);
mChilds.Add(null);

}
mAttribute = attribute;
}
public void AddTreeNode(TreeNode treeNode, string ValueName)
{
int index = mAttribute.indexValue(ValueName);
mChilds[index] = treeNode;
}
public int totalChilds
{
get
{
return mChilds.Count;
}
}
public TreeNode getChild(int index)
{
return (TreeNode)mChilds[index];
}
public Attribute attribute
{
get
{
return mAttribute;
}
}
public TreeNode getChildByBranchName(string branchName)
{
int index = mAttribute.indexValue(branchName);
return (TreeNode)mChilds[index];

}
}
public class DecisionTreeID3
{
private DataTable mSamples;
private int mTotalPositives = 0;
private int mTotal = 0;
private string mTargetAttribute = "result";
private double mEntropySet = 0.0;
private int countTotalPositives(DataTable samples)
{
int result = 0;
foreach (DataRow aRow in samples.Rows)
{
if ((bool)aRow[mTargetAttribute] == true)
result++;
}
return result;
}
private double calcEntropy(int positives, int negatives)
{
int total = positives + negatives;
double ratioPositive = (double)positives/total;
double ratioNegative = (double)negatives/total;
if (ratioPositive != 0)
ratioPositive = -(ratioPositive) *
System.Math.Log(ratioPositive, 2);
if (ratioNegative != 0)
ratioNegative = - (ratioNegative) *
System.Math.Log(ratioNegative, 2);

double result = ratioPositive + ratioNegative;
return result;
}
private void getValuesToAttribute(DataTable samples, Attribute
attribute, string value, out int positives, out int negatives)
{
positives = 0;
negatives = 0;
foreach (DataRow aRow in samples.Rows)
{
if ( ((string)aRow[attribute.AttributeName] ==
value) )
if ( (bool)aRow[mTargetAttribute] == true)
positives++;
else
negatives++;
}
}
private double gain(DataTable samples, Attribute attribute)
{
string[] values = attribute.values;
double sum = 0.0;
for (int i = 0; i < values.Length; i++)
{
int positives, negatives;
positives = negatives = 0;
getValuesToAttribute(samples, attribute, values[i],
out positives, out negatives);
double entropy = calcEntropy(positives, negatives);
sum += -(double)(positives + negatives)/mTotal *

entropy;
}
return mEntropySet + sum;
}
private Attribute getBestAttribute(DataTable samples, Attribute[]
attributes)
{
double maxGain = 0.0;
Attribute result = null;
foreach (Attribute attribute in attributes)
{
double aux = gain(samples, attribute);
if (aux > maxGain)
{
maxGain = aux;
result = attribute;
}
}
return result;
}
private bool allSamplesPositives(DataTable samples, string
targetAttribute)
{
foreach (DataRow row in samples.Rows)
{
if ( (bool)row[targetAttribute] == false)
return false;
}
return true;
}

private bool allSamplesNegatives(DataTable samples, string
targetAttribute)
{
foreach (DataRow row in samples.Rows)
{
if ( (bool)row[targetAttribute] == true)
return false;
}
return true;
}

private ArrayList getDistinctValues(DataTable samples, string
targetAttribute)
{
ArrayList distinctValues = new
ArrayList(samples.Rows.Count);
foreach(DataRow row in samples.Rows)
{
if (distinctValues.IndexOf(row[targetAttribute]) ==
-1)
distinctValues.Add(row[targetAttribute]);
}
return distinctValues;
}
private object getMostCommonValue(DataTable samples, string
targetAttribute)
{
ArrayList distinctValues = getDistinctValues(samples,
targetAttribute);
int[] count = new int[distinctValues.Count];

foreach(DataRow row in samples.Rows)
{
int index =
distinctValues.IndexOf(row[targetAttribute]);
count[index]++;
}
int MaxIndex = 0;

×