開發者自述:我是如何理解決策樹的
雷鋒網按:本文作者夏洪進,原載於作者個人博客,雷鋒網已獲授權。
前言:
最近學習了一段時間的決策樹演算法,但是感覺並沒有達到自己預期的想法,所以這幾天參考了一些決策樹方面的資料,來將自己的學習的過程的筆記記錄在這裡,來加深理解和請教別人指出錯誤。
決策樹的原理:
決策樹又叫做decision tree,這個是一種比較簡單但是又得到廣泛應用的分類器的一種形式。我們一般都是通過訓練的數據來搭建起決策樹的模型。通過這個模型,我們可以高效的對於未知的數據進行歸納分類,類似於我們的聚類演算法。
應用決策樹有如下幾個優點:
1:決策樹的模型的可讀性比較好,具有很強的可以描述性,有利於以後高效率的人工分析
2:效率高,決策樹只需要以此構建,就可以達到反覆使用的效果,每一次的預測的最大計算次數只要不超過決策樹的深度即可。
3:決策樹來如何預測:
現在我們以Data Analysis中的經典案例來進行分析:
從上邊的表述中的相關信息,我們可以通過記錄以前的用戶的一些相關的特性,比如記錄這個用戶是否可以償還債務,是否擁有房產,是否結過婚,年收入等,來構建我們所需要的決策樹。
上表根據歷史數據,記錄已有的用戶是否可以償還債務,以及相關的信息。通過該數據,構建的決策樹如下:
現在假設新來了一個用戶:沒有房產,單身狗,年收入5萬,那麼根據上面的決策樹,可以預測他無法償還債務(藍色虛線路徑)。從上面的決策樹,還可以知道看出來是否擁有房產可以很大的決定用戶是否可以償還債務,對借貸業務具有指導意義。
基本步驟現在我們開始學習如何構造決策樹
決策樹構建的基本步驟如下:
1. 開始,把所有記錄看作一個節點
2. 遍歷每個變數的每一種分割方式,找到最好的分割點
3. 分割成兩個節點N1和N2
4. 對N1和N2分別繼續執行2-3步,直到每個節點足夠「純」為止
決策樹的變數可以有兩種:
1)數字型(Numeric):變數類型是整數或浮點數,如前面例子中的「年收入」。用「>=」,「>」,「
※如何優雅的使用 Vim
※深入理解 FastCGI 協議以及在 PHP 中的實現
※马化腾VS朱啸虎:自爆微信支付数据妥不妥当?
※Pyenv 使用筆記
※為什麼 Kotlin 調用 java 時可以使用 Lambda?——Kotlin中SAM 轉換機制詳解
TAG:推酷 |
※你知道如何開發自閉症孩子的潛能嗎?
※蘋果欲開發「說話者識別」技術,解決隱私漏洞
※蘋果欲開發說話者識別技術,解決隱私漏洞
※對話系統開發:除了演算法,這些問題不可忽略
※開發經理是否應該寫代碼?
※蘋果突然宣布新規,針對應用開發者,網友:這就是我用蘋果的原因
※《蠟燭人》開發者自述:為了做一輩子獨立遊戲,我們一直在堅持做這些事
※軟體開發者是否應該有道德準則?
※項目經理與開發怎樣互相理解
※《冰汽時代》開發者訪談:放棄道德,走向極權,這一切都值得嗎?
※浦東開發的「軟成果」,改革親歷者趙啟正怎麼述說?
※蘋果把開發者逼急了?成立開發者聯盟!
※線下小程序在爆發之前,要先解決開發者生態問題
※產品經理如何說服開發人員?
※蘋果回應欺負法國開發者指責:對我們存在著誤解
※外掛為什麼屢禁不止?原來它是開發者留的「後門」
※誰再說我是房地產開發商,我就跟誰急
※你弄清楚自己是程序員還是開發人員了么?
※遊戲是不是惡魔,關鍵看開發者的社會責任心
※未來人類如何開發火星?最缺乏的還是水和空氣,但可以這樣解決