機器學習之決策樹
前言
在機器學習中,決策樹是非常重要的組成部分,而且決策樹並不多見機器學習中常見到的數學公式,易於理解,本文是記錄一下自己的學習資料,以備檢視。
定義
在維基百科中,決策樹定義如下:
機器學習中,決策樹是一個預測模型;他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。決策樹僅有單一輸出,若欲有複數輸出,可以建立獨立的決策樹以處理不同輸出。 資料探勘中決策樹是一種經常要用到的技術,可以用於分析資料,同樣也可以用來作預測。
從資料產生決策樹的機器學習技術叫做決策樹學習,通俗說就是決策樹。
在《資料科學入門》中,對決策樹有以下描述
決策樹通過樹狀結構來表示各種可能的決策路徑(decision path),以及每個路徑的結果
優缺點
優點:
計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特徵資料。
缺點
可能會產生過度匹配問題。
適用資料型別
數值型和標稱型
資料來源
《機器學習實戰》第三章
結構
一個決策樹包含三種型別的節點:
- 決策節點:通常用矩形框來表示
- 機會節點:通常用圓圈來表示
- 終結點:通常用三角形來表示
一棵決策樹包含一個根節點,若干個內部節點和若干個葉節點;葉節點對應於決策結果,其他每個節點則對應於一個屬性測試;每個節點包含的樣本集合根據屬性測試的結果被劃分到子節點中;根節點包含樣本全集。
決策樹學習的目的是為了產生一棵泛化能力強,即處理未見示例能力強的決策樹。
流程
在《機器學習實戰》中,對決策樹流程有以下描述
決策樹的一般流程:
- 收集資料:可以使用任何方法
- 準備資料:樹構造演算法只適用於標稱型資料,因此數值型資料必須離散化
- 分析資料:可以使用任何方法,構造樹完成以後,我們應該檢查圖形是否符合預期
- 訓練演算法:構造樹的資料結構
- 測試演算法:使用經驗樹計算錯誤率
- 使用演算法:此步驟可以適用於任何監督學習演算法,而使用決策樹可以更好地理解資料的內在含義
在西瓜書中,對決策樹生成過程有以下描述:
決策樹生成過程是一個遞迴過程。有三種情況導致遞迴返回
1. 當前節點包含的樣本全屬於同一類別,無需劃分
2. 當前的屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分
3. 當前結點包含的樣本集合為空,不能劃分在情形2中,我們把當前節點標記為葉節點,並將其類別設定為該節點所包含樣本最多的類別。
在情形3中,同樣把當前節點標記為葉節點,但將其類別設定為其父節點所含樣本最多的類別。兩種情形之不同:
情形2是在利用當前節點的後驗分佈,而3則是把父節點的樣本分佈作為當前節點的先驗概率
資訊增益
熵
資訊熵(information entropy ) 是度量樣本集合純度最常用的一種治標。
熵是整個系統的平均訊息量,即:
值越小,純度越高。(純度越高,資訊含量越低,包含的不確定性越低)
資訊增益(information gain)
資訊增益是特徵選擇中的一個重要指標,它定義為一個特徵能夠為分類系統帶來多少資訊,帶來的資訊越多,該特徵越重要。
那麼如何衡量一個特徵為分類系統帶來的資訊多少呢:
對一個特徵而言,系統有它和沒它時資訊量將發生變化,而前後資訊量的差值就是這個特徵給系統帶來的資訊量。所謂資訊量,其實就是熵。
一般而言,資訊增益越大,則意味著使用a來進行劃分所獲得的“純度提升”越大。
基尼係數
Gini(D) 反映了從資料集D中隨機抽取兩個樣本,其類別標記不一致的概率。因此,Gini(D)越小,則資料集D的純度越高。
剪枝處理(pruning)
剪枝是決策樹學習演算法對付“過擬合”的主要手段。分為”預剪枝”(prepruning)和”後剪枝”(post-pruning)
“預剪枝”(prepruning)
在決策樹生成過程中,對每個結點在劃分前先進行評估,若當前節點的劃分不能帶來決策樹泛化效能的提升,則停止劃分並將當前節點標記為葉節點。
“後剪枝”(post-pruning)
先從訓練集生成一棵完整的決策樹,然後自底向上地對非葉節點進行考察,若將該節點對應的子樹替換為葉節點能帶來決策樹效能提升,則將該子樹替換為葉節點。
演算法
決策樹學習演算法: ID3、C4.5和CART
多變數決策樹演算法:OC1
參考資料
《機器學習實戰》第三章
《機器學習》第四章
《資料科學入門》第十七章
相關文章
- 亞馬遜雲科技智慧湖倉架構:從上雲到實時決策的資料服務整體解決方案
- 【Python機器學習實戰】決策樹和整合學習(一)PythonMachine Learning決策樹
- 機器學習基礎篇:支援向量機(SVM)理論與實踐Machine Learning
- [原始碼解析] 機器學習引數伺服器Paracel (3)------資料處理Machine Learning
- 【Python機器學習實戰】決策樹和整合學習(二)——決策樹的實現PythonMachine Learning決策樹
- 《深入理解java虛擬機器》第3版筆記3Java
- 【Python機器學習實戰】決策樹與整合學習(三)——整合學習(1)PythonMachine Learning決策樹
- (Python教程)什麼是機器學習、人工智慧、深度學習,三者又是什麼關係?人工智慧PythonMachine Learning深度學習
- rasa form的中斷形式 自然機器語言學習 人工智慧人工智慧
- 【Python機器學習實戰】決策樹與整合學習(四)——整合學習(2)GBDTPythonMachine Learning決策樹
- Python+mirai開發QQ機器人起步教程(2021.9.9測試有效)人工智慧Python
- Gartner:人機結合的資料分析如何影響有效決策(附下載)
- 【Python機器學習實戰】決策樹與整合學習(六)——整合學習(4)XGBoost原理篇PythonMachine Learning決策樹
- 【機器學習|數學基礎】Mathematics for Machine Learning系列之線性代數(1):二階與三階行列式、全排列及其逆序數Machine Learning