上一篇文章我們介紹了信息增益辆苔,本文介紹增益率。
我們知道信息增益可以幫助我們構(gòu)建決策樹扼劈,但是信息增益準(zhǔn)則有一個缺點(diǎn)驻啤。具體是什么缺點(diǎn)呢?
在上面的表格中荐吵,我們試著對編號這一列計算信息增益骑冗,會發(fā)現(xiàn)編號產(chǎn)生的信息增益為0.998赊瞬,遠(yuǎn)大于色澤產(chǎn)生的信息增益。這可以說明編號可以幫助我們更好的判斷西瓜好壞嗎贼涩?答案是否定的巧涧,因?yàn)檫@樣構(gòu)建的決策樹顯然不具有泛化能力,無法對新樣本進(jìn)行有效預(yù)測遥倦。
為什么會出現(xiàn)這種現(xiàn)象谤绳?
仔細(xì)思考后,會發(fā)現(xiàn)袒哥,信息增益準(zhǔn)則對可取值數(shù)據(jù)較多的屬性有所偏好缩筛,為減少這種偏好可能帶來的不利影響,于是有了著名的C4.5決策樹算法堡称。這種算法使用增益率來選擇最優(yōu)劃分屬性歪脏。
增益率的公式為:,其中粮呢,。
成為屬性a的固有值钞艇。屬性a的可能取值數(shù)目越多(即V越大)啄寡,則的值通常會越大。
我們試著算一下色澤和觸感的哩照,分別為:1.580和0.874挺物。可以用下面的代碼進(jìn)行計算:
# total代表正樣本總數(shù)
# num_list里面的每個元素代表該屬性的每個分類的數(shù)目飘弧,
# 比如:色澤這個屬性识藤,有青綠、烏黑次伶、淺白三個類別痴昧,每個類別的數(shù)目分別為6,6,5
import math
total = 17
num_list = [6, 6, 5]
a = 0
for i in num_list:
? ? ratio = i / total
? ? a += (ratio) * math.log(ratio, 2)
? ? IV = -a
print(IV)
需要注意的是,增益率準(zhǔn)則對可取值數(shù)目較少的屬性有所偏好冠王,因此C4.5算法并不是直接選擇增益率最大的候選劃分屬性赶撰,而是使用了一個啟發(fā)式:先從候選劃分屬性中找到信息增益高于平均水平的屬性,再從中選擇增益率最高的柱彻。
從這里也能看得出豪娜,我們在使用算法時,不會僅僅使用一種算法去做預(yù)測哟楷,在以后的項(xiàng)目實(shí)戰(zhàn)中瘤载,很可能會將幾種算法進(jìn)行融合,以達(dá)到較好的效果卖擅。