最近在讀《集體智慧編程》這本書,作了一些筆記,好讓自己印象深刻點,不過沒有記錄太多的細節和代碼。
第7章主要涉及決策樹分類器。相比於貝葉斯分類器、神經網絡分類,決策樹分類器的好處在於模型具有易於理
解的特點,可以將結果轉換成一系列簡單的if-else語句。
實例:
預測某個網站會有多少潛在的付費用戶。在註冊賬號時,應該儘量減少用戶註冊的工作量,我們可以通過從服務
器的日誌中收集信息。比如:用戶來自哪個網站,所在地,以及註冊之前瀏覽了多少網頁等等,將這些數據放入
一個二維表中,行表示用戶,列表示用戶的屬性。利用決策樹算法,我們可以知道有哪些因素表明用戶將會成爲
付費顧客,那麼就可以利用這些信息來指導我們的廣告策略制定工作,或者採取其他能夠有效增加付費顧客數量
的策略。
書中所涉及的關鍵點:
1、決策樹,顧名思義,其模型是一個樹結構。本章採用的CART決策樹,CART算法採用一種二分遞歸分割技術。
2、CART在每一個分支都選擇最好的二元切分,即找出合適的屬性變量,使得生成的兩個數據集合在混雜程度上
能夠儘可能小,這裏考察了兩種方法:基尼不純度和熵。熵值降低的越多,說明這個屬性就越能增加數據集的純度。
3、樹的構造過程是一個遞歸+貪心的過程。
4、剪枝。在決策樹創建時,由於數據中的噪聲和離羣點,許多分支反映的是訓練數據中得異常,因此需要剪枝方
法處理這種過度擬合問題。
5、處理缺失屬性(針對測試集)。如果我們缺失了某些數據,而這些數據是確定分支走向必須得,那麼可以選擇
兩個分支都走。這裏我們對各分支結果值進行加權統計。
6、處理數值型目標值。如果目標值是數值型的,不可能把所有數字看作不同的分類,可以採用方差作爲集合的純
度來取代熵或基尼不純度。
決策樹應用場景:
決策樹的特點是易解釋性。上面的例子,在執行完算法之後,我們不僅可以得到一顆用於預測新用戶的決策樹,
而且可以得到一些規則。這些規則可以知道我們做出一些決策,也可以知道哪些屬性對輸出結果沒有起多大作
用。決策樹也有其缺點。當數據集屬於的目標值種類太多時,算法預測效果會比較差;當決定分類的因素取決
於更多變量的複雜組合時,決策樹不太適合,比如兩個變量的差值。
總之,決策樹適合那些由大量分類數據和帶有明顯分界點的數值數據組成的數據集,另外當對決策過程的理解
至關重要時,也可以考慮決策樹。