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

什麼是決策樹演算法?

Jun 20, 2017 am 10:11 AM
決策樹演算法

英文名字: 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
Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分詞在景區評論分析中的準確性?如何提高jieba分詞在景區評論分析中的準確性?Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用