树回归的介绍
????????線性回歸包含一些強(qiáng)大的方法,但這些方法創(chuàng)建的模型需要擬合所有的樣本點(diǎn)(局部加權(quán)線性回歸除外)。當(dāng)數(shù)據(jù)擁有眾多特征并且特征之間關(guān)系十分復(fù)雜時(shí),構(gòu)建全局模型的想法就顯得太難了,也略顯笨拙。而且,實(shí)際生活中很多問題都是非線性的,不可能使用全局線性模型來擬合任何數(shù)據(jù)。
一種可行的方法是將數(shù)據(jù)集切分成很多份易建模的數(shù)據(jù),然后利用線性回歸級(jí)數(shù)來建模。如果首次切分后仍然難以擬合線性模型就繼續(xù)切分。在這種切分方式下,樹結(jié)構(gòu)和回歸法就相當(dāng)有用。
CART(Classification And Regression Trees,分類回歸樹)的樹構(gòu)建算法。該算法既可以用于分類還可以用于回歸,因此非常值得學(xué)習(xí)。然后利用python來構(gòu)建并顯示CART樹。代碼會(huì)保持足夠的靈活性以便能用于多個(gè)問題當(dāng)中。接著,利用CART算法構(gòu)建回歸樹并介紹其中的樹剪枝技術(shù)(該技術(shù)的主要目的是防止樹的過擬合)。之后引入了一個(gè)更高級(jí)的模型樹算法。與回歸樹的做法(在每個(gè)葉節(jié)點(diǎn)上使用各自的均值做預(yù)測(cè))不同,該算法需要在每個(gè)葉節(jié)點(diǎn)上都構(gòu)建出一個(gè)線性模型。在這些樹的構(gòu)建算法中有一些需要調(diào)整的參數(shù),所以還會(huì)介紹如何使用python中的Tkinter模塊建立圖形交互界面。最后,在該界面的輔助下分析參數(shù)對(duì)回歸效果的影響。
樹回歸:
優(yōu)點(diǎn):可以對(duì)復(fù)雜和非線性的數(shù)據(jù)建模。
缺點(diǎn):結(jié)果不易理解。
實(shí)用數(shù)據(jù)模型:數(shù)值型和標(biāo)稱型數(shù)據(jù)。
對(duì)使用ID3樹構(gòu)建算法的分析和評(píng)價(jià):
????????ID3的做法是每次選取當(dāng)前最佳的特征來分割數(shù)據(jù),并按照該特征的所有可能取值來切分。也就是說,如果一個(gè)特征有四種取值,那么數(shù)據(jù)將被切成4份。一旦按某特征切分后,該特征在之后的算法執(zhí)行過程中將不會(huì)再起作用,所以有觀點(diǎn)認(rèn)為這種切分方式過于迅速。另外一種方法是二元切分法,即每次把數(shù)據(jù)集切成兩份。如果數(shù)據(jù)的某特征值等于切分所要求的值,那么這些數(shù)據(jù)就進(jìn)入樹的左子樹,反之則進(jìn)入樹的右子樹。
除了切分過于迅速外,ID3算法還存在另一個(gè)問題,他不能直接處理連續(xù)型特征。只有事先將連續(xù)型特征轉(zhuǎn)換成離散型,才能在ID3算法中使用。但這種轉(zhuǎn)換過程會(huì)破壞連續(xù)型變量的內(nèi)在性質(zhì)。而使用二元切分法則易于對(duì)樹構(gòu)建過程進(jìn)行調(diào)整以處理連續(xù)型特征。具體的處理方法是:如果特征值發(fā)育給定值就走左子樹,否則就走右子樹。另外,二元切分法也節(jié)省了樹的構(gòu)建時(shí)間,但這點(diǎn)意義也不是特別大,因?yàn)檫@些樹構(gòu)建一般是離線完成的,時(shí)間并非需要重點(diǎn)關(guān)注的因素。
CART是十分著名且廣泛記載樹構(gòu)建算法,它使用二元切分來處理連續(xù)型變量。對(duì)CART稍作修改就可以處理回歸問題。通常使用香農(nóng)熵來度量集合的無組織程度。如果選用其他方法來代替香農(nóng)熵,就可以使用樹構(gòu)建算法來完成回歸。
回歸樹與分類樹的思路類似,但葉節(jié)點(diǎn)的數(shù)據(jù)類型不是離散型,而是連續(xù)型。
樹回歸的一般方法:
(1)收集數(shù)據(jù):采用任意方法收集數(shù)據(jù)。
(2)準(zhǔn)備數(shù)據(jù):需要數(shù)值型的數(shù)據(jù),標(biāo)稱型數(shù)據(jù)應(yīng)該映射成二值型數(shù)據(jù)。
(3)分析數(shù)據(jù):繪出數(shù)據(jù)的二維可視化顯示結(jié)果,以字典方式生成樹。
(4)訓(xùn)練算法:大部分時(shí)間都花費(fèi)在葉節(jié)點(diǎn)樹模型的構(gòu)建上。
(5)測(cè)試算法:使用測(cè)試數(shù)據(jù)上的R^2值來分析模型的效果。
(6)使用算法:使用訓(xùn)練出的樹做預(yù)測(cè),預(yù)測(cè)結(jié)果還可以用來做很多事情
總結(jié)
- 上一篇: python求散点曲线下方面积
- 下一篇: MATLAB的Kmeans函数实现聚类