分類決策樹的概念和算法比較好理解,並且這方面的資料也很多。但是對於回歸決策樹的資料卻比較少,西瓜書上也只是提了一下,並沒有做深入的介紹,不知道是不是因為回歸樹用的比較少。實際上網上常見的房價預測的案例就是一個應用回歸樹的很好的案例,所以我覺得至少有必要把回歸樹的概念以及算法弄清楚。
我們以鳶尾花數據集為例進行分析。
iris(鳶尾花)數據集共有5個屬性:
一、決策樹
決策樹一般用於對離散型的變量進行預測,並且它的輸入(即特征)一般也是離散型的。決策樹在進行遞歸划分的過程中需要不斷選取最優的划分屬性,例如在第一次划分的時候有四個特征可選,那么具體選哪個特征的依據是根據這個特征划分后帶來的數據“純度”的提高最大,例如分別以花萼長度,花萼寬度,花瓣長度,花瓣寬度進行划分,這四種划分方法帶來的“純度”的提高是不同的,選擇其中純度提高最大的特征進行划分,然后依次對子節點遞歸第進行划分。“純度”根據字面意思可以認為是數據的均一性,比如如果全是山鳶尾,那么這時的純度肯定是最高的。在信息論中表征數據混亂程度的是信息熵,數據純度的提高等價於信息熵的下降。
那么根據對數據“純度提高”的不同表征方法,形成了不同類型的決策樹,比較著名的是:
1. ID3。ID3決策樹以信息增益(info gain)作為表征手段,也就是在選擇最佳划分特征時,是通過選擇不同特征划分后信息增益最大的特征進行划分。正是由於這種特性ID3更傾向於類別數多的那些特征。舉個極端的例子,如果以某個特征划分后,每條數據就是一類,這時信息熵是0,信息增益肯定是最大的。
2. C4.5。 這種決策樹以信息增益率(info gain rate)為優化目標,信息增益率的計算等於信息增益初一數據的固有值,數據固有值與數據集的類別數相關,而且隨着類別數的增大,固有值增長的更快,導致信息增益率下降,因此C4.5更傾向於類別數少的那些特征。
3. CART。英文全稱為classification and regression tree。分類和回歸樹。它的優化目標是基尼指數。基尼指數表征的是在數據集中隨機抽到兩個相同類別的的概率,因此表征的是數據的混亂程度,基尼指數越小數據純度越高。
二、連續特征
前面介紹的生成決策樹的過程只涉及離散型的特征。對於連續性的特征一般采用二分法。怎么判斷某個特征時離散型還是連續型呢,我們可以指定一個值,比如規定如果某個特征的類別數超過5就認為是連續型,一般的算法庫都會提供接口能夠設置該參數的值。
接着說二分法的具體操作:
1. 選取一個特征划分點,一般去兩條數據的平均值,這樣把整個數據分成兩部分,然后根據不同類型 決策樹計算它的優化目標,可以是信息增益,信息增益率,或基尼指數。
2. 這樣循環計算,把所有的划分點全部算出來(n條數據有n-1個划分點),選取最佳的划分點(信息增益最大或基尼指數最小)
3. 一次划分點進行一次划分
4. 遞歸地進行划分
三、目標變量是連續型
這才到本文重點,前面主要是回顧一下決策樹。
前面所說的情況都是離散型的目標變量,比如鳶尾花的種類只有三種Iris Setosa(山鳶尾)、Iris Versicolour(雜色鳶尾),以及Iris Virginica(維吉尼亞鳶尾)。
那么對於房價預測的問題,我們要預測的目標變量房價顯然是一個連續型的變量,這種情況該怎么處理呢??
前面介紹的三種表征方法信息增益,信息增益率,基尼指數都是針對離散變量。
一種方法是用類似方差的計算方法,我們知道方差是表征數據離散程度的,如果數據取值都相同,那么方差就為0,反之如果數據月混亂,方差越大,所以方差也是表征數據混亂程度的一種指標。
但是這里計算方法與方差略有不同,因為數據通過某個特征被划分為多個子集,我們需要分別對這若干子集計算平方差之和,然后將每個子集的平方差之和加起來作為優化目標,
例如在某個特征上被划分成A,B,C三個子集(如果是連續型特征就是兩個子集),分別計算A,B,C三個子集的平方差之和,將三個子集的平方差之和加起來作為優化目標。
四、預測值
我們知道當目標變量是離散值時,對於一個划分后的子集,這個子集的標簽是其中取值最多的類別的標簽值(多數表決);
而對於連續型的目標變量,則是用平均值作為新的子集的預測值。