日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习与数据科学决策树指南

發布時間:2024/8/23 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习与数据科学决策树指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

還在為如何抉擇而感到糾結嗎?快采用決策樹(Decision Tree)算法幫你做出決定吧。決策樹是一類非常強大的機器學習模型,具有高度可解釋的同時,在許多任務中也有很高的精度。決策樹在機器學習模型領域的特殊之處在于其信息表示的很清楚,而不像一些機器學習方法是個黑匣子,這是因為決策樹通過訓練學到的“知識”直接形成層次結構,該結構以這樣的方式保存和顯示學到的知識,即使是非專業人士也可以容易地弄明白。

現實生活中的決策樹

? ? ? ?在現實生活中,我們常常用過類似于決策樹的方式來決定自己的生活。例如,決定周末安排什么樣的活動。采取怎樣的活動可能取決于一些因素,比如是否愿意和朋友一起出去或獨自度過周末、周末的天氣如何等。假設就這兩個因素影響你做出決定的話,如果天氣晴朗,并且你的朋友可以一起參與,那么你可能想踢足球。如果是下雨天,可能會一起去看電影。如果朋友有事無法參加,那么無論天氣如何,可能會去看會書、玩會電子游戲。

? ? ? ?這就是現實中的一個明顯的決策樹例子,上述已經構建了一個樹來模擬一組順序的、層次化的決策,最終得到一個結果。這里,為了保持樹的小巧,還選擇了相當“高級”的決策。例如,如果為天氣設置了許多可能的選項,例如晴天(25度)、下雨(25度)、晴天(26度)、下雨(26度)、晴天(27度)...... 等等,這樣會使得樹尺寸會很大,這種精確的溫度對于最后做出的決策沒有太相關的關系,因為只是想知道是外界是否下雨,根據下雨的情況決定是否外出,而溫度的高低對其影響很小。當然,極寒極熱天氣還是在家比較舒服。
? ? ? ?機器學習中的決策樹的概念和上面的思想是相同的,需要構建一個具有一組分層決策的樹,最終給出決策結果,即分類或回歸預測。盡可能使得決策樹尺寸較小,同時要實現高分類/回歸準確性。

機器學習中的決策樹

? ? ? ?決策樹模型的構建一般分為兩個步驟:歸納(induction)和修剪(pruning)。歸納是實際構建樹的步驟,即根據我們的數據設置所有的分層決策邊界。但由于訓練決策樹的性質,樹模型可能容易出現嚴重的過擬合現象。這個時候就需要采用修剪處理,修剪就是從決策樹中刪除不必要的分支結構的過程,有效地降低了對抗過擬合的復雜性,并使其更容易解釋。

歸納|Induction

從高層次來看,決策樹歸納需要經過4個主要步驟:

  • 訓練數據集應具有一些特征變量、分類或回歸輸出;
  • 確定數據集中的“最佳特征”以分割數據;
  • 將數據拆分為包含此最佳特征的可能值的子集,這種分裂基本上定義了樹上的節點,即每個節點是基于數據中的某個特征的分裂點;
  • 使用從步驟3創建的數據子集遞歸地生成新的樹節點,保持分裂直到達到一個優化點,在該點已經通過某種度量優化了最大精度,同時最小化了分裂/節點的數量。

? ? ? ?第1步很簡單,只需好好分析數據集。對于步驟2,通常使用貪婪算法來選擇要使用的特征和特定分割,以最小化代價函數。構建決策樹時執行的拆分相當于劃分特征空間。我們將迭代地嘗試不同的分割點,最后選擇成本最低的分割點。也可以只在數據集中的值范圍內進行拆分,這將使得我們免于浪費計算來測試那些表現差的分裂點。
? ? ? ?對于回歸樹,可以使用簡單的平方誤差作為模型的代價函數:


其中,Y是期望輸出,Y-hat是預測值,對數據集中的所有樣本求和以獲得總誤差。對于分類,使用的是基尼指數函數(Gini Index Function):


? ? ? ?其中pk是特定預測節點中第k類的訓練實例樣本的比例。理想情況下, 節點的錯誤值應為零,這意味著每個拆分輸出的類正是我們想要的,一旦到達那個特定的決策節點,無論處于決策邊界的這一邊還是另一邊,其輸出也確定好了。
? ? ? ?在數據集中具有單個分類的概念被稱為信息增益。以下是舉例:


