機器學習:算法模型:決策樹

原文鏈接:https://www.cnblogs.com/wenyi1992/p/7685131.html

【基本流程】

分類決策樹的核心思想就是在一個數據集中找到一個最優特征,然后從這個特征的選值中找一個最優候選值(這段話稍后解釋),根據這個最優候選值將數據集分為兩個子數據集,然后遞歸上述操作,直到滿足指定條件為止。

最優特征怎么找?這個問題其實就是決策樹的一個核心問題了。我們常用的方法是更具信息增益或者信息增益率來尋找最優特征,信息增益這東西怎么理解呢!搞清這個概念我們首先需要明白熵這個東西!熵簡單的講就是說我們做一件事需要的代價,代價越高肯定就越不好了。放到機器學習的數據集中來講就是我們數據的不確定性,代價越高對應的不確定就越高,我們用決策樹算法的目的就是利用數據的一些規則來盡可能的降低數據集的不確定性。好了,有了這個思想我們要做的事就很簡單了,給定一批數據集,我們可以很容易得到它的不確定性(熵),然后呢!我們要想辦法降低這個不確定性,我們需要挖掘數據集中有用的特征,在某個特征的限制下,我們又能得到數據集的不確定性(這個其實就是書上的條件熵),一般而言給定了一個有用的特征,數據的不確定性肯定降低了(因為有一個條件約束,比沒有條件約束效果肯定會好一點,當然你的特征沒有用,那就另說了)。我們用兩次的值作差,這個結果的含義很明了,給定了這個特征,讓我們數據集的不確定性降低了多少,當然降低的越多這個特征肯定就越好了。而我們講了這么多就是要找到那一個讓數據集不確定性降低最多的特征。我們認為這個特征是當前特征中最好的一個。

我們找到了最優特征,為什么還要找最優特征的最優候選值?其實呀,找不找主要看我們面對的問題,一般的二分類問題確實沒必要找(因為總共就兩個類),但對于多分類問題,這個還是建議找,為什么要找呢?我們來分析一下:假如我們的某個最優特征有三個類別:我們如果不找就直接分為三個子節點了。這樣會出現一個問題,就是我們的這個分類對特征值會變得敏感,為什么這么說,我們來講一個很簡答的例子:我們平時考試規定了60分及格,這個控制對于大多數學生很好把控,因為就一個條件,相當于一個二分類。但是如果我們把條件控制嚴格一些,比如超過60分,不超過80分為優秀學生(當然有點扯蛋了)。這個控制很多學霸就不好控制了,對于多分類問題也是這個道理,如果我們一下子從父節點直接分了多個子節點,那么我們的數據肯定會對這個控制很敏感,敏感就會導致出錯。出錯不是我們希望看到的,所以我們建議對多分類問題找最優候選值來轉化為二分類問題,同樣多個二分類問題其實也是一個多分類問題,只是多了幾個遞歸過程而已。

什么時候停止?停止條件是什么?這個問題其實書上也講得很簡單,基本都是一筆帶過的,我來稍微詳細說一下:我們從問題的根源出發去想一下,我們構造一顆決策樹的目的是什么?當然是為了能在數據集上取得最好的分類效果,很好這就是一個停止標準呀!當我們檢測到數據的分類效果已經夠好了,我們其實就可以停止了。當然我們常用的是控制葉節點,比如控制葉節點的樣本數目,比如當某個子節點內樣本數目小于某一個指定值,我們就決定不再分了。還有葉節點的純度,我們規定葉節點樣本必須屬于同一類才停止,這也是一個停止條件。還有最大樹的深度,比如我們規定樹的最大深度為某一個值,當樹深度到達這個值我們也要停止。還有比如:分裂次數,最大特征數等等。總之停止條件不是死的,我們可以更具自己的問題來隨意控制,開心就好!

【屬性選擇】

  • 信息增益——ID3

ID3算法其實就是我們一般所理解的決策樹算法,其基本步驟就是我們上面所講的步驟,這個算法的核心思想就是用信息增益來選擇最優分類特征,信息增益的公式上面也給出了,這個公式我們仔細分析一下會發現一個問題:我們需要找到gain(D,A)最大的特征,對于一個數據集entropy(D)是給定的,也就是說我們需要entropy(D,A)最小,意思就是我們所選的特征是那些分完后子節點的純度最高的特征,什么樣的特征分完后子節點的特征純度比較高(熵比較小),該特征的子類別很多,即可取值很多的這一類特征。總結一下就是信息增益偏向于去那些擁有很多子類的特征。這也是這個算法的一大致命缺點,任何帶有主觀偏向性的算法都不是一個好的算法,當然ID3算法的另一個缺點也顯而易見,它只能處理那些分類的特征,對于連續值特征毫無辦法(其實我們可以人為的把連續屬性給離散化,但是人為必然會導致可能不準確)。

  • 增益率——C4.5

