機器學習之決策樹Python實現

決策樹算法,正如其名一樣,是基於樹結構的一種算法。如果繪製成圖形,有點流程圖的模樣,節點示意邏輯判斷,枝幹表示不同的條件,按照數據的特徵值,沿著分枝一步一步的匹配類型,最終完成分類任務。

談及流程圖,不免聯想到傳統編程。它與機器學習編程有什麼區別呢?竊以為,傳統編程,從理論出發,使用流程控制語句實現理論描述,最終完成任務。而基於機器學習的編程,從數據出發,通過學習完善模型參數,最終通過模型完成任務。我想這是兩者最大的區別吧。

不管通過哪種方式構建決策樹。我們總想知道按照怎麼樣的順序,我們應如何劃分特徵,如何選擇邏輯判斷節點,才能使無序的數據變得有序,達到最優的計算效果。想要提高性能,必須先找到衡量方式。目前,一種通用有效的度量方法來自於信息論中的信息熵,該理論源自二十世紀最聰明的人之一:克勞德·香農。有一段有意思的話介紹香農:“貝爾實驗室和MIT有很多人將香農和愛因斯坦相提並論,而其他人則認為這種對比是不公平的——對香農是不公平的”。既然這樣,這套理論令人費解也是正常,可以接受的,因此取名為“熵”這個術語。不用擔心,我們只要感性的知道,信息熵值越大,代表數據包含的信息量越多,我們需要更多的步驟才能得到分類結果,即更加枝繁葉茂的決策樹。我們當然希望越簡單越好,即每次劃分數據都是最優選擇,信息熵值最小。

我們以學習佩戴隱形眼鏡建議數據為例,構建決策樹並完成預測任務。

  • 準備數據

隱形眼鏡數據集包含患者眼部狀況(特徵)以及醫生推薦的眼睛類型(標籤),我們使用pandas加載數據。

機器學習之決策樹Python實現

  • 構建決策樹

我們使用信息熵來衡量數據,計算眼鏡類型labe的信息熵,選用信息熵更小的方式,也即做到了更有序的切分數據。

機器學習之決策樹Python實現

通過迭代比較,我們得到選用哪一列特徵值劃分數據集是最有效的方式。因此,我們能據此構建決策樹。

機器學習之決策樹Python實現

  • 決策樹可視化

基於字典的決策樹表示,不能給人以直觀的印象,我們使用matplotlib來可視化決策樹。

機器學習之決策樹Python實現

機器學習之決策樹Python實現

機器學習之決策樹Python實現

機器學習算法,幫我們構建了決策樹。相當於完成了訓練模型的步驟,這時,我們需要將模型保存下來,以供生產環境下使用。

  • 序列化決策樹

我們使用pickle模塊完成序列化和反序列化的工作。

機器學習之決策樹Python實現

  • 使用算法

完成了各項訓練和存儲工作,收穫的時候終於到了,我們使用決策樹算法完成預測分類任務。

機器學習之決策樹Python實現

  • 結語

本期介紹了決策樹算法的基本概念,基於信息熵的方式構建決策樹。當然,決策樹算法發展至今,必然存在很多優化算法。同樣,我們選擇站在巨人的肩膀上,下期,我們來看一下sickit-learn對決策樹算法的支持。

相關推薦

推薦中...