**:
決策樹是一種機器學習的方法。決策樹的生成演算法有id3, c4.5和cart等。決策樹是一種樹形結構,其中每個內部節點表示乙個屬性上的判斷,每個分支代表乙個判斷結果的輸出,最後每個葉節點代表一種分類結果。決策樹是一種十分常用的分類方法,需要監管學習(有教師的supervised learning),監管學習就是給出一堆樣本,每個樣本都有一組屬性和乙個分類結果,也就是分類結果已知,那麼通過學習這些樣本得到乙個決策樹,這個決策樹能夠對新的資料給出正確的分類。這裡通過乙個簡單的例子來說明決策樹的構成思路:
給出如下的一組資料,一共有十個樣本(學生數量),每個樣本有分數,出勤率,回答問題次數,作業提交率四個屬性,最後判斷這些學生是否是好學生。最後一列給出了人工分類結果。
然後用這一組附帶分類結果的樣本可以訓練出多種多樣的決策樹,這裡為了簡化過程,我們假設決策樹為二叉樹,且類似於下圖:
通過學習上表的資料,可以a,b,c,d,e的具體值,而a,b,c,d,e則稱為閾值。當然也可以有和上圖完全不同的樹形,比如下圖這種的:
所以決策樹的生成主要分以下兩步,這兩步通常通過學習已經知道分類結果的樣本來實現。
節點的**:一般當乙個節點所代表的屬性無法給出判斷時,則選擇將這一節點分成2個子 節點(如不是二叉樹的情況會分成n個子節點)
閾值的確定:選擇適當的閾值使得分類錯誤率最小 (training error)。
比較常用的決策樹有id3,c4.5和cart(classification and regression tree),cart的分類效果一般優於其他決策樹。下面介紹具體步驟。 id3: 由增熵(entrophy)原理來決定那個做父節點,那個節點需要**。對於一組資料,熵越大說明分類結果越好。
比如上表中的4個屬性:單一地通過以下語句分類:
分數小於70為【不是好學生】:分錯1個
出勤率大於70為【好學生】:分錯3個
問題回答次數大於9為【好學生】:分錯2個
作業提交率大於80%為【好學生】:分錯2個。
最後發現 分數小於70為【不是好學生】這條分錯最少,也就是熵最大,所以應該選擇這條為父節點進行樹的生成,當然分數也可以選擇大於71,大於72等等,出勤率也可以選擇小於60,65等等,總之會有很多類似上述1~4的條件,最後選擇分類錯最少即熵最大的那個條件。而當**父節點時道理也一樣,**有很多選擇,針對每乙個選擇,與**前的分類錯誤率比較,留下那個提高最大的選擇,即熵增益最大的選擇。
c4.5:通過對id3的學習可以知道id3存在乙個問題,那就是越細小的分割分類錯誤率越小,所以id3會越分越細,比如以第乙個屬性為例:設閾值小於70可將樣本分為2組,但是分錯了1個。如果設閾值小於70,再加上閾值等於95,那麼分錯率降到了0,但是這種分割顯然只對訓練資料有用,對於新的資料沒有意義,這就是所說的過度學習(overfitting)。分割太細了,訓練資料的分類可以達到0錯誤率,但是因為新的資料和訓練資料不同,所以面對新的資料分錯率反倒上公升了。決策樹是通過分析訓練資料,得到資料的統計資訊,而不是專為訓練資料量身定做。就比如給男人做衣服,叫來10個人做參考,做出一件10個人都能穿的衣服,然後叫來另外5個和前面10個人身高差不多的,這件衣服也能穿。但是當你為10個人每人做一件正好合身的衣服,那麼這10件衣服除了那個量身定做的人,別人都穿不了。所以為了避免分割太細,c4.5對id3進行了改進,c4.5中,增加的熵要除以分割太細的代價,這個比值叫做資訊增益率,顯然分割太細分母增加,資訊增益率會降低。除此之外,其他的原理和id3相同。
cart:分類回歸樹
cart是乙個二叉樹,也是回歸樹,同時也是分類樹,cart的構成簡單明瞭。
cart只能將乙個父節點分為2個子節點。cart用gini指數來決定如何**:
gini指數:總體內包含的類別越雜亂,gini指數就越大(跟熵的概念很相似)。
a. 比如出勤率大於70%這個條件將訓練資料分成兩組:大於70%裡面有兩類:【好學生】和【不是好學生】,而小於等於70%裡也有兩類:【好學生】和【不是好學生】。
b. 如果用分數小於70分來分:則小於70分只有【不是好學生】一類,而大於等於70分有【好學生】和【不是好學生】兩類。
比較a和b,發現b的凌亂程度比a要小,即gini指數b比a小,所以選擇b的方案。以此為例,將所有條件列出來,選擇gini指數最小的方案,這個和熵的概念很類似。
cart還是乙個回歸樹,回歸解析用來決定分布是否終止。理想地說每乙個葉節點裡都只有乙個類別時分類應該停止,但是很多資料並不容易完全劃分,或者完全劃分需要很多次**,必然造成很長的執行時間,所以cart可以對每個葉節點裡的資料分析其均值方差,當方差小於一定值可以終止**,以換取計算成本的降低。
cart和id3一樣,存在偏向細小分割,即過度學習(過度擬合的問題),為了解決這一問題,對特別長的樹進行剪枝處理,直接剪掉。
以上的決策樹訓練的時候,一般會採取cross-validation法:比如一共有10組資料:
第一次. 1到9做訓練資料, 10做測試資料
第二次. 2到10做訓練資料,1做測試資料
第三次. 1,3到10做訓練資料,2做測試資料,以此類推
做10次,然後大平均錯誤率。這樣稱為 10 folds cross-validation。
比如 3 folds cross-validation 指的是資料分3份,2份做訓練,1份做測試。
決策樹的用途:
決策樹是一種先進生產力,能夠在中等規模資料上低難度獲得較好的模型。這是因為樹類的幾大能力:
1 資料不需精心歸一化,這個在神經網路領域是不行的,輕則效果不好,重則分分鐘梯度給你nan
2 離散特徵連續特徵無腦混搭即可使用,神經網路需要精細設計
3 能接受缺失資料,這一點神經網至今為止沒有好的解決方案
4 超參意義簡明易調
5 一定的「可解釋」性,當然 樹太多了也不行刷imagenet這種資料集來說,樹或許不行了,但在千奇百怪的實際問題中,其地位還是無可撼動的。很可能乙個新手用樹模型短時間可以獲得乙個,比神經網路專家精心調參的模型只差一點的模型。對於追求成本和效率的工業界,這就是先進生產力。
機器學習演算法 決策樹
決策樹類似一中策略或者條件選擇,其中各個節點代表選擇條件,各個葉子結點代表可能達到的結果,決策樹 decision tree 是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就...
機器學習演算法 決策樹
決策樹的使用主要是用於分類。年齡收入 信用是否學生 是否買電腦年輕高 高是是中年 低中否否 老年中低否 是對於一些適合分類的資料中,考慮各種因素對結果的影響大小進行決策,一般是先選取區分度較高的因素。比如說,年齡大小這個因素在很大程度上影響我們的結果 是否買電腦。那麼,年齡因素將作為第乙個決策因素出...
機器學習演算法 決策樹
1 決策樹直觀理解 假設,已知10人房產 婚姻 年收入以及能否償還債務的樣本,那麼第11個人來,知其房產 婚姻 以及年收入情況,問他是否能償還債務?2 前置知識 理解決策樹,我們必須知道一下概念 資訊熵 描述系統的不確定度,熵越高,代表系統越混亂,包含的資訊量也就越多,其公式 例 計算前10個樣本能...