分類算法的目的是根據(jù)其他參數(shù)的取值預(yù)測類別參數(shù)的取值,希望這種預(yù)測盡可能準(zhǔn)確。分類算法的總體框架可以分為兩步:第一步是基于訓(xùn)練集構(gòu)建分類模型,第二步是用測試集檢測分類模型的準(zhǔn)確度,若可接受,即可用于預(yù)測新數(shù)據(jù)的類別。決策樹分類
本文介紹決策樹分類算法。決策樹分類算法的一般流程如下:一開始,所有的實例均位于根節(jié)點,所有參數(shù)的取值均離散化;根據(jù)啟發(fā)規(guī)則選擇一個參數(shù),根據(jù)參數(shù)取值的不同對實例集進行分割;對分割后得到的節(jié)點進行同樣的啟發(fā)式參數(shù)選擇分割過程,如此往復(fù),直到(a)分割得到的實例集合屬于同一類;(b)參數(shù)用完,以子集中絕大多數(shù)的實例類別作為該葉節(jié)點的類別。
核心問題:參數(shù)選擇規(guī)則
在每一個節(jié)點進行參數(shù)選擇時,由于有眾多的選項,需要一個選擇規(guī)則。基本的原則是使最后構(gòu)造出的決策樹規(guī)模最小?;谶@個基本原則,我們啟發(fā)式地定義規(guī)則為使分割后得到的子節(jié)點純度最大。于是參數(shù)選擇規(guī)則問題就轉(zhuǎn)化為了純度定義的問題。
我們利用熵(Entropy)的概念去描述“不純度”,熵值越大,說明這個節(jié)點的純度越低:當(dāng)節(jié)點的類別均勻分布時,熵值為1;當(dāng)只包含一類時,熵值為0.熵的計算公式如下圖,以2為底的概率對數(shù)與概率乘積之和的相反數(shù)。
基于熵的概念,我們可以得到參數(shù)選擇的第一個規(guī)則:信息增益(InfoGain).信息增益的定義是分裂前的節(jié)點熵減去分裂后子節(jié)點熵的加權(quán)和,即不純度的減少量,也就是純度的增加量。參數(shù)選擇的規(guī)則是:選擇使信息增益最大的參數(shù)分割該節(jié)點。信息增益計算的算例如下圖。
信息增益存在的問題時:總是傾向于選擇包含多取值的參數(shù),因為參數(shù)的取值越多,其分割后的子節(jié)點純度可能越高。為了避免這個問題,我們引入了增益比例(GainRatio)的選擇指標(biāo),其定義如下圖所示。
增益比例存在的問題是:傾向于選擇分割不均勻的分裂方法,舉例而言,即一個拆分若分為兩個節(jié)點,一個節(jié)點特別多的實例,一個節(jié)點特別少的實例,那么這種拆分有利于被選擇。
為了克服信息增益和增益比例各自的問題,標(biāo)準(zhǔn)的解決方案如下:首先利用信息增益概念,計算每一個參數(shù)分割的信息增益,獲得平均信息增益;選出信息增益大于平均值的所有參數(shù)集合,對該集合計算增益比例,選擇其中增益比例最大的參數(shù)進行決策樹分裂。
上面介紹的是基于熵概念的參數(shù)選擇規(guī)則,另一種流行的規(guī)則稱為基尼指數(shù)(GiniIndex),其定義如下圖?;嵯禂?shù)在節(jié)點類別分布均勻時取最大值1-1/n,在只包含一個類別時取最小值0.所以與熵類似,也是一個描述不純度的指標(biāo)。
基于基尼系數(shù)的規(guī)則是:選擇不純度減少量(Reduction in impurity)最大的參數(shù)。不純度減少量是分割前的Giniindex減去分割后的Gini index。基尼系數(shù)的特點與信息增益的特點類似。
過度擬合問題(Overfitting)
過度擬合問題是對訓(xùn)練數(shù)據(jù)完全擬合的決策樹對新數(shù)據(jù)的預(yù)測能力較低。為了解決這個問題,有兩種解決方法。第一種方法是前剪枝(prepruning),即事先設(shè)定一個分裂閾值,若分裂得到的信息增益不大于這個閾值,則停止分裂。第二種方法是后剪枝(postpruning),首先生成與訓(xùn)練集完全擬合的決策樹,然后自下而上地逐層剪枝,如果一個節(jié)點的子節(jié)點被刪除后,決策樹的準(zhǔn)確度沒有降低,那么就將該節(jié)點設(shè)置為葉節(jié)點(基于的原則是Occam剪刀:具有相似效果的兩個模型選擇較簡單的那個)。
代表算法
這里介紹兩個算法,一個是RainForest,其主要的貢獻是引入了一個稱為AVC的數(shù)據(jù)結(jié)構(gòu),其示意圖如下。主要的作用是加速參數(shù)選擇過程的計算。
另一個算法稱為BOAT,其采用了稱為bootstrap的統(tǒng)計技術(shù)對數(shù)據(jù)集進行分割,在分割的子數(shù)據(jù)集上分別構(gòu)造決策樹,再基于這些決策樹構(gòu)造一個新的決策樹,文章證明這棵新樹與基于全局?jǐn)?shù)據(jù)集構(gòu)造的決策樹非常相近。這種方法的主要優(yōu)勢在于支持增量更新。
本文所采用圖片均來自清華大學(xué)計算機系王建勇老師的課程《數(shù)據(jù)挖掘:原理與算法》