因此就有了下面的這個算法

C4.5是對ID3算法的一個改進,主要改進點就是解決了ID3的幾個缺點。首先C4.5算法用的是信息增益率來代替ID3中的信息增益。從表達式可以看出來,這么做其實就是弱化那些偏向,讓選擇最優特征時更加公平。
另外C4.5的改進就是可以處理連續值(這個方法其實和上面我提到的連續值離散化很類似,可以理解為單點逐一離散化),具體步驟如下:
1.首先對于連續值屬性的值進行排序(A1,A2......An);
2.我們可以在每兩個值之間取一個點,用這個點就可以把該組連續值分為兩部分,比如我們去一個點a1($A1<a1<A2$),則小于a1的部分(A1)大于a1的部分(A2......An)。但是這個a1好嗎?不知道呀!那我們loop一下所有這樣的a(共有n-1個),每一個ai我們可以算出分裂前后的信息增益率,然后我們求一個max即可。很簡單吧!思路很好,但是呀很顯然有個問題,時間開銷有點大。
3.缺失值的處理,ID3不能直接處理(需要我們人工處理,比如單獨賦值或賦一個平均值),C4.5給出了一個很優雅的方式,為什么說優雅,這樣講吧!我們每一個特征的取值都有若干個,根據訓練集每個可能的取值都有一個概率,我們用這個概率來表示這個確實值得可能取值。這樣就顯得很合理了。

  • C5.0

C4.5各方面完勝ID3,所以C4.5一出現就被廣泛應用,后面為了解決這個算法的時間開銷問題,推出了這個算法的改進版C5.0。

國外有一篇比較C4.5和C5.0性能的blog寫的很好,可以搜一下。大體上C5.0的速度是C4.5的10倍以上。

  • 基尼系數——CART

我們講了這么多其實都沒逃脫classification tree。我們還有很大一塊問題沒有講,那就是regression。

這里我們在來講講regression tree。講到regression tree我們就不能不提大名鼎鼎的CART(classification and regression tree)樹了,這個才是最為核心的決策樹。

為什么這么說,因為呀我們以后使用到的random forest,gbdt, xgboost里面的base estimator 都是CART樹。所以這個東西我來認真講講。

CART樹既可以用于分類問題也可以用于回歸問題,用于分類問題的思想和我們上面介紹的ID3,C4.5其實是一樣的,唯一的不同就是CART樹用的是基尼指數來確定最優劃分點的。

基尼指數: $gini(D) = \sum_{i=1}^n p_k?(1-p_k)$

基尼指數的通俗解釋就是:表示一件事物的不確定性,基尼指數越大不確定性越大。

我們要找基尼指數小的特征,這樣的特征對于劃分數據集的準確性會更高(不確定性低嘛)

類似的有一個條件基尼指數:$gini(D,A) = \sum_{i=1}^k \frac {D_{A_i}}{D}?gini(D_{A_i})$整體思路跟信息增益一樣,我就不浪費時間了。

對于回歸問題:首先簡單描述一下決策樹處理回歸問題的流程:

對于一個數據集我們可以將其分為m個子區間(R1,R2......Rm)對于每一區間我們可以產生一個對應的輸出cm.

我們的最終輸出$f(x)=\sum_{i=1}^mc_mI(x \in R_m)$.對于一個給定的回歸樹我們用平方誤差來表示每個單元的損失$\sum_{x_i \in R_m}(y_i-f(x_i))^2$,

那么我們每個單元的最優輸出就是使該單元的損失函數最小。

每個單元的最終輸出可以表示為$C = avg(y_i|x_i)(x_i \in R_m)$(區間$R_m$ 上所有$x_i$ 的輸出$y_i$的均值)

對于回歸問題,我們面臨的問題也是如何確定劃分點(決策樹的核心)。

