【机器学习】sclearn分类算法-决策树、随机森林
分類算法-決策樹、隨機森林
- 1.決策樹
- 1.1 認識決策樹
- 1.2 信息論基礎-銀行貸款分析
- 1.3 決策樹的生成
- 1.4 決策樹的劃分依據之一-信息增益
- 1.5 sklearn決策樹API
- 1.6 泰坦尼克號乘客生存分類
- 2. 集成學習方法-隨機森林
1.決策樹
1.1 認識決策樹
決策樹思想的來源非常樸素,程序設計中的條件分支結構就是if-then結構,最早的決策樹就是利用這類結構分割數據的一種分類學習方法
1.2 信息論基礎-銀行貸款分析
每猜一次給一塊錢,告訴我是否猜對了,那么我需要掏多少錢才能知道誰是冠軍?我可以把球編上號,從1到32,然后提問:冠 軍在1-16號嗎?依次詢問,只需要五次,就可以知道結果。
32支球隊,log32=5比特
64支球隊,log64=6比特
*1948年,香農發表了劃時代的論文——通信的數學原理,奠定了現代信息論的基礎
信息的單位:比特
“誰是世界杯冠軍”的信息量應該比5比特少。香農指出,它的準確信息量應該是:
H = -(p1logp1 + p2logp2 + … + p32log32)
H的專業術語稱之為信息熵,單位為比特。
公式:
當這32支球隊奪冠的幾率相同時,對應的信息熵等于5比特
如果:不知道任何一個球隊的信息的話,5bit 1/32 1/32
5=-(1/32logp1/32 + 1/32log1/32 + … + 1/32log1/32)
但是當開放一些數據信息時
5<-(1/4logp1/4 + 1/4log1/4 + … )
比如德國1/4 巴西1/4 中國1/4
當得到一些信息時,信息熵是減少的。信息熵越大,不確定性越大。
1.3 決策樹的生成
1.4 決策樹的劃分依據之一-信息增益
注:信息增益表示得知特征X的信息而使得類Y的信息的不確定性減少的程度
特征A對訓練數據集D的信息增益g(D,A),
定義為集合D的信息熵H(D)與特征A給定條件下D的信息條件熵H(D|A)之差,即公式為:
結合前面的貸款數據來看我們的公式:
- 信息熵的計算:
- 條件熵的計算:
注:𝐶_𝑘 表示屬于某個類別的樣本數,
其他常見決策樹使用的算法
1.5 sklearn決策樹API
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None) 決策樹分類器 criterion:默認是’gini’系數,也可以選擇信息增益的熵’entropy’ max_depth:樹的深度大小 random_state:隨機數種子method: decision_path:返回決策樹的路徑1.6 泰坦尼克號乘客生存分類
- 泰坦尼克號數據
在泰坦尼克號和titanic2數據幀描述泰坦尼克號上的個別乘客的生存狀態。在泰坦尼克號的數據幀不包含從劇組信息,但它確實包含了乘客的一半的實際年齡。關于泰坦尼克號旅客的數據的主要來源是百科全書Titanica。這里使用的數據集是由各種研究人員開始的。其中包括許多研究人員創建的旅客名單,由Michael A. Findlay編輯。
我們提取的數據集中的特征是票的類別,存活,乘坐班,年齡,登陸,home.dest,房間,票,船和性別。**乘坐班是指乘客班(1,2,3),是社會經濟階層的代表。其中age數據存在缺失。
數據:http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
泰坦尼克號乘客生存分類模型
流程:
1、pd讀取數據
2、選擇有影響的特征,處理缺失值
3、進行特征工程,pd轉換字典,特征抽取 x_train.to_dict(orient=“records”)
4、決策樹估計器流程
- 決策樹的結構、本地保存:
1、sklearn.tree.export_graphviz() 該函數能夠導出DOT格式
tree.export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])
2、工具:(能夠將dot文件轉換為pdf、png)
安裝graphviz
ubuntu:sudo apt-get install graphviz Mac:brew install graphviz
3、運行命令
然后我們運行這個命令
$ dot -Tpng tree.dot -o tree.png
決策樹的優缺點以及改進
- 優點:
簡單的理解和解釋,樹木可視化。
需要很少的數據準備,其他技術通常需要數據歸一化 - 缺點:
決策樹學習者可以創建不能很好地推廣數據的過于復雜的樹,這被稱為過擬合
決策樹可能不穩定,因為數據的小變化可能會導致完全不同的樹被生成 - 改進:
減枝cart算法
隨機森林
2. 集成學習方法-隨機森林
-
集成學習
通過建立幾個模型組合的來解決單一預測問題。它的工作原理是生成多個分類器/模型,各自獨立地學習和作出預測。這些預測最后結合成單預測,因此優于任何一個單分類的做出預測。 -
隨機森林
定義:在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數而定。
例如, 如果你訓練了5個樹, 其中有4個樹的結果是True, 1個數的結果是False, 那么最終結果會是True. -
學習算法
根據下列算法而建造每棵樹:
用N來表示訓練用例(樣本)的個數,M表示特征數目。
輸入特征數目m,用于確定決策樹上一個節點的決策結果;其中m應遠小于M。
從N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓練集(即bootstrap取樣),并用未抽到的用例(樣本)作預測,評估其誤差。 -
為什么要隨機抽樣訓練集?
如果不進行隨機抽樣,每棵樹的訓練集都一樣,那么最終訓練出的樹分類結果也是完全一樣的 -
為什么要有放回地抽樣?
如果不是有放回的抽樣,那么每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最后分類取決于多棵樹(弱分類器)的投票表決。 -
集成學習API
- 隨機森林的優點
在當前所有算法中,具有極好的準確率
能夠有效地運行在大數據集上
能夠處理具有高維特征的輸入樣本,而且不需要降維
能夠評估各個特征在分類問題上的重要性
對于缺省值問題也能夠獲得很好得結果
總結
以上是生活随笔為你收集整理的【机器学习】sclearn分类算法-决策树、随机森林的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity鼠标控制镜头旋转_Unity
- 下一篇: 计算机c语言二级试题及答案,计算机c语言