決策樹(decision tree)
決策樹:是一種基本的分類和回歸方法。它是基於實例特征對實例進行分類的過程,我們可以認為決策樹就是很多if-then的規則集合。
優點:1)訓練生成的模型可讀性強,我們可以很直觀的看出生成模型的構成已經工作方式,因為模型就是由數據屬性和類別構成一棵樹。
2)由於是一棵樹,所以它的預測分類速度快,想想一棵樹能有多大的深度。如果是一顆二叉樹即使有N個數據,深度也只有logN。
原則:根據損失函數最小化的原則建立決策樹模型(其實大部分模型都是這個原則)
步驟:1)特征選擇(不同的算法,選擇不一樣,比如CART就是隨機選擇m個特征)
2)決策樹的生成(就是通過數據的屬性進行不斷的分裂,直到葉子節點為止)
現在目前主要的決策樹算法:ID3,C4.5,CART,RandomForest.....
信息熵:
(有關信息熵的介紹在吳軍的著作《數學之美》有着非常好的介紹,強烈介紹)
說到決策樹算法,這個是不得不提的。因為在構建決策樹的時候,節點選擇的屬性是依據信息熵來確定的,就是根據信息熵來確定選擇哪個屬性用於當前數據集的分類。 ”信息熵“是香農提出來的。我們知道信息是有用的,但是如何來定量描述這個信息量的大小呢。而“信息熵”就是為了解決這個問題而提出來的,用來量化信息的作用。
一條信息的信息量是和它的不確定性有着直接關系的,當我們對於一件不確定的時候,就需要比較多的信息來搞懂這件事,相反,如果對於一件事情我們很確定,那么我們就需要比較少的信息就可以知道這件事。因此從這個角度看,我們就可以認為信息量的大小就是不確定的多少。但是如何來量化這個信息量呢(也就是不確定性)
香農給出了這個公式:H=-(P1logP1+P2logP2+....) (P(X)為出現的概率)
變量的不確定性越大,熵也就越大,把它弄清楚所需要的信息量也就越大。
(1)ID3算法:
核心:在決策樹的各個節點上應用信息增益准則來選擇特征屬性(就是我們上面提到的信息熵)
步驟:
- 從根節點開始,如果只有一類或者為空,返回;計算所有屬性值的信息熵,選擇信息增益最大的屬性值作為當前分裂節點。
- 計算剩余的屬性的信息增益,遞歸的調用該方法
- 直到每個節點不能繼續分裂,即每個節點上的數據的都是同一類別結束
信息增益計算:g(D,A)=H(D)-H(D/A) (具體如何計算可以參考李航的統計學習這本書)
H(D):表示原來未使用屬性的信息熵。H(D/A):表示使用屬性值A為某個節點后的信息熵。 二者之差就是信息增益。
(2)C4.5算法
C4.5是ID3算法的改進版,ID3使用信息增益比,但是信息增益有個缺點就是會偏向選擇取值較多的特征,這樣會造成數據過擬合。所以C4.5通過改進ID3使用信息增益率為特征選擇准則。就是信息增益g(D,A)與訓練數據集D有關於特征A的值得熵之比。
其他的步驟和ID3一樣。
(3)CART算法
CART(classification and regression tree),分類與回歸樹。既可以用於分類也可以用於回歸。
步驟:
- 決策樹的生成,基於訓練數據集,生成的決策樹要盡量大;
- 決策樹的剪枝,用驗證集對生成樹進行剪枝驗證,選取最好的決策樹。用損失函數最小作為剪枝的標准。
對決策樹(CART)的生成其實就是遞歸的構建二叉樹的過程,對回歸樹用平方誤差最小原則,對分類樹采用基尼系數(Gini index)原則.
(1) 回歸樹
問題,如何對輸入空間進行划分?
這里采用啟發式的方法:選擇第j個變量的x(j)和它的取值s作為切變量和切分點對數據進行划分,然后需找最優的s和j。具體求解:
遍歷所有輸入變量,尋找最優切分遍歷,依此將空間划分為兩個空間。通常稱為最小二乘回歸樹。
(2)分類樹
利用基尼指數選擇最優特征。基尼指數其實就代表了集合的不確定性,基尼指數越大,樣本集合的不確定性也就越大,這一點與熵相似。基尼指數的曲線趨勢和分類誤差率差不多。
,表示有K個類別,以及樣本屬於第K類的概率PK.
選擇基尼指數最小的特征及其對應的切分點作為最優特征和最優切分點。
(4)Random Forest算法
核心:其實就是集成學習的概念包括(bagging,boosting),通過集成投票的方式提高預測精度。
數據的選擇:
(1)使用bootstrap重復有放回采樣獲取數據,這樣可以避免數據的過擬合。這樣就獲取了很多訓練數據集合,而且它們是相互獨立,並且可以並行的。
(2)隨機的抽取m個特征值與獲取到的采樣樣本通過CART構建決策樹。
(3)構建多棵決策樹,用這些決策樹進行投票預測
我們可以看出來,基分類器(即每一棵樹)它們的訓練數據不一樣,它們的屬性集合也不一樣,這樣就可以構建出許多有差異性的分類器出來,通過集成可以獲取很好的預測精度。
就是一片樹林里種植好多棵樹,用這片森林來預測數據。