這里CART樹的處理方式和C4.5處理連續變量的方式有點類似,即對于每個特征的取值,我們從中找一個點j,這個點j可以將該特征分為兩部分$R_1 = ({ x|x_i

這里我們必須強調一下,我們在使用決策樹尋找每一步的最優切分點時,常用的是貪心算法,貪心算法有一個問題就是局部最優,而不是全局最優。

所以我們一定要記住,決策樹在選擇特征及切分點時考慮的是一個局部最優問題。

好了!上面基本就是決策樹最常用的三個算法,我們先介紹了分類樹及分類樹中兩個經典算法ID3和C4.5,然后我們又介紹了回歸樹CART樹,

這個樹在目前是主流的決策樹,使用很廣泛,必須十分熟悉其中的一些關鍵問題。

?

【剪枝處理】

  • 預剪枝
  • 后剪枝

【連續值與缺失值】

  • 連續值處理
  • 缺失值處理

【多變量決策樹】

轉載于:https://www.cnblogs.com/ForTech/p/8666873.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453124.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453124.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453124.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PDU

協議數據單元 PDU&#xff08;Protocol Data Unit&#xff09;是指對等 層次 之間傳遞的數據單位。 協議數據單元(Protocol Data Unit )物理層的 PDU是 數據位 &#xff08;bit&#xff09;&#xff0c; 數據鏈路層 的 PDU是 數據幀 &#xff08;frame&#xff09;&#xff0c;…

Haproxy+Percona-XtraDB-Cluster 集群

Haproxy介紹 Haproxy 是一款提供高可用性、負載均衡以及基于TCP&#xff08;第四層&#xff09;和HTTP&#xff08;第七層&#xff09;應用的代理軟件&#xff0c;支持虛擬主機&#xff0c;它是免費、快速并且可靠的一種解決方案。 HAProxy特別適用于那些負載特大的web站點&…

mac安裝和卸載mysql_基于centos7系統卸載rpm安裝的mysql

概述前面有介紹了怎么用rpm包去安裝mysql&#xff0c;那么如果我們要卸載的話可以怎么弄呢&#xff1f;下面介紹下卸載mysql的流程。環境&#xff1a;centos7.31、 檢查是否安裝了MySQL組件。# rpm -qa | grep -i mysql2、卸載前關閉MySQL服務systemctl stop mysqld3、收集MySQ…

(轉)Linux服務器磁盤空間占滿問題

轉自&#xff1a;https://www.cnblogs.com/cindy-cindy/p/6796684.html 下面我們一起來看一篇關于Linux服務器磁盤占滿問題解決&#xff08;/dev/sda3 滿了&#xff09;&#xff0c;希望碰到此類問題的人能帶來幫助。今天下班某電商技術部leader發現個問題&#xff0c;說他們服…

計算機組成原理2套題,計算機組成原理試卷及答案2套.doc

計算機組成原理試卷A一、 選擇題(每小題2分&#xff0c;共30分)1&#xff0e; 下列數中最小的數是______。A.(100100)2 B.(43)8 C.(110010)BCD D.(25)162&#xff0e; 計算機經歷了從器件角度劃分的四代發展歷程&#xff0c;但從系統結構上來看&#xff0c;至今絕大多數計算機仍…

改變您一生的90/10原理

了解并運用由Stephen Covey發現的90/10原理&#xff0c;您的一生或許會有所改變&#xff0c;至少&#xff0c;您對待事情的態度會與以前不一樣了。 什么是90/10原理&#xff1f;即在您的一生中&#xff0c;只有10%的事情您無能為力&#xff0c;而90%的事情都在您的把握之中。 我…

透明網橋

所謂“透明網橋”是指&#xff0c;它對任何數據站都完全透明&#xff0c;用戶感覺不到它的存在&#xff0c;也無法對網橋尋址。所有的路由判決全部由網橋自己確定。當網橋連入網絡時&#xff0c;它能自動初始化并對自身進行配置。 透明網橋以混雜方式工作&#xff0c;它接收與…

vue用阿里云oss上傳圖片使用分片上傳只能上傳100kb以內的解決辦法

首先&#xff0c;vue和阿里云oss上傳圖片結合參考了 這位朋友的 https://www.jianshu.com/p/645f63745abd 文章&#xff0c;成功的解決了我用阿里云oss上傳圖片前的一頭霧水。 該大神文章里有寫github地址&#xff0c;里面的2.0分支采用vue2.0實現&#xff0c;只不過這個上傳圖…

iphone11右上角信號顯示_蘋果iOS11信號強度的標志變了意味著什么?

原標題&#xff1a;蘋果iOS11信號強度的標志變了意味著什么?在iOS 11測試版中&#xff0c;蘋果將狀態欄中表示 LTE信號強度的5個小圓點換成了4 個豎狀條。從 iOS 7 到 iOS 10蘋果就一直使用小圓點標志信號強度設計&#xff0c;而這次的改變也意味著范圍的變化。這到底是什么意…

計算機二級access選擇題技巧,計算機二級access考試注意事項及解題技巧策略

計算機二級access考試注意事項及解題技巧策略2017年計算機考試將至&#xff0c;今天yjbys小編為大家帶來了計算機二級access考試注意事項及解題技巧哦!快點行動起來吧~考試注意事項1.考試時間&#xff1a;120分鐘(即2小時)2.考試類型&#xff1a;上機操作 (總分100分&#xff0…

【uoj#37/bzoj3812】[清華集訓2014]主旋律 狀壓dp+容斥原理

題目描述 求一張有向圖的強連通生成子圖的數目對 $10^97$ 取模的結果。 題解 狀壓dp容斥原理 設 $f[i]$ 表示點集 $i$ 強連通生成子圖的數目&#xff0c;容易想到使用總方案數 $2^{sum[i]}$ 減去不為強連通圖的方案數得到強連通圖的方案數&#xff0c;其中 $sum[i]$ 表示點集 $…

交換機實現虛擬局域網

但由于它是邏輯地而不是物理地劃分&#xff0c;所以同一個 VLAN內的各個工作站無須被放置在同一個物理空間里&#xff0c;即這些工作站不一定屬于同一個物理LAN網段。一個VLAN內部的廣播和單播流量都不會轉發到其他 VLAN中&#xff0c;即使是兩臺計算機有著同樣的網段&#xff…

產品與項目

產品和項目到底有什么區別&#xff0c;擴展開說&#xff0c;做產品和做項目最大的不同在哪里&#xff1f;產品經理和項目經理&#xff08;都是PM&#xff0c;有時候自己都搞不清說的哪一個&#xff09;職責的不同在哪里&#xff1f;一直困擾了我很長時間&#xff0c;直到2007年…

python斐波那契前20遞歸_算法python實現經典遞歸問題(漢諾塔, 斐波那契數列,階乘)...

經典遞歸漢諾塔問題背景故事傳說印度某間寺院有三根柱子&#xff0c;上串64個金盤。寺院里的僧侶依照一個古老的預言&#xff0c;以上述規則移動這些盤子&#xff1b;預言說當這些盤子移動完畢&#xff0c;世界就會滅亡。這個傳說叫做梵天寺之塔問題(Tower of Brahma puzzle)。…

Hello This Cruel World!

第一天&#xff0c;已經成為了半年的OIer&#xff0c;仍然是個蒟蒻&#xff0c;希望以后能夠變強&#xff01; 在OJ和博客的常用網名&#xff1a; TimeTraveller ->洛谷 VictoryCzt ->csdn,cnblog等 Czt Czttt czt ->OJ CrazyTea CrazyTeaMajor 游戲&#xff0c;QQ…

計算機系統的部件名稱作用,電腦配件與每個配件作用詳細完整的解釋

電腦各配件的具體功能和特性說起來很長&#xff0c;先簡單介紹一下。一臺個人臺式電腦的主要配件有&#xff1a;1.主板&#xff1a;也叫母板&#xff0c;是連接CPU、內存、AGP等電腦配件的最主要最基本的載體&#xff0c;主板的結構類型決定電腦各配件的結構和類型&#xff0c;…

信道效率以及信道的吞吐率

信道的效率即為信道的利用率&#xff0c;是指發送方在一個發送周期的時間內&#xff0c;有效的發送數據所需要的時間占整個發送周期的比率。 例如,發送方從開始發送數據&#xff0c;到收到第一個確認幀為止&#xff0c;稱為一個周期&#xff0c;設為T。發送方在這個周期內共發…

jquery兄弟標簽_js jquery獲取當前元素的兄弟級 上一個 下一個元素

var chils s.childNodes; //得到s的全部子節點var pars.parentNode; //得到s的父節點var nss.nextSbiling; //獲得s的下一個兄弟節點var pss.previousSbiling; //得到s的上一個兄弟節點var fcs.firstChild; //獲得s的第一個子節點var lcs.lastChile; //獲得s的最后一…

將本地代碼備份到Github public repository

1. 在本地代碼所在的文件夾中初始化&#xff0c;即打開powershell&#xff0c;輸入下面命令 git init 此時本地文件夾中會出現一個.git的隱藏文件夾。 2. 然后將當前的文檔commit&#xff0c;在本地commit之前可以先加一個.gitignore文件&#xff0c;忽略一些不必要的文件&…