目錄算法
本篇內容基於西瓜書與鄒博視頻總結而成函數
主要知識點:spa
個人理解:熵等價於不肯定度orm
太陽東昇西落:這件事情不攜帶任何不肯定性,而地震發生的不肯定性仍是有的,咱們的目標就是找到事情發生的不肯定性,而且使它發生的機率最小。視頻
即:\(p\) 【事件發生的機率)】 | 度量:\(-ln(p)\)blog
熵:全部隨機事件不肯定度的綜合,即求事件的指望
\[ \sum_{i=1}^N p(i)\cdot lnp(i) \]排序
條件熵的定義是:是在X已經發生的狀況後,Y發生「新」的不肯定度(熵)遞歸
根據上述定義可有:\(H(X,Y)-H(X)\)事件
【X,Y全部包含的不肯定度 】 減去 【X所含的不肯定度 】 等於 【在X的基礎上的額外的不肯定度】get
若是畫出文氏圖就能更好的理解:
推導:
\[ \begin{aligned} H(X, Y)-H(X)={} &-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x} p(x) \log p(x)\\ ={} & -\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x}\left(\sum_{y} p(x, y)\right) \log p(x)\\ ={} & -\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x, y} p(x, y) \log p(x) \\ ={} & -\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)} \\ ={} & -\sum_{x, y} p(x, y) \log p(y | x) \end{aligned} \]
能夠發現上面最後這個式子不是很友好,前面是聯合機率,後面是條件機率,將上面的聯合機率變爲條件機率看你那個獲得什麼結果?
\[ \begin{aligned} H(X, Y)-H(X)={}& -\sum_{x, y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} \sum_{y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} \sum_{y} p(x, y) \log p(y | x) \\ ={} & -\sum_{x} p(x) p(y | x) \log p(y | x) \\ ={} & \sum_{x} p(x)\left(-\sum_{y} p(y | x) \log p(y | x)\right) \\ ={} &\sum_{x} p(x) H(Y | X=x) \end{aligned} \]
上述公式其實很好理解,咱們代入決策樹的思考環境去思考這個問題。加入新的信息量是有兩個。一是真實類別信息,二是\(A=(a_1,a_2,\dots,a_V)\) ,熵的英文爲:\(information \ entropy\) ,\(D\) 表明數據集,根據標籤\(target\)可將\(D\)分爲\(K\)類。根據特徵\(A\),可將\(D\)分爲\(V\)類。
始終記住:熵的公式是根據真實類別計算的「純度或不肯定度」
\[ Ent(D)=-\sum_{k=1}^{K}p_kln(p_k) \]
根據定義:\(Ent(D)-Ent(D|A)\)
\[ \begin{aligned} Ent(D)-Ent(D|A) ={} & Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) \\ \end{aligned} \]
這個等號在概念上很好理解,咱們根據加入A後計算各個子節點的熵,由於每一個子節點劃分後樣本數量不相同,因此要對這些熵進行加權處理。可是數學上又須要一個解釋。
\[ \begin{aligned} Ent(D|A) ={} &-\sum_{v, k} p\left(D_{v}, A_{i}\right) \log p\left(D_{v} | A_{i}\right) \\ ={} & -\sum_{v, k} p\left(A_{v}\right) p\left(D_{k} | A_{v}\right) \log p\left(D_{k} | A_{v}\right)\\ ={} & -\sum_{v=1}^{V} \sum_{k=1}^{K} p\left(A_{v}\right) p\left(D_{k} | A_{v}\right) \log p\left(D_{k} | A_{v}\right)\\ ={} & -\sum_{v=1}^{V} \frac{\left|D_{v}\right|}{|D |} \sum_{k=1}^{K} \frac{\left|D_{v k}\right|}{\left|D_{v}\right|} \log \frac{\left|D_{v k}\right|}{\left|D_{v}\right|} =-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) \end{aligned} \]
這裏的公式比較複雜,在西瓜書中\(D^v\) 說明一開這個數據集是由特徵\(A\) 進行劃分,可是這又是熵的計算,熵是根據樣本分類\(K\)計算的不肯定度。因此這裏數據集\(D_{vk}\) 是先對\(A\)進行劃分,以後再在\(D_V\)的基礎上對分類\(K\)進行劃分。
決策樹採用的是自頂而下的遞歸方法,其基本思想是以信息熵爲度量,選擇熵值降低最快【信息增益最大】的屬性做爲第一個結點,以後的特徵依次以此爲標準生成決策樹。終止條件:到葉子結點處的熵值爲0,此時每一個葉節點中的實例屬於同一類。
以下圖分析:
以前咱們以信息熵做爲度量,以信息增益做維選擇特徵的決策依據,其實還有其餘的依據:
經常使用三種算法:
信息增益有個缺點。假設西瓜分爲兩類,好瓜和壞瓜。50個樣本,其中一特徵有100個屬性。若用此屬性做爲劃分依據,劃分後每一個類別的熵都爲0【由於每一個類別的瓜均可以被分到一節點,還記得怎麼計算增益率嗎?是先用V進行劃分,再用K進行劃分。這裏V劃分結束後,K已經不用劃分了,由於只多是一種類別】
屬性\(a\)的固有值:
\[ \mathrm{IV}(a)=-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \log _{2} \frac{\left|D^{v}\right|}{|D|} \]
\(a\)越大\(\Rightarrow\) \(D^v\) 越均勻 \(\Rightarrow\) 熵值越大
信息增益率:
\[ \text { Gain ratio }(D, a)=\frac{\operatorname{Gain}(D, a)}{\operatorname{IV}(a)} \]
基尼數據定義:隨機抽取兩個樣本,類別不同的機率。
\[ \begin{aligned} \operatorname{Gini}(D) &=\sum_{k=1}^{| \mathcal{Y |}} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}} \\ &=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} \end{aligned} \]
基尼指數【對照於增益】:
\[ \text { Gini } \operatorname{index}(D, a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Gini}\left(D^{v}\right) \]
最優劃分屬性:
\[ a_{*}=\underset{a \in A}{\arg \min } \operatorname{Gini} \operatorname{index}(D, a) \]
高階認識:Gini係數就是信息熵的一階泰勒近似
過擬合處理:
剪枝
隨機深林
西瓜書和鄒博講的剪枝手段不同啊。
⭕【鄒博思路】:
決策樹的評價
純結點的熵爲:\(H_p=0\) ,最小
均結點的熵爲:\(H_u=lnk\) ,最大
對全部葉節點的熵進行求和,值越小,說明樣本的分類越精細。
考慮到每一個結點的樣本數目是不同的,因此評價函數採用樣本加權求熵和
評價函數:
\[ C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t) \]
將此做爲損失函數。
正則化考慮:以葉子的數目做爲複雜度
損失函數:
\[ C_{\alpha}=C(T)+\alpha|T_{leaf}| \]
目標:求在保證損失不變的狀況下,模型的複雜度是多少?(剪枝係數)
\[ \alpha = \frac{C(r)-C(R)}{<R_{leaf}>-1} \]
⭐剪枝算法:
注:當用驗證集作最優子樹的標準,直接用以前不帶正則項的評價函數:\(C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t)\)
⭕【西瓜書】
西瓜書的剪枝手段主要是經過驗證集去選擇,而且把剪枝分爲預剪枝和後剪枝
注:預剪枝基於的是貪心算法,只要驗證集精度提升了,我就剪枝,因此有欠擬合的風險。然後剪枝是自底向上對全部非葉結點進行逐一考察,時間開銷大的多,可是泛化能力提升。
⭕連續值處理:
給定樣本集\(D\)和連續屬性\(a\),假定\(a\)在\(D\)上出現了\(n\)個不一樣的取值,將這些值從小到大進行排序,記爲\(\{a_l,a_2..,a_n\}\).基於劃分點\(t\)可將\(D\)分爲子集\(D_t^-\)和\(D_t^+\),其中\(D_t^-\)包含那些在屬性\(a\)上取值不大於\(t\)的樣本,而\(D\)則包含那些在屬性\(a\)上取值大於\(t\)的樣本。咱們可考察包含 \(n-1\) 個元素的候選劃分點集合:
\[ T_{a}=\left\{\frac{a^{i}+a^{i+1}}{2} | 1 \leqslant i \leqslant n-1\right\} \]
縷一縷:一個結點有\(n-1\)個候選劃分點:
綜上公式改成:
\[ \begin{aligned} \operatorname{Gain}(D, a) &=\max _{t \in T_{a}} \operatorname{Gain}(D, a, t) \\ &=\max _{t \in T_{a}} \operatorname{Ent}(D)-\sum_{\lambda \in\{-,+\}} \frac{\left|D_{t}^{\lambda}\right|}{|D|} \operatorname{Ent}\left(D_{t}^{\lambda}\right) \end{aligned} \]
⭕缺省值:
咱們需解決兩個問題:(1)如何在屬性值缺失的狀況下進行劃分屬性選擇?(2)給定劃分屬性,若樣本在該屬性上的值缺失,如何對樣本進行劃分?
完好失值樣本所佔的比例:
\[ \rho=\frac{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in D} w_{\boldsymbol{x}}} \]
無樣本下第k類的比例和第v個屬性的比例:【與以前的公式相同】
\[ \begin{aligned} \tilde{p}_{k} &=\frac{\sum_{\boldsymbol{x} \in \tilde{D}_{k}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad(1 \leqslant k \leqslant|\mathcal{Y}|) \\ \tilde{r}_{v} &=\frac{\sum_{\boldsymbol{x} \in \tilde{D}^{v}} w_{\boldsymbol{x}}}{\sum_{\boldsymbol{x} \in \tilde{D}} w_{\boldsymbol{x}}} \quad(1 \leqslant v \leqslant V) \end{aligned} \]
\(w_x\)是每一個樣本\(x\)的權重,根結點中的樣本權重爲1。
增益公式推廣爲:
\[ \begin{aligned} \operatorname{Gain}(D, a) &=\rho \times \operatorname{Gain}(\tilde{D}, a) \\ &=\rho \times\left(\operatorname{Ent}(\tilde{D})-\sum_{v=1}^{V} \tilde{r}_{v} \operatorname{Ent}\left(\tilde{D}^{v}\right)\right) \end{aligned} \]
⭕同一個特徵能夠進行屢次判別:
⭕通常而言,分類邊界爲:軸平行(axis-parallel),可是也能夠將線性分類器做爲決策標準,能夠產生"斜"這的分類邊界。
技巧:可利用斜着的分裂邊界簡化決策樹模型