機器學習 04決策樹

2021-10-10 03:03:38 字數 4121 閱讀 4434

顧名思義,決策樹是基於樹結構來進行決策的,在網上看到乙個例子十分有趣,放在這裡正好合適。現想象一位捉急的母親想要給自己的女娃介紹乙個男朋友,於是有了下面的對話:

女兒:多大年紀了?母親:26。女兒:長的帥不帥?母親:挺帥的。女兒:收入高不?母親:不算很高,中等情況。女兒:是公務員不?母親:是,在稅務局上班呢。女兒:那好,我去見見。這個女孩的挑剔過程就是乙個典型的決策樹,即相當於通過年齡、長相、收入和是否公務員將男童鞋分為兩個類別:見和不見。假設這個女孩對男人的要求是:30歲以下、長相中等以上並且是高收入者或中等以上收入的公務員,那麼使用下圖就能很好地表示女孩的決策邏輯(即一顆決策樹)。

在上圖的決策樹中,決策過程的每一次判定都是對某一屬性的「測試」,決策最終結論則對應最終的判定結果。一般一顆決策樹包含:乙個根節點、若干個內部節點和若干個葉子節點,易知:

* 每個非葉節點表示乙個特徵屬性測試。* 每個分支代表這個特徵屬性在某個值域上的輸出。* 每個葉子節點存放乙個類別。* 每個節點包含的樣本集合通過屬性測試被劃分到子節點中,根節點包含樣本全集。決策樹的構造是乙個遞迴的過程,有三種情形會導致遞迴返回:

(1) 當前結點包含的樣本全屬於同一類別,這時直接將該節點標記為葉節點,並設為相應的類別;

(2) 當前屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分,這時將該節點標記為葉節點,並將其類別設為該節點所含樣本最多的類別;

(3) 當前結點包含的樣本集合為空,不能劃分,這時也將該節點標記為葉節點,並將其類別設為父節點中所含樣本最多的類別。演算法的基本流程如下圖所示:

可以看出:決策樹學習的關鍵在於如何選擇劃分屬性,不同的劃分屬性得出不同的分支結構,從而影響整顆決策樹的效能。屬性劃分的目標是讓各個劃分出來的子節點盡可能地「純」,即屬於同一類別。因此下面便是介紹量化純度的具體方法,決策樹最常用的演算法有三種:id3,c4.5和cart。

id3演算法使用資訊增益為準則來選擇劃分屬性,「資訊熵」(information entropy)是度量樣本結合純度的常用指標,假定當前樣本集合d中第k類樣本所佔比例為pk,則樣本集合d的資訊熵定義為:

假定通過屬性劃分樣本集d,產生了v個分支節點,v表示其中第v個分支節點,易知:分支節點包含的樣本數越多,表示該分支節點的影響力越大。故可以計算出劃分後相比原始資料集d獲得的「資訊增益」(information gain)。

資訊增益越大,表示使用該屬性劃分樣本集d的效果越好,因此id3演算法在遞迴過程中,每次選擇最大資訊增益的屬性作為當前的劃分屬性。

id3演算法存在乙個問題,就是偏向於取值數目較多的屬性,例如:如果存在乙個唯一標識,這樣樣本集d將會被劃分為|d|個分支,每個分支只有乙個樣本,這樣劃分後的資訊熵為零,十分純淨,但是對分類毫無用處。因此c4.5演算法使用了「增益率」(gain ratio)來選擇劃分屬性,來避免這個問題帶來的困擾。首先使用id3演算法計算出資訊增益高於平均水平的候選屬性,接著c4.5計算這些候選屬性的增益率,增益率定義為:

cart決策樹使用「基尼指數」(gini index)來選擇劃分屬性,基尼指數反映的是從樣本集d中隨機抽取兩個樣本,其類別標記不一致的概率,因此gini(d)越小越好,基尼指數定義如下:

