還在為如何抉擇而感到糾結嗎?快採用決策樹(decision tree)演算法幫你做出決定吧。決策樹是一類非常強大的機器學習模型,具有高度可解釋的同時,在許多任務中也有很高的精度。決策樹在機器學習模型領域的特殊之處在於其資訊表示的很清楚,而不像一些機器學習方法是個黑匣子,這是因為決策樹通過訓練學到的「知識」直接形成層次結構,該結構以這樣的方式儲存和顯示學到的知識,即使是非專業人士也可以容易地弄明白。
現實生活中的決策樹
在現實生活中,我們常常用過類似於決策樹的方式來決定自己的生活。例如,決定週末安排什麼樣的活動。採取怎樣的活動可能取決於一些因素,比如是否願意和朋友一起出去或獨自度過週末、週末的天氣如何等。假設就這兩個因素影響你做出決定的話,如果天氣晴朗,並且你的朋友可以一起參與,那麼你可能想踢足球。如果是下雨天,可能會一起去看電影。如果朋友有事無法參加,那麼無論天氣如何,可能會去看會書、玩會電子遊戲。
這就是現實中的乙個明顯的決策樹例子,上述已經構建了乙個樹來模擬一組順序的、層次化的決策,最終得到乙個結果。這裡,為了保持樹的小巧,還選擇了相當「高階」的決策。
例如,如果為天氣設定了許多可能的選項,例如晴天(25度)、下雨(25度)、晴天(26度)、下雨(26度)、晴天(27度)...... 等等,這樣會使得樹尺寸會很大,這種精確的溫度對於最後做出的決策沒有太相關的關係,因為只是想知道是外界是否下雨,根據下雨的情況決定是否外出,而溫度的高低對其影響很小。當然,極寒極熱天氣還是在家比較舒服。
機器學習中的決策樹的概念和上面的思想是相同的,需要構建乙個具有一組分層決策的樹,最終給出決策結果,即分類或回歸**。盡可能使得決策樹尺寸較小,同時要實現高分類/回歸準確性。
機器學習中的決策樹
決策樹模型的構建一般分為兩個步驟:歸納(induction)和修剪(pruning)。歸納是實際構建樹的步驟,即根據我們的資料設定所有的分層決策邊界。但由於訓練決策樹的性質,樹模型可能容易出現嚴重的過擬合現象。這個時候就需要採用修剪處理,修剪就是從決策樹中刪除不必要的分支結構的過程,有效地降低了對抗過擬合的複雜性,並使其更容易解釋。
歸納|induction
從高層次來看,決策樹歸納需要經過4個主要步驟:
第1步很簡單,只需好好分析資料集。對於步驟2,通常使用貪婪演算法來選擇要使用的特徵和特定分割,以最小化代價函式。構建決策樹時執行的拆分相當於劃分特徵空間。我們將迭代地嘗試不同的分割點,最後選擇成本最低的分割點。也可以只在資料集中的值範圍內進行拆分,這將使得我們免於浪費計算來測試那些表現差的**點。
對於回歸樹,可以使用簡單的平方誤差作為模型的代價函式:
其中,y是期望輸出,y-hat是**值,對資料集中的所有樣本求和以獲得總誤差。對於分類,使用的是基尼指數函式(gini index function):
其中pk是特定**節點中第k類的訓練例項樣本的比例。理想情況下, 節點的錯誤值應為零,這意味著每個拆分輸出的類正是我們想要的,一旦到達那個特定的決策節點,無論處於決策邊界的這一邊還是另一邊,其輸出也確定好了。
在資料集中具有單個分類的概念被稱為資訊增益。以下是舉例:
如果選擇了某種劃分,其中每個輸出根據輸入資料混合類別,這種情況實際上根本沒有獲得任何資訊; 另一方面,如果採取的分割對於每個輸出的類的正確率都很高,那麼已經獲得 了在具體特徵變數上以特定方式分割的資訊。
之後是對樹模型進行**,直到樹有數千個分支,但這不是乙個好主意!這樣得到的決策樹將是巨大的、緩慢的,並且會過擬合訓練資料集。因此,需要設定一些預定義的停止標準來停止樹的構造。
最常見的停止方法是對分配給每個葉節點的訓練樣本的數量使用最小數量。如果計數小於某個最小值,則不接受拆分,並將該節點作為最終葉節點。如果所有的葉子節點都成為最終節點,則訓練停止。較小的最小數量將提供更精細的分割和資訊,但也容易過擬合訓練資料。因此,最小數量的取值通常基於資料集設定,具體取決於每個類中預計有多少個示例樣本。
修剪|pruning
由於訓練決策樹的性質,可能容易會出現嚴重的過擬合現象。為每個節點設定最小例項數的正確值可能具有挑戰性。大多數情況下,可能只是希望做出合適的決定,而無需最優的決定。因此,無需使得最小值非常小獲得非常複雜的樹,且有很多**是多餘的,並沒有提高模型的準確性。
樹修剪是一種利用修剪樹中不必要的**的技術。從上層開始,修剪將樹的一部分從嚴格的決策邊界壓縮為更平滑、更通用的樹,從而有效地降低樹的複雜性。決策樹的複雜性定義為樹中的**數。
一種簡單而高效的修剪方法是遍歷樹中的每個節點,並評估將其移除後其代價函式上的效果。如果移除後,代價函式變化不大,那就修剪掉該節點。
例項實踐
使用scikit lear中內建的函式來實現分類和回歸的決策樹是非常容易的。首先載入資料集並初始化決策樹以進行分類。
scikit.還允許使用graphviz庫視覺化構建的樹,它附帶了一些選項,這些選項將有助於視覺化決策節點,並將模型學到的內容進行分割,下面根據特徵名稱對節點進行著色,並顯示每個節點的類和特徵資訊:
也可以在scikit learn中為決策樹模型設定幾個引數。以下是一些有趣的嘗試以獲得更好的結果:
實際中應用決策樹的技巧
優點| pros
易於理解和解釋:在每個節點都能夠確切地看到模型做出了什麼決定。在實踐中,能夠完全理解準確度和誤差來自何處,模型可以很好地處理哪種型別的資料,以及輸出如何受到特徵值的影響。scikit learn的視覺化工具是視覺化和理解決策樹的絕佳選擇;
需要準備很少的資料:許多機器學習模型可能需要大量的資料預處理,例如歸一化,並且可能需要複雜的正則化方案。另一方面,在調整了一些引數後,決策樹可以很好地做到開箱即用;
使用樹進行推理的計算成本與訓練樹的資料集呈對數關係,這是乙個巨大的優勢,意味著輸入更多的資料不一定會對推理速度產生巨大的影響;
缺點|cons
由於訓練的性質,過擬合在決策樹中很常見。通常建議執行某種型別的降維,例如pca, 以便樹不必學習如此多的特徵上的拆分;
出於與過擬合情況類似的原因,決策樹也容易變得偏向於在資料集中占多數的類別,對不平衡資料進行某種類平衡(例如類權重、取樣或專門的損失函式)操作是乙個不錯的主意。
作者資訊:george seif,機器學習和深度學習
本次**:網路大資料 ;
「end」
資料探勘與大資料分析(id:datasudi)關注大資料,資料探勘,機器學習,深度學習等人工智慧領域,以傳播大資料、解讀行業趨勢、資料化運營為核心的新**平台。
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...
機器學習 決策樹
一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...