首頁 >後端開發 >Python教學 >什麼是決策樹演算法?

什麼是決策樹演算法?

PHP中文网
PHP中文网原創
2017-06-20 10:11:184892瀏覽

英文名字: Decision Tree

決策樹是一種典型的分類方法,首先對資料進行處理,利用歸納演算法產生可讀的規則和決策樹,然後使用決策對新資料進行分析。本質上決策樹是透過一系列規則對資料進行分類的過程。

決策樹是一種監督式學習方法,主要用於分類和迴歸。 演算法的目標是透過推斷資料特徵,學習決策規則從而創建一個預測目標變數的模型。

決策樹類似if-else結構,它的結果就是你要產生這樣一個可以從樹根開始不斷判斷選擇到葉子節點的樹。 但這裡的if-else判斷條件不是人工設置,而是電腦根據我們提供的演算法自動產生的。

決策樹組成元素

  • #決策點

是對幾個可能方案的選擇,即最後選擇的最佳方案。如果決策屬於多層決策,則決策樹的中間可以有多個決策點,以決策樹根部的決策點為最終決策方案。

  • 狀態節點

代表備選方案的經濟效果(期望值),透過各狀態節點的經濟效果的對比,依照一定的決策標準就可以選出最佳方案。由狀態節點引出的分支稱為機率枝,機率枝的數目表示可能出現的自然狀態數目每個分枝上要註明該狀態出現的機率。

  • 結果節點

將每個方案在各種自然狀態下所取得的損益值標註於結果節點的右端

決策樹組優缺點

決策樹優勢

  • 簡單易懂,原理清晰,決策樹可以實現視覺化

  • 推理過程很容易理解,決策推理過程可以表示成if-else形式

  • 推理過程完全依賴屬性變數的取值特徵

  • #可自動忽略目標變數沒有貢獻的屬性變量,也為判斷屬性變數的重要性,減少變數的數目提供參考

決策樹劣勢

  • #可能會建立過於複雜的規則,即過度擬合。

  • 決策樹有時是不穩定的,因為資料微小的變動,可能會產生完全不同的決策樹。

  • 學習最佳決策樹是一個NP完全問題。 所以,實際決策樹學習演算法是基於試探演算法,例如在每個節點實現局部最優值的貪心演算法。 這樣的演算法是無法保證回傳一個全域最優的決策樹。可以透過隨機選擇特徵和樣本來訓練多個決策樹來緩解這個問題。

  • 有些問題學習起來非常困難,因為決策樹很難表達。如:異或問題、奇偶校驗或多路復用器問題

  • 如果有些因素佔據支配地位,決策樹是有偏的。因此建議在擬合決策樹之前先平衡資料的影響因子。

決策樹常見演算法

決策樹的演算法有很多,有CART、ID3、C4.5、C5.0等,其中ID3、C4.5、 C5.0都是基於資訊熵的, 而CART採用的是類似熵的指數作為分類決策,形成決策樹後之後還要進行剪枝。

熵(Entropy):系統的凌亂程度

ID3演算法

ID3演算法是一種分類決策樹演算法。他透過一連串的規則,將資料最後分類成決策樹的形式,分類的根據是熵。

ID3演算法是一種經典的決策樹學習演算法,由Quinlan提出。 ID3演算法的基本思想是,以資訊熵為度量,用於決策樹節點的屬性選擇,每次優先選取資訊量最多的屬性,亦即能使熵值變為最小的屬性,以構造一顆熵值下降最快的決策樹,到葉節點處的熵值為0。此時,每個葉子節點對應的實例集中的實例屬於 同一類別。

透過ID3演算法來實現客戶流失的預警分析,找出客戶流失的特徵,以幫助電信公司有針對性地改善客戶關係,避免客戶流失

利用決策樹方法進行資料探勘,一般有下列步驟:資料預處理、決策樹探勘操作,模式評估與應用。

C4.5演算法

C4.5是ID3的進一步延伸,透過將連續屬性離散化,去除了特徵的限制。 C4.5將訓練樹轉換為一系列if-then的語法規則。可確定這些規則的準確性,從而決定哪些應該被採用。如果去掉某項規則,準確度能提高,則應該實行修剪。

C4.5與ID3在核心的演算法是一樣的,但是有一點所採用的辦法是不同的,C4.5採用了信息增益率作為劃分的根據,克服了ID3演算法中採用信息增益劃分導致屬性選擇偏向取值多的屬性。

C5.0演算法

C5.0較C4.5使用較小的內存,建立較小的決策規則,更加準確。

CART算法

分类与回归树(CART——Classification And Regression Tree)) 是一种非常有趣并且十分有效的非参数分类和回归方法。它通过构建二叉树达到预测目的。 分类与回归树CART 模型最早由Breiman 等人提出,已经在统计领域和数据挖掘技术中普遍使用。它采用与传统统计学完全不同的方式构建预测准则,它是以二叉树的形式给出,易于理解、使用和解释。由CART 模型构建的预测树在很多情况下比常用的统计方法构建的代数学预测准则更加准确,且数据越复杂、变量越多,算法的优越性就越显著。模型的关键是预测准则的构建,准确的。 定义: 分类和回归首先利用已知的多变量数据构建预测准则, 进而根据其它变量值对一个变量进行预测。在分类中, 人们往往先对某一客体进行各种测量, 然后利用一定的分类准则确定该客体归属那一类。例如, 给定某一化石的鉴定特征, 预测该化石属那一科、那一属, 甚至那一种。另外一个例子是, 已知某一地区的地质和物化探信息, 预测该区是否有矿。回归则与分类不同, 它被用来预测客体的某一数值, 而不是客体的归类。例如, 给定某一地区的矿产资源特征, 预测该区的资源量。

CART和C4.5很相似,但是它支持数值的目标变量(回归)且不产生决策规则。CART使用特征和阈值在每个节点获得最大的信息增益来构建决策树。

scikit-learn 使用的是 CART 算法

示例代码: 

#! /usr/bin/env python#-*- coding:utf-8 -*-from sklearn import treeimport numpy as np# scikit-learn使用的决策树算法是CARTX = [[0,0],[1,1]]
Y = ["A","B"]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X,Y)

data1 = np.array([2.,2.]).reshape(1,-1)print clf.predict(data1) # 预测类别  print clf.predict_proba(data1) # 预测属于各个类的概率

 

好,就这些了,希望对你有帮助。

本文github地址:

20170619_决策树算法.md

欢迎补充 

以上是什麼是決策樹演算法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn