Machine Learning 決策樹(一)

2021-07-28 11:13:31 字數 1353 閱讀 8805

決策樹(decision tree):是機器學習常見的演算法之一。是基於樹形結構進行決策的。

講決策樹就要提到「資訊熵」、「資訊增益」、「增益率」和「基尼指數」的概念。

我們先來介紹一下這幾個概念:(講解針對離散型資料,連續型暫時不講)

其中,d表示樣本集合(比如現有100個蘋果的資料,d就表示這100個蘋果),y表示標籤可選擇的個數(比如判斷蘋果的好壞,有「好」和「壞」兩種結果,所以y=2),pk表示第k類樣本所佔的比例(例如好蘋果有80個,則p1=0.8,p2=0.2)。通過上式可以計算出資訊熵的值。

資訊熵的值越小,說明集合d的純度越高,即屬於同一類別的蘋果就越多。當全部屬於同一類別時,資訊熵的值為0.

資訊增益(information gain):

a表示樣本眾多屬性中的乙個(比如蘋果的顏色,產地,體型等都是屬性),v表示a這個屬性可以取值的個數(比如,蘋果體型這個屬性可以去大、中、小三個值,v=3),dv表示屬性a取值為v的時候的樣本空間(比如,全部體型大的蘋果,或者全部體型小的蘋果),d讓然表示全部的樣本空間(所有的蘋果)。通過上式可以計算出資訊增益。

資訊增益的值越大,則意味著用屬性a來劃分,所獲得的「純度提公升」越大。換句話說,就是把好壞蘋果分的越清楚。

計算出所有的屬性所對應的資訊增益值,選擇最大的那個屬性,按該屬性將蘋果進行劃分,判斷蘋果是好還是壞。之後再對劃分後的子集合在利用相同的方法選擇屬性進行劃分(已使用過的屬性將不再使用),知道劃分後的蘋果屬於同一類別(都是好的,或者都是壞的)。著名的id3演算法就是以資訊增益為準則來選擇劃分屬性的。

資訊增益對可取值數目較多的屬性有所偏好,當乙個屬性的可取值很多時,他的資訊增益也就回變的很大。(不妨私下試一試)

假如某個屬性是標號,那麼有多少個樣本,該屬性就有多少個取值,該屬性的資訊增益肯定是最大的,但是我們在劃分的時候是不會按樣本編號來劃分的。所以我們要消除這樣屬性給我們帶來的錯誤。這就有了增益率。

增益率(gain ratio):

iv(a)稱屬性a的「固有值」,當屬性a可取的值的個數越多時,iv(a)的值越大。增益率=資訊增益/固有值。

因為,增益率對取值較少的的屬性有所偏好。所以在選區劃分屬性的時候並不是單純的選擇增益了最高的那個,而是在資訊增益高於平均水平的屬性中,選擇增益率最高的那個。

著名的c4.5演算法就是以增益率為準則來選擇劃分屬性的。

基尼指數:

資料集d的純度可以用基尼值來度量。基尼值(gini)反應了從資料集d中隨機抽取兩個樣本,其類別標籤不一樣的概率。 基尼值越小,資料集d的純度越高。

所以,我們會選擇基尼指數最小的那個屬性進行劃分。

cart決策樹(classification and regression tree)就是使用基尼指數來選取劃分屬性的。

參考書籍是 南京大學 周志華老師的 《機器學習》

Machine Learning 梯度下降

對於lost function利用梯度下降的方法實現引數調整,梯度下降在每一次迭代的過程中需要全部樣本參與,而隨機梯度法或增量梯度法在迭代中利用樣本中的乙個樣本更新引數。梯度下降達到全域性最優 include include using namespace std define maxiter 22...

安裝Machine Learning環境

公升級python版本到3.5以上。詳情參考linux公升級python版本 步驟1中也包含了安裝pip 第一批ml環境 pip install tensorflow pip install keras pip install beautifulsoup4 pip install lxml pip ...

機器學習(Machine Learning)

最近開始接觸機器學習,簡稱ml。ml 可以這樣理解,從一堆資料中提煉出特徵值。首先,我們需要在計算機中儲存歷史的資料。接著,我們將這些 資料通過機器學習演算法進行處理,這個過程在機器學習中叫做 訓練 處理的結果可以被我們用來對新的資料進行 這個結果一般稱之為 模型 對新資料 的 過程在機器學習中叫做...