1.CART算法與ID3算法對比
(1)CART算法解決了ID3算法的不足,既能用于分類問題,又能用于回歸問題。
(2)實(shí)際上,CART算法的主體結(jié)構(gòu)和ID3算法基本相同,只是在以下幾點(diǎn)有所改變:
①選擇劃分特征時(shí),ID3使用信息熵量化數(shù)據(jù)集的混亂程度;CART使用基尼指數(shù)(Gini Index)和均方誤差(MSE)量化數(shù)據(jù)集的混亂程度。
【注】CART算法用于分類使用基尼指數(shù),用于回歸使用均方誤差。
②選定某切分特征時(shí),ID3算法使用該特征所有可能的取值進(jìn)行切分,例如一個(gè)特征有k個(gè)取值,數(shù)據(jù)集則被切成k份,創(chuàng)建k個(gè)子樹;CART算法使用某一閾值進(jìn)行二元切分,即在特征值的取值范圍區(qū)間內(nèi)進(jìn)行選擇一個(gè)閾值t,將數(shù)據(jù)集切成兩份,然后使用一個(gè)數(shù)據(jù)子集(大于t)構(gòu)建左子樹,使用另一個(gè)數(shù)據(jù)子集(小于等于t)構(gòu)造右子樹,因此CART算法構(gòu)建的是二叉樹。
③對于已用于創(chuàng)建內(nèi)部節(jié)點(diǎn)的特征,在后續(xù)運(yùn)算中(創(chuàng)建子樹中的節(jié)點(diǎn)時(shí)),ID3算法不會(huì)再次使用它創(chuàng)建其它內(nèi)部節(jié)點(diǎn);CART算法可能會(huì)再次使用它創(chuàng)建其他內(nèi)部節(jié)點(diǎn)。
(3)CART算法不僅可以處理離散值特征,也可以處理連續(xù)值特征。
處理連續(xù)值特征的思路為:把數(shù)據(jù)集中的每一個(gè)特征動(dòng)態(tài)地轉(zhuǎn)換成多個(gè)布爾值特征,形成新特征空間中的數(shù)據(jù)集。
實(shí)例:假設(shè)某數(shù)據(jù)集中有一個(gè)“溫度”特征,該特征出現(xiàn)過的值有[10,-15,0,-9,5,22]
CART算法將做以下處理:
①先將“溫度”特征出現(xiàn)的值排序,得到列表[-15,-9,0,5,10,22](6個(gè)值);
②依次取[-15,-9,0,5,10,22]中相鄰兩值得中點(diǎn)作為閾值點(diǎn),將得到閾值列表[-12,-4.5,2.5,7.5,16](5個(gè)值);
③使用每一個(gè)閾值與原來特征的值進(jìn)行比較,便得到了取值為0或1的布爾值特征,例如“溫度是否大于-12”、“溫度是否大于-4.5”(共5個(gè))。
使用以上處理方法,在數(shù)據(jù)集中k個(gè)取值的“溫度”特征就被轉(zhuǎn)換成了k-1個(gè)布爾值特征。
2.CART算法詳述

【注】iris鳶尾花數(shù)據(jù)集和boston房價(jià)數(shù)據(jù)集都是sklearn庫自帶的數(shù)據(jù)集,編寫程序時(shí)直接load進(jìn)去就可以使用了。
(1)分類樹案例:給iris數(shù)據(jù)集進(jìn)行分類



(2)回歸樹案例:對boston房價(jià)進(jìn)行回歸預(yù)測
說明:cart回歸樹劃分?jǐn)?shù)據(jù)集的過程和分類樹的過程是一樣的,回歸樹得到的預(yù)測結(jié)果是連續(xù)值,評判不純度的指標(biāo)不同;分類樹采用的是基尼系數(shù),回歸樹需要根據(jù)樣本的離散程度來評價(jià)不純度,采用的是均方誤差。
節(jié)點(diǎn)劃分(即計(jì)算樣本的離散程度)
①最小絕對偏差(LAD):樣本值減去樣本均值的絕對值,即

【注】此公式不是十分肯定,后續(xù)查找到相關(guān)資料再對其進(jìn)行修改。
②最小二乘偏差(LSD):每個(gè)樣本值減去樣本均值的平方和除以樣本數(shù),即