進而,使用屬性α劃分後的基尼指數為:

從決策樹的構造流程中我們可以直觀地看出:不管怎麼樣的訓練集,決策樹總是能很好地將各個類別分離開來,這時就會遇到之前提到過的問題:過擬合(overfitting),即太依賴於訓練樣本。剪枝(pruning)則是決策樹演算法對付過擬合的主要手段,剪枝的策略有兩種如下:

* 預剪枝(prepruning):在構造的過程中先評估,再考慮是否分支。* 後剪枝(post-pruning):在構造好一顆完整的決策樹後,自底向上,評估分支的必要性。評估指的是效能度量,即決策樹的泛化效能。之前提到:可以使用測試集作為學習器泛化效能的近似,因此可以將資料集劃分為訓練集和測試集。預剪枝表示在構造數的過程中,對乙個節點考慮是否分支時,首先計算決策樹不分支時在測試集上的效能,再計算分支之後的效能,若分支對效能沒有提公升,則選擇不分支(即剪枝)。後剪枝則表示在構造好一顆完整的決策樹後,從最下面的節點開始,考慮該節點分支對模型的效能是否有提公升,若無則剪枝,即將該節點標記為葉子節點,類別標記為其包含樣本最多的類別。

上圖分別表示不剪枝處理的決策樹、預剪枝決策樹和後剪枝決策樹。預剪枝處理使得決策樹的很多分支被剪掉,因此大大降低了訓練時間開銷,同時降低了過擬合的風險,但另一方面由於剪枝同時剪掉了當前節點後續子節點的分支,因此預剪枝「貪心」的本質阻止了分支的展開,在一定程度上帶來了欠擬合的風險。後剪枝則通常保留了更多的分支,因此採用後剪枝策略的決策樹效能往往優於預剪枝,但其自底向上遍歷了所有節點,並計算效能,訓練時間開銷相比預剪枝大大提公升。

對於連續值的屬性,若每個取值作為乙個分支則顯得不可行,因此需要進行離散化處理,常用的方法為二分法,基本思想為:給定樣本集d與連續屬性α,二分法試圖找到乙個劃分點t將樣本集d在屬性α上分為≤t與>t。

* 首先將α的所有取值按公升序排列,所有相鄰屬性的均值作為候選劃分點(n-1個,n為α所有的取值數目)。* 計算每乙個劃分點劃分集合d(即劃分為兩個分支)後的資訊增益。*選擇最大資訊增益的劃分點作為最優劃分點現實中常會遇到不完整的樣本,即某些屬性值缺失。有時若簡單採取剔除,則會造成大量的資訊浪費,因此在屬性值缺失的情況下需要解決兩個問題:

(1)如何選擇劃分屬性。

(2)給定劃分屬性,若某樣本在該屬性上缺失值,如何劃分到具體的分支上。

假定為樣本集中的每乙個樣本都賦予乙個權重,根節點中的權重初始化為1,則定義:

對於(1):通過在樣本集d中選取在屬性α上沒有缺失值的樣本子集,計算在該樣本子集上的資訊增益,最終的資訊增益等於該樣本子集劃分後資訊增益乘以樣本子集佔樣本集的比重。即:

對於(2):若該樣本子集在屬性α上的值缺失,則將該樣本以不同的權重(即每個分支所含樣本比例)劃入到所有分支節點中。該樣本在分支節點中的權重變為:

機器學習04 決策樹 隨機森林

定義 h的專業術語稱之為資訊熵,單位為位元。總結 資訊和消除不確定性是相聯絡的 定義與公式 特徵a對訓練資料集d的資訊增益g d,a 定義為集合d的資訊熵h d 與特徵a給定條件下d的資訊條件熵h d a 之差,即公式為 資訊增益表示得知特徵x的資訊而息的不確定性減少的程度使得類y的資訊熵減少的程度...

機器學習 決策樹

一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...

機器學習 決策樹

我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...