這一章主要打算用大白話說一下決策樹是什么,然后介紹一個(gè)算法中的核心輔助結(jié)構(gòu)——Cluster 的實(shí)現(xiàn)(我也不知道中文叫什么我也不知道為什么當(dāng)初腦子里第一個(gè)蹦出來的就是這個(gè)名字)(逃)
決策樹,顧名思義,就是用來決策的樹(廢話)。可以這樣去想一個(gè)決策樹的決策過程:
-
輸入一個(gè)數(shù)據(jù)
-
根據(jù)數(shù)據(jù)的某個(gè)特征來把數(shù)據(jù)分成好幾份
-
如果分完數(shù)據(jù)后發(fā)現(xiàn)
-
某堆數(shù)據(jù)里面某一個(gè)類別的數(shù)據(jù)占相當(dāng)大多數(shù),就不再分隔這堆數(shù)據(jù)、直接輸出類別
-
某堆數(shù)據(jù)還很“混亂無序”,那么就這堆數(shù)據(jù)就要繼續(xù)分下去(轉(zhuǎn)第 2. 步)
-
大概就這三步。可以發(fā)現(xiàn),大部分時(shí)間都是根據(jù)某個(gè)“準(zhǔn)則”來進(jìn)行操作的,所以怎樣選擇這個(gè)準(zhǔn)則就成了至關(guān)重要的問題
我們同時(shí)還可以發(fā)現(xiàn),這個(gè)過程是個(gè)遞歸過程。通俗點(diǎn)來說,就是整個(gè)過程都是對(duì)同一類物體做的同一系列操作
以上兩個(gè)發(fā)現(xiàn)對(duì)應(yīng)著兩個(gè)核心。這一章我們就先講第一個(gè)核心——準(zhǔn)則
常見的準(zhǔn)則有兩種,分別是熵和 Gini 系數(shù)。這里就主講實(shí)現(xiàn)(Again,我會(huì)先講一個(gè)相對(duì)樸素的實(shí)現(xiàn),而把支持樣本權(quán)重的版本放在后面):
-
預(yù)處理數(shù)據(jù),準(zhǔn)備好接下來可能要用到的變量
-
-
輸入的 data 是 n x d 維的;n 代表有 n 個(gè)數(shù)據(jù),d 代表有 d 個(gè)維度
-
輸入的 labels 是標(biāo)簽向量
-
Counter 是內(nèi)置庫的功能,用于數(shù) labels 中各個(gè)類別的出現(xiàn)次數(shù)
-
base 是計(jì)算熵的時(shí)候?qū)?shù)的底,基本可以不管
-
-
熵與條件熵
-
利用 labels 和 counters 計(jì)算
這里支持用戶自己輸入各類別的出現(xiàn)次數(shù);如果沒有輸入,就用內(nèi)置的類別次數(shù)代替
eps 則是為了數(shù)值穩(wěn)定-
利用上述 ent 函數(shù)計(jì)算相對(duì)熵(建議先知道定義是什么再看……)
看上去很復(fù)雜,其實(shí)就四點(diǎn):
-
獲取指定維度數(shù)據(jù)的所有特征
-
根據(jù)這些特征將原數(shù)據(jù)切分成若干份
-
將這幾份數(shù)據(jù)分別喂給一個(gè) Cluster 并利用上面第 1. 步定義的 ent 函數(shù)算出熵
-
把這些熵按定義弄出一個(gè)條件熵
-
-
-
Gini 系數(shù),這個(gè)實(shí)現(xiàn)起來比較方便、因?yàn)樾问奖容^簡單

同樣支持用戶自己輸入各類別的出現(xiàn)次數(shù)
-
信息增益。這是決策樹生長的重點(diǎn),但有了上面兩個(gè)函數(shù)之后,根據(jù)定義的話、直接條件熵減去熵就行(或者更寬泛地說、是混亂程度減去條件混亂程度),最多再做一些小的改動(dòng)。相信聰明的觀眾老爺們可以輕松地完成最樸素的實(shí)現(xiàn),所以在這里我就不細(xì)講怎么定義 info_gain 了,等到講比較復(fù)雜的模型時(shí)再補(bǔ)吧~
順便也可以當(dāng)做作業(yè)和練習(xí)呢~
其實(shí)主要是因?yàn)閼心貇(被 pia 飛)
========== 更新 ==========
這里提供一個(gè)根據(jù) ID3 算法的信息增益實(shí)現(xiàn),C4.5 和 CART 的話會(huì)在后面講~

掃一掃獲取最新精彩內(nèi)容與學(xué)習(xí)資料
星空人工智能技術(shù)網(wǎng) 倡導(dǎo)尊重與保護(hù)知識(shí)產(chǎn)權(quán)。如發(fā)現(xiàn)本站文章存在版權(quán)等問題,煩請(qǐng)30天內(nèi)提供版權(quán)疑問、身份證明、版權(quán)證明、聯(lián)系方式等發(fā)郵件至1851688011@qq.com我們將及時(shí)溝通與處理。?。?a href="/">首頁 > 大數(shù)據(jù) » 從零開始學(xué)星空人工智能(13)--Python · 決策樹(一)· 準(zhǔn)則