跟前兩天一樣,今天要介紹的決策樹也是「監督式學習」,但比較不一樣的是,這次我們要用的資料集不是鳶尾花。
今天比較特別一點,因為作者本人生病惹,吃了藥下去一整個昏昏沉沉,處於魂不在身上的狀態……
所以今天和後來幾天的部分,如果有遇到程式碼的,都會先暫時放著,只先談理論,等之後病好了再補齊。
感謝各位@@
決策樹透過對數據進行切割,形成一個樹狀結構,每個節點代表一個特徵,每個分支代表一個特徵的取值,葉子節點包含了預測的結果。
有點難理解對不對,沒關係,我們看下面的圖。
其實比較常看到有人用來做示範的是金融類(比如能不能貸款、會不會還錢之類的),但講那個就有點無聊了,所以今天就用帥哥來做分類吧,這樣會不會比較有趣XD
裡面總共有三種「節點」:
除了節點之外,其中你看到帥/不帥、> 100萬/< 100萬,所代表的就是「分支」,也就是決策樹要怎麼分割。[圖中我用樹枝表示。]
這樣看完,配著圖,是不是就比較好理解決策樹了?
當然,決策樹並不只有上圖這樣的切法,舉些例子:
決策樹常常會遇到「過度擬合(Overfitting)」的問題。常見的原因有「特徵選取過多」、「深度過深」等等。
特徵過多
特徵過多其實很好理解,以上面的例子來說,我的特徵只有四個,分別是「長相」、「年收入」、「身高」、「體貼」,但如果裡面又加入了「打籃球」、「朋友很多」、「有禮貌」等等的特徵,決策樹會盡力去找出特徵與特徵之間的聯繫,導致過度擬合。
深度過深
那,深度是什麼呢?
深度其實就是決策樹「長幾層」,深度越深,決策樹切分的就越精細。
如果這樣的話,切越深越好囉?也不對哦。
切的太淺,分類太不具體,所以預測的效果會很差,但是如果切得太深,太精細,預測的效果也會降低。
為什麼呢,深度切的深,表示這個模型會很貼合「訓練集」,因為很了解其中的規則,所以在訓練集的準確率會非常高。
但當他遇到「測試集」(也就是新資料)的時候,反而會因為規則太具體的貼近之前的資料,在預測新資料的時候產生不適應感。
希望今天這樣講解,大家可以更好的理解決策樹的運作邏輯。
如果有興趣的人,可以根據上面的那張圖,畫畫看屬於自己的決策樹,並放上來跟大家分享哦!