? ? ? ?如果選擇了某種劃分,其中每個輸出根據輸入數據混合類別,這種情況實際上根本沒有獲得任何信息; 另一方面,如果采取的分割對于每個輸出的類的正確率都很高,那么已經獲得 了在具體特征變量上以特定方式分割的信息。
? ? ? ?之后是對樹模型進行分裂,直到樹有數千個分支,但這不是一個好主意!這樣得到的決策樹將是巨大的、緩慢的,并且會過擬合訓練數據集。因此,需要設置一些預定義的停止標準來停止樹的構造。
? ? ? ?最常見的停止方法是對分配給每個葉節點的訓練樣本的數量使用最小數量。如果計數小于某個最小值,則不接受拆分,并將該節點作為最終葉節點。如果所有的葉子節點都成為最終節點,則訓練停止。較小的最小數量將提供更精細的分割和信息,但也容易過擬合訓練數據。因此,最小數量的取值通常基于數據集設置,具體取決于每個類中預計有多少個示例樣本。

修剪|Pruning

? ? ? ?由于訓練決策樹的性質,可能容易會出現嚴重的過擬合現象。為每個節點設置最小實例數的正確值可能具有挑戰性。大多數情況下,可能只是希望做出合適的決定,而無需最優的決定。因此,無需使得最小值非常小獲得非常復雜的樹,且有很多分裂是多余的,并沒有提高模型的準確性。
? ? ? ?樹修剪是一種利用修剪樹中不必要的分裂的技術。從上層開始,修剪將樹的一部分從嚴格的決策邊界壓縮為更平滑、更通用的樹,從而有效地降低樹的復雜性。決策樹的復雜性定義為樹中的分裂數。
? ? ? ?一種簡單而高效的修剪方法是遍歷樹中的每個節點,并評估將其移除后其代價函數上的效果。如果移除后,代價函數變化不大,那就修剪掉該節點。

實例實踐

? ? ? ?使用Scikit Lear中內置的函數來實現分類和回歸的決策樹是非常容易的。首先加載數據集并初始化決策樹以進行分類。

from sklearn.datasets import load_iris from sklearn import tree# Load in our dataset iris_data = load_iris()# Initialize our decision tree object classification_tree = tree.DecisionTreeClassifier()# Train our decision tree (tree induction + pruning) classification_tree = classification_tree.fit(iris_data.data, iris_data.target)

? ? ? ?Scikit.還允許使用graphviz庫可視化構建的樹,它附帶了一些選項,這些選項將有助于可視化決策節點,并將模型學到的內容進行分割,下面根據特征名稱對節點進行著色,并顯示每個節點的類和特征信息:

import graphviz dot_data = tree.export_graphviz(classification_tree, out_file=None, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, special_characters=True) graph = graphviz.Source(dot_data) graph.render("iris")

?


? ? ? ?也可以在Scikit Learn中為決策樹模型設置幾個參數。以下是一些有趣的嘗試以獲得更好的結果:

  • max_depth:樹的最大深度,類似于深度神經網絡中的最大層數。較淺會使得模型更快但不準確;更深的模型可能會使得準確性更高,但過擬合的風險也增大,且運行很慢;
  • min_samples_split: 拆分節點所需的最小樣本數, 將其設置為合適的值將有助于減輕過擬合;
  • max_features:查找最佳拆分時要考慮的特征數,更高可能意味著更好的結果,但訓練也需要更長的時間;
  • min_impurity_split:樹生長早期停止的閾值,如果節點的雜質高于閾值,則該節點將分裂,可用于權衡對抗過擬合(高值、小樹)與高精度(低值、大樹);
  • presort:是否預先分配數據以加快擬合中最佳分割的發現。如果事先對每個特征的數據進行排序,訓練算法將更容易找到合適的分裂值;

實際中應用決策樹的技巧

以下是決策樹的優缺點總結,可以幫助讀者確定它是否適合各自的問題,以及有關如何有效應用它們的一些提示:

優點| Pros

  • 易于理解和解釋:在每個節點都能夠確切地看到模型做出了什么決定。在實踐中,能夠完全理解準確度和誤差來自何處,模型可以很好地處理哪種類型的數據,以及輸出如何受到特征值的影響。Scikit learn的可視化工具是可視化和理解決策樹的絕佳選擇;
  • 需要準備很少的數據:許多機器學習模型可能需要大量的數據預處理,例如歸一化,并且可能需要復雜的正則化方案。另一方面,在調整了一些參數后,決策樹可以很好地做到開箱即用;
  • 使用樹進行推理的計算成本與訓練樹的數據集呈對數關系,這是一個巨大的優勢,意味著輸入更多的數據不一定會對推理速度產生巨大的影響;

缺點|Cons

  • 由于訓練的性質,過擬合在決策樹中很常見。通常建議執行某種類型的降維,例如PCA, 以便樹不必學習如此多的特征上的拆分;
  • 出于與過擬合情況類似的原因,決策樹也容易變得偏向于在數據集中占多數的類別,對不平衡數據進行某種類平衡(例如類權重、采樣或專門的損失函數)操作是一個不錯的主意。

?

原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的机器学习与数据科学决策树指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。