機器學習(二) 決策樹

2021-07-26 06:23:14 字數 2159 閱讀 3684

決策樹是用於分類的一種機器學習演算法。其最大的特點就是簡單,直觀. 由於資料來自於之前的筆記。原例子的出處找不到,乾脆就手繪算了~~xd。

其中如果資料不是離散值,要先處理成離散值再進行決策樹的計算。

(圖1)

用乙個例子來講吧。 如上圖,現在是有14條資料都從調研中得到,其中是研究是否買電腦的資料,rid是列號,是每條資料唯一的身份標識。標號1,age記錄的是參訪的人的年齡情況。 標號2是記錄參訪人的收入狀況,3是記錄是否是學生。 4是記錄受訪人的信用狀況。 標號5是判斷結果是最後受訪人是否買了電腦。

通過決策樹我們可以找出1-4標號,同第5標號之間所隱藏的內在聯絡和規律。例如: 中年人,一定會買電腦。這就是從上圖所得出的規律之一。由決策樹,能更號更完善的知道這些規律。

而決策樹就是如下圖所示的一棵樹:

(圖2)

而節點就是標籤(圖1中的4個標籤),圖一中的標籤5是最後的結果標籤。不計入分類。通過某種演算法(後面講)來決定用哪個標籤來作為分類會得到最好的效果。(此圖是為了掩飾隨便劃分的為了講解下,並沒有詳細計算)如上圖中第乙個標籤選擇用age 分, age 有三類,y,m,s。 把14條資料根據age的分類分別分到這三類下。在m分類下的資料有相同的判別標籤,都是y所以這條分支得到了結果end。而age=y這一支的判別型別不統一,所以要再分。此時因為age標籤已經被使用了,剩下的還剩income , student 以及credit. 在其中用演算法再挑選乙個分類標籤(注,只有「父親」使用過的標籤,「孩子」不能使用)所以age=s這乙隻同樣剩下income student以及credit這三個標籤。這樣分乙隻到最後滿足結束條件(後面講)。

演算法

1. 用判別算*計算標籤a能最有效的分割型別

2. 用標籤a的型別分割資料

3. 用判別算計算「父親」節點中未使用的其他標籤中最合適的分割標籤b

4. 重複1-3依次遞迴,知道滿足結束條

根據判別演算法的不同決策樹也被分為不同種類:但是其核心就是一種貪婪演算法。

d:標識全域性的資料條目數,如上面例子d=14m

m:指的是判別標籤的種類數量,如例子中只有y和n(第五標籤)所以就m=2;m只和判別標籤有關。

pi:指在第i類的條目數占總條目數的概率。如例子裡是p1是等於y的條目佔總條目的比例。p2是指等於n的條目數占總條目的比例。

k:指的是這個標籤有幾種情況,如用age 則k=3

dj:是指屬於這個情況的條目數

info(dj):指把dj帶入info(d),並且其中個的m是在例如age 分類為y的時候的y的概率的log加上age分類為s的概率的log再加上age分類為m的log.

id3:採用info-gain來判別

info-gain: 的基本公式

最後結果,gain(r)最大的,為最優。因為說明,用此來分類,則資訊的增長最快。

例子:

根據圖1寫的例子:

之後的c4.5和cart就不寫例子了。

c4.5:採用gain ratio

cart:採用gini index來判別

主要有兩個結束條件

所在的分類中,最後的判別標籤只有一種如全是y或者全是n

分類的標籤耗盡,其中的分類會服從多數原則。那個多選那個。

求出決策樹後,從跟節點到葉子節點的每一條路徑都是乙個分類規則,如圖二:中的可以總結出凡是age=m的人都買電腦。

決策樹會面臨overfitting 就是過度擬合的問題:

解決方法很簡單就是——剪枝條。而剪枝又分為先剪枝和後剪枝。

2.決策樹的缺點:

-不太能處理連續性的資料

-適合處理小型的資料,可規模性不太好

-型別眾多時準確度不高

啊啊~感覺寫部落格比自己想的要累的啊 知識**於我的筆記~~xd 。

機器學習二 決策樹學習

決策樹學習 從今天開始,堅持每天學習乙個機器學習的新知識,加油!決策樹學習是應用最廣的歸納推理演算法之一,是一種逼近離散值目標函式的方法,在這種方法中學習到的函式被表示為一顆決策樹。決策樹通過把例項從根結點排列到某個葉子結點來分類例項,葉子結點即為例項所屬的分類。樹上的每乙個結點指定了對例項的某個屬...

機器學習筆記二 決策樹

一顆決策樹包含乙個根結點,若干內部結點 對應乙個測試屬性 和若干葉結點 對應決策結果 決策流程採用分而治之的整體思想,根結點包含樣本全集,對各個特徵進行判斷,直至所有葉結點均對應一種類別的樣本。決策樹的關鍵在於劃分屬性的選擇,隨著劃分不斷進行,分支結點所包含樣本應盡可能屬於同一類別,即純度越來越高,...

機器學習總結(二) 決策樹

基本概念 訓練集,測試集,特徵值,監督學習,非監督學習,半監督學習,分類,回歸 1.1訓練集 training set data 訓練樣例 training examples 用來進行訓練,也就是產生模型或者演算法的資料集。1.2測試集 testing set data 測試樣例 testing e...