機器學習實戰02:決策樹

- 決策樹的構造

優點:計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特徵數據。
缺點:可能會產生過度匹配問題。
適用數據類型:數值型和標稱型。

- 決策樹的一般流程

(1) 收集數據:可以使用任何方法。
(2) 準備數據:樹構造算法只適用於標稱型數據,因此數值型數據必須離散化。
(3) 分析數據:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。
(4) 訓練算法:構造樹的數據結構。
(5) 測試算法:使用經驗樹計算錯誤率。
(6) 使用算法:此步驟可以適用於任何監督學習算法,而使用決策樹可以更好地理解數據的內在含義。

示例:使用決策樹預測隱形眼鏡類型

隱形眼鏡數據集①是非常著名的數據集,它包含很多患者眼部狀況的觀察條件以及醫生推薦的隱形眼鏡類型。隱形眼鏡類型包括硬材質、軟材質以及不適合佩戴隱形眼鏡。數據來源於UCI數據庫 。


>>> fr=open('lenses. txt')
>>>lenses=[inst strip(). split('\t')for inst in fr.readlines()]
>>>lenseslabels=[' age','prescript ', 'astigmatic','tearrate']
>>> lensesTree = trees. createTree(lenses, lenseslabels)
>>> lensestree
{'tearrate': {'reduced':'no lenses','normal': {'astigmatic':{'yes':{'prescript': {hyper': ('age':{' prel': 'no lenses','presbyopic':
'no lenses','young':' hard'}},'myope': 'hard'}}, 'no': {'age':{pre:'
soft','presbyopic': { 'prescript': {'hyper': 'soft','myope':
'no lenses'}},'young': 'soft'}}}}}}
>>> treeplotter. createPlot (lensesTree)

採用文本方式很難分辨出決策樹的模樣,最後一行命令調用createPlot()函數繪製瞭如圖所示的樹形圖。沿着決策樹的不同分支,我們可以得到不同患者需要佩戴的隱形眼鏡類型。從圖上我們也可以發現,醫生最多需要問四個問題就能確定患者需要佩戴哪種類型的隱形眼鏡。

在這裏插入圖片描述如圖所示的決策樹非常好地匹配了實驗數據,然而這些匹配選項可能太多了。我們將這種問題稱之爲過度匹配( overfitting)。爲了減少過度匹配問題,我們可以裁剪決策樹,去掉一些不必要的葉子節點。如果葉子節點只能增加少許信息,則可以刪除該節點,將它併入到其他葉子節點中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章