樹模型
決策樹:從根節點開始一步步走到葉子節點(決策)
決策樹所有的資料最終都會落到葉子節點,既可以做分類也可以做回歸
樹的組成
根節點:第乙個選擇點
決策樹非葉子節點與分支:中間過程
葉子節點:最終的決策結果
決策樹的訓練與測試
訓練階段:從給定的訓練集構造出來一棵樹(從跟節點開始選擇特徵,
如何進行特徵切分)
決策樹測試階段:根據構造出來的樹模型從上到下去走一遍就好了
一旦構造好了決策樹,那麼分類或者**任務就很簡單了,只需要走一遍
就可以了,那麼難點就在於如何構造出來一顆樹,這就沒那麼容易了,需
要考慮的問題還有很多的!
如何切分特徵(選擇節點)
問題:根節點的選擇該用哪個特徵呢?接下來呢?如何切分呢?
決策樹想象一下:我們的目標應該是根節點就像乙個老大似的能更好的切分資料
(分類的效果更好),根節點下面的節點自然就是二當家了。
目標:通過一種衡量標準,來計算通過不同特徵進行分支選擇後的分類
情況,找出來最好的那個當成根節點,以此類推。
衡量標準-熵
熵:熵是表示隨機變數不確定性的度量
(解釋:說白了就是物體內部的混亂程度,比如雜貨市場裡面什麼都有
那肯定混亂呀,專賣店裡面只賣乙個牌子的那就穩定多啦)
決策樹公式:h(x)=- ∑ pi * logpi, i=1,2, ... , n
乙個栗子: a集合[1,1,1,1,1,1,1,1,2,2]
b集合[1,2,3,4,5,6,7,8,9,1]
顯然a集合的熵值要低,因為a裡面只有兩種類別,相對穩定一些
而b中類別太多了,熵值就會大很多。(在分類任務中我們希望通過
節點分支後資料類別的熵值大還是小呢?)
衡量標準-熵
熵:不確定性越大,得到的熵值也就越大
當p=0或p=1時,h(p)=0,隨機變數完全沒有不確定性
當p=0.5時,h(p)=1,此時隨機變數的不確定性最大
決策樹如何決策乙個節點的選擇呢?
資訊增益:表示特徵x使得類y的不確定性減少的程度。
(分類後的專一性,希望分類後的結果是同類在一起)
決策樹構造例項
資料:14天打球情況
決策樹特徵:4種環境變化
目標:構造決策樹
決策樹構造例項
劃分方式:4種
決策樹問題:誰當根節點呢?
依據:資訊增益
決策樹構造例項
在歷史資料中(14天)有9天打球,5天不打球,所以此時的熵應為:
決策樹4個特徵逐一分析,先從outlook特徵開始:
outlook = sunny時,熵值為0.971
outlook = overcast時,熵值為0
outlook = rainy時,熵值為0.971
決策樹構造例項
根據資料統計,outlook取值分別為sunny,overcast,rainy的概率分別為:
5/14, 4/14, 5/14
決策樹熵值計算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
(gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048)
資訊增益:系統的熵值從原始的0.940下降到了0.693,增益為0.247
同樣的方式可以計算出其他特徵的資訊增益,那麼我們選擇最大的那個
就可以啦,相當於是遍歷了一遍特徵,找出來了大當家,然後再其餘的
中繼續通過資訊增益找二當家!
決策樹演算法
id3:資訊增益(有什麼問題呢?)
決策樹c4.5:資訊增益率(解決id3問題,考慮自身熵)
cart:使用gini係數來當做衡量標準
gini係數:
(和熵的衡量標準類似,計算方式不相同)
連續值怎麼辦?
決策樹決策樹剪枝策略
為什麼要剪枝:決策樹過擬合風險很大,理論上可以完全分得開資料
(想象一下,如果樹足夠龐大,每個葉子節點不就乙個資料了嘛)
決策樹剪枝策略:預剪枝,後剪枝
預剪枝:邊建立決策樹邊進行剪枝的操作(更實用)
後剪枝:當建立完決策樹後來進行剪枝操作
決策樹剪枝策略
決策樹預剪枝:限制深度,葉子節點個數
葉子節點樣本數,資訊增益量等
後剪枝:通過一定的衡量標準
(葉子節點越多,損失越大)
ensemble learning
目的:讓機器學習效果更好,單個不行,群毆走起
整合演算法
bagging:訓練多個分類器取平均
stacking:聚合多個分類或回歸模型(可以分階段來做)
boosting:從弱學習器開始加強,通過加權來進行訓練
(加入一棵樹,要比原來強)
bagging模型
全稱: bootstrap aggregation(說白了就是並行訓練一堆分類器)
整合演算法
最典型的代表就是隨機森林啦
森林:很多個決策樹並行放在一起
隨機:資料取樣隨機,特徵選擇隨機
隨機森林
構造樹模型:
整合演算法
由於二重隨機性,使得每個樹基本上都不會一樣,最終的結果也會不一樣
bagging模型
樹模型:
整合演算法
之所以要進行隨機,是要保證泛化能力,如果樹都一樣,那就沒意義了!
隨機森林優勢
它能夠處理很高維度(feature很多)的資料,並且不用做特徵選擇
整合演算法
在訓練完後,它能夠給出哪些feature比較重要
可以進行視覺化展示,便於分析
容易做成並行化方法,速度比較快
bagging模型
knn模型:
整合演算法
knn就不太適合,因為很難去隨機讓泛化能力變強!
bagging模型
樹模型:
整合演算法
理論上越多的樹效果會越好,但實際上基本超過一定數量就差不多上下浮動了
boosting模型
典型代表:adaboost, xgboost
整合演算法
adaboost會根據前一次的分類效果調整資料權重
最終的結果:每個分類器根據自身的準確性來確定各自的權重,再合體
adaboost工作流程
每一次切一刀!
整合演算法
最終合在一起
弱分類器這就公升級了!
stacking模型
堆疊:很暴力,拿來一堆直接上(各種分類器都來了)
整合演算法
可以堆疊各種各樣的分類器(knn,svm,rf等等)
為了刷結果,不擇手段!
分階段:第一階段得出各自結果,第二階段再用前一階段結果訓練
stacking模型
整合演算法
堆疊在一起確實能使得準確率提公升,但是速度是個問題
整合演算法是競賽與**神器,當我們更關注於結果時不妨來試試!
決策樹與整合學習
由於機器學習涉及的方法很廣,對機器學習有了乙個橫向巨集觀的把握之後,需要縱向對某一類方法進行深入的學習。因為要研究的課題內容是有監督學習,因此選擇一類有監督的學習方法進行深入的研究 整合學習綜述 2016年10月 目前來說機器學習的研究主要分為四個大方向 a 通過整合學習方法提高學習精度 b 擴大學...
機器學習演算法 決策樹
決策樹類似一中策略或者條件選擇,其中各個節點代表選擇條件,各個葉子結點代表可能達到的結果,決策樹 decision tree 是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就...
機器學習演算法 決策樹
決策樹的使用主要是用於分類。年齡收入 信用是否學生 是否買電腦年輕高 高是是中年 低中否否 老年中低否 是對於一些適合分類的資料中,考慮各種因素對結果的影響大小進行決策,一般是先選取區分度較高的因素。比如說,年齡大小這個因素在很大程度上影響我們的結果 是否買電腦。那麼,年齡因素將作為第乙個決策因素出...