其他部分李航老師講的應該很清楚了,這裡主要來釐清一下cart剪枝部分。
先來回顧下剪枝。書中的描述是這樣的:
決策樹的剪枝往往通過極小化決策樹整體的損失函式或代價函式來實現決策樹的損失函式定義如下:
表示模型對訓練資料的**誤差,即模型與訓練資料的擬合程度;
表示模型複雜度(葉子節點個數),引數
控制兩者之間的影響(即權衡兩者的比重)。
因此剪枝即是在確定
的情況下,求解
cart(分類與回歸樹)假設決策樹是二叉樹,它的剪枝方式稱為cart剪枝,是一種代價複雜度剪枝。書中關於這部分的描述有點邏輯混亂的感覺(找了一些資料才勉強理解一些)。
首先,不管是cart剪枝還是其他剪枝,都是遵循式(5.1)描述的最小化整體損失函式原則。但是這裡有乙個問題,就是如何去選擇式(5.1)第二項的那個權衡因子
?顯然我們取不同的
,得到的最優剪枝子樹是不同的。
書中提到:容易驗證,對於固定的《統計學習方法》習題 5.3,關於cart剪枝最小子樹的證明過程?www.zhihu.com, 一定存在唯一的最優子樹
,使得損失函式
最小。關於這個證明(也是課後習題5.3),可以檢視我這個回答:
直觀地講,
越小,決策樹越複雜(等於0的時候,不剪枝反而是擬合程度最高),而
越大,則決策樹越簡單,極端的情況,
,決策樹退化為單個節點(多數決)
因此可以得出:對於簡單的樹,需要的
的值更大。
明確目標:選擇乙個合適的
, 使得交叉驗證的結果最好
做法:確定端點,劃分
的取值區間,在這些區間內總能找到一棵最優子樹,使得損失函式最小。
於是該如何劃分區間?
我們假設初始整體樹為
,對於
的任意內部節點
, 剪枝後以
為單節點的損失為:
而不剪枝(保留其葉子節點),形成的子樹
的損失為:
當 時,進行剪枝。求解這個不等式,可以得到:
記 :即是決策樹內部任意節點
的剪枝決策邊界。對於不同的內部節點,有不同大小的
,因而可以將整個
的取值劃分為
段。舉個例子,對於初始完整樹
,根據式(5.4) 計算所有內部節點的
,取 ,在
這個區間,無論哪個內部節點,剪枝的結果都會使得損失函式變大,因此在該區間,原始
即最優的子樹。
獲得 這個邊界值後,迭代獲取下乙個邊界值,先根據
找到對應的內部節點,剪枝後獲得
,對於
重覆式(5.4)的計算得到
,必然有
,在 區間裡,
是最優子樹。
如此迭代,就能獲得乙個區間
,在每個區間內,都有一棵最優的子樹。
這裡提下為什麼區間子樹即上述所推導的序列
(即課後題5.4),假設某個區間
存在更優的子樹
,則存在
總能進一步細分該區間,使得整體區間被進一步劃分。
整個過程歸結來說就是用交叉驗證嘗試不同的阿爾法值。因為阿爾法是離散的,並且可以知道在每個不同的小區間上阿爾法值的作用各自都是一樣的(因為在區間上的不同值,所代表的修剪出來的樹是一樣的),所以總結來說,上述的過程就是求解各個區間端點的過程。而端點就是不同的
第5章 對鏈結應用樣式
一鏈結偽類選擇器 link,visited link用來尋找沒有被訪問過的鏈結,visited用來尋找被訪問的鏈結。動態偽類選擇器 hover,active foucus hover尋找滑鼠懸停處元素,active被啟用元素 對鏈結啟用發生在鏈結被單擊時 foucs通過鍵盤移動到鏈結上。ie7及以下...
第5章 建立高效能的索引(一)
索引 在mysql中也叫做 鍵 key 是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵。索引優化應該是對查詢效能優化最有效的手段了。索引可以包含乙個或多個列的值。如果索引包含多個列,那麼列的順序也十分重要,因為mysql只能高效地使用索引的最左字首列。5.1.1 索引的型別 在...
第5章 作業 對作業中的程序施加限制
設定作業的一些基本限制 jobobject basic limit information jobli jobli.priorityclass idle priority class 作業的優先級數 jobli.perjobusertimelimit.quadpart 10000 作業的使用者態執行...