大白話5分鐘帶你走進人工智能-第二十七節決策樹系列之預剪枝和後減枝和葉子結點如何表達(6)

                                                          第二十七節決策樹系列之預剪枝和後減枝(6)node

上一節中咱們講解了決策樹中的迴歸樹的問題Cart樹,咱們再來回顧下,決策樹的四個問題。一、它分幾支。二、它怎麼判斷分裂條件。有Gini係數,MSE等。三、它何時中止?四、葉子節點怎麼表達。對於分類來講是類別,對於迴歸來講是葉子節點內的平均數。這一節咱們講解決策樹中的什麼時候中止問題。app

目錄學習

1-預剪枝測試

2-後剪枝spa

3-葉子節點如何表達blog


假如你不限制何時中止,你不人爲的把它停下來,你最終獲得的這棵樹在訓練集上表現出來的正確率是百分之多少?若是你不限制深度的話,它必定會分配到百分之百。哪怕是100個樣本,我有100個葉子結點。總可以把你給分到每個都百分之百準確。但這樣會形成什麼問題呢?過擬合。在開始我們在講線性迴歸的時候。給你們講過過擬合。其實本質上,模型太複雜了。那麼對於一顆樹模型,什麼叫複雜,什麼叫不復雜?是樹越深,就至關於分的越細,最後都細枝末節。那些沒有關係的條件也在那分。這個就是就明顯過擬合了。那麼一般咱們會限制樹的深度來防止過擬合,怎麼限制這個樹的深度呢?分爲兩種方式,咱們都管它叫作剪枝,分爲預剪枝和後剪枝。element

假如咱們說過擬合是模型上的一種病的話,它有什麼症狀呢?最典型的症狀就是它在訓練集上的表現很好,在測試集上的表現差。這就叫作過擬合。說明你走過了,要往回走一走。剪枝就是想讓這個樹往回退一退。一般兩種剪枝方式更合理的是後剪枝。而更簡單的是預剪枝。咱們先說下預剪枝get

1-預剪枝

其實預剪枝就是人爲的給它固定一些條件。好比咱們決策樹裏邊要要傳的超參數。it

這些項,實際上就是預剪枝條件。好比min_samples_split就是這個節點到底還有多少個樣本。我纔會分裂,不然我就乾脆不分了。假如你設置成100的話,當這個節點裏只剩下80條數據。我就再也不繼續往下分了。無論你結果有多差,我就把你當作葉子節點了。再好比min_samples_leaf就是葉子節點分完了以後,至少有多少個葉子結點在這個裏邊我才認可,此次分裂可以分。比好比這設置成10。假如分到最後剩120條數據,分爲兩個子節點,一個是3條,另外一個是117條。3<10,它就認爲此次分裂是不合法,它要退回去。還要保留着120條當作葉子節點。最大深度max_depth和最大葉子節點max_leaf_nodes的數量,兩個超參數其實彼此有些矛盾,當固定爲二叉樹的時候,固定最大深度狀況下,葉子節點數量實際上是必定的,這兩個超參數一定有一個可能會失效。 因此超參數基本上選擇的都是最大深度。 這些都是在分裂以前人爲的給它設置的一些條條框框。一些規則,你觸碰到我這些規則了,你就不要再分裂了。等於在訓練以前就作好了這個剪枝的這個條件了。因此預剪枝它的運算是很是簡單的。自動化

2-後剪枝

後剪枝就是我先肆無忌憚的讓你把這個數給生長好。而後把一個一個的分裂,從最底下的葉子節點開始嘗試cancel掉,cancel掉以後檢驗一下,在測試集上效果變好了嗎?若是變好了,那麼說明此次分裂確實多餘了。就真的把它剪掉。而後再試着cancel下一個葉子節點。一個一個的cancel,cancel到你的訓練集上的表現好了。這會兒就後剪枝完成。那咱們說實際上後剪枝是一種自動化調參的一種方式。

實際上,後剪枝和預剪枝哪個用的多呢?實際上預剪枝用的多。由於決策樹再怎麼剪枝它仍然不盡如人意,因此咱們雖然講了決策樹的各類,但實際上真正用的時候是把好多好多決策樹放在一塊兒用的。沒有任何人去用單獨一棵決策樹去讓它生長,去工做。咱們講的這個十分複雜的決策樹,只是大家將來可以用的集成學習的一個根源。它只是若干個工人中的一個。因此你沒有必要把這一個工人弄得那麼完美,還任勞任怨地給它後剪枝。因此大部分時候使用的都是預剪枝來完成限制數的實際工做。

3-葉子節點如何表達

咱們看下最後一個問題,葉子節點如何表達呢?對於分裂,當達到了剪枝條件的時候就中止了,假如一個三分類問題,其中一個葉子節點裏有80個1,10個2,1個3,將來要有一個新數據落到這個裏邊,分爲誰的可能性最好? 只能說是1最好。實際上在分類過程當中就是一個投票機制,這個葉子節點裏面哪一類最多,將來落在這個節點裏面的新數據,就認爲它被分爲哪一類。而回歸問題就是取裏面的平均值。

   下一節咱們講解很重要的集成學習的概念。

相關文章
相關標籤/搜索