分類
基本概念
分類:一種數據分析形式,它提取刻畫重要數據類的模型。這種模型叫分類器,進而預測分類的(離散的、無序的)類標號。
相關概念解釋
- 訓練集:由數據庫元組和與它們相關聯的類標號組成。
- 元組X用n維屬性向量x=(x1,x2,x3……xn)表示,分別描述元組在n維數據庫中的n個屬性值的集合。
- 每個元組都可預先定義爲一個類,由一個稱爲類標號屬性的數據庫屬性確定。
- 類標號屬性:是離散的和無序的。它是分類的(標稱的。標稱屬性的值僅僅只是不同的名字,以區分不同對象)。因爲每個值充當一個類別或類。
- 數據元組也稱爲:樣本、記錄、實例、對象、數據點。
- 屬性值也稱:變量、特徵、字段、維。
- 屬性的數量稱爲維度。
- 由訓練集所得到的學習模型:可用分類規則、決策樹、數學公式的形式表示。
第一步 建立模型(可看作學習一個函數y=f(x),它可預測給定元組X的類標號y。)
第二步 檢驗模型並用於新的分類(由檢驗集評估分類器的準確率,再應用於新的數據進行分類)
如上圖分類的預測任務,首先通過已有的數據集(訓練集)進行訓練學習,得到一個目標函數(學習模型或分類規則),再通過檢驗集的數據對該模型的準確度評估,若通過評估,則該規則應用於新的數據元組分類。
- 分類器在給定檢驗集上的準確率是指分類器正確分類的檢驗元組所佔的百分比。通過每個檢驗元組的類標號與學習模型對該元組的類預測進行比較。
- 監督學習 (用於分類)
即分類器的學習,是在已知每個訓練元組的類別的“監督下”進行的。 - 無監督學習(用於聚類)
每個訓練元組的類標號未知,並且學習的類的個數和集合也可能是事先未知的。
- 什麼是決策樹?
- 類似於流程圖的樹結構
- 每個內部節點表示在一個屬性上的測試
- 每個分枝代表一個測試輸出
- 每個樹葉節點存放一個類編號
決策樹:Buys_computer
- 決策樹是如何分類的?
給定一個類標號未知的元組X,在決策樹上測試元組的屬性值,跟蹤一條由根到葉節點的路徑,葉節點存放該元組的類預測。 - 決策樹的生成由兩個階段組成
決策樹構建
1.) 使用屬性選擇度量來選擇屬性,使元組能最好的劃分爲不同的類。
2.) 遞歸的通過選定屬性,來劃分樣本(必須是離散值)。
樹剪枝
1.) 決策樹建立時,許多分枝反映的是訓練數據中的噪聲和離羣點點,樹剪枝試圖識別並剪去這種分枝,以提高對未知數據分類的準確性。 - 決策樹的基本算法
算法主要步驟:
- 以訓練樣本的單個節點N開始;
- 如果樣本都在同一類,則該節點成爲樹葉,並用該類標記。
- 否則,算法調用Attribute_selection_method(屬性選擇度量),選擇能夠最好的將樣本分類的屬性,確定“分裂準則”,指出“分裂點”或“分裂子集”;
- 對測試屬性每個已知的值,創建一個分支,並以此劃分元組;
- 算法使用同樣的過程,遞歸的形成每個劃分上的元組決策樹。一旦一個屬性出現在一個節點上,就在該節點的子節點上刪除;
遞歸劃分步驟停止的條件
- 情形(1):劃分D(在N節點提供)的所有元組屬於同一類
- 情形(2):當前屬性集爲空,或所有樣本在所有屬性上取值相同,無法劃分。
- 情形(3):沒有剩餘的樣本。
- 給定分支沒有元組,則以D中多數類創建一個樹葉
注:整個決策樹建立的關鍵是:屬性選擇的度量,也是算法的核心
1. 屬性選擇度量(分裂準則)
問題: 如何選擇元組的屬性進行優先建樹,使得將所有訓練元組能最好的劃分??(也即使決策樹簡單)。
eg. 女生約會是否見男生。eg. 明天是否打球案例。
理想的劃分是,使每個劃分都是“純”的,即落在給定劃分內的元組都屬於同一類。
2. 常用的屬性選擇度量
- 信息增益
- 增益率
- Gini指數
3. 使用符號如下:
設數據分區D爲標記類元組的訓練集,類標號屬性具有m個不同值,定義了m個不同類Ci(i=1,2,3…,m),設Ci, D 是D中Ci類元組的集合,|D|和|Ci, D|分別是D和Ci, D中元組的個數。
信息增益
ID3算法使用信息增益作爲屬性選擇度量。它是基於香農的信息論,對信息進行度量的方法。(可參考信息論的文章xxx)。
設節點N存放分區D的元組,選擇具有最高信息增益的屬性作爲節點N的分裂屬性。該屬性使最終的結果分區中對元組分類所需要的信息量最小。這種方法使得對一個元組進行分類的測試數目最小,並確保找到一顆簡單的樹。
對D中元組分類所需要的期望信息由下式計算:
其中,Pi是D中任意元組屬於類Ci的非零概率,用|Ci, D|/|D|估計。用到信息論裏面的自信息量公式,表示事件x發生前,事件發生的不確定性,或事件發生後,所得到信息量。
Info(D)是對D中所有元組分類所需要的期望信息(平均信息量)。也稱爲D的熵。熵是隨機變量平均不確定度的度量,同時它也代表了消除隨機變量不確定度所需獲得的信息量。
若我們對屬性A進行劃分元組D,其中A具有v個不同值{a1,a2,a3…,av},若A是離散值,則對應有v個輸出,可以用屬性A將D劃分爲v個分區或子集{D1,D2,D3,…Dv},Dj包含D中的元組,它們的屬性值都爲aj。爲了得到準確分類,還需要多少信息量?由下式計算:
是第j個分區的權重。
是基於按A劃分對D的元組分類所需要的期望信息。
信息增益:原來的信息需求與新的信息需求(對A劃分後)之間的差。
Gain(A)=Info(D)-InfoA(D),即對A劃分後所獲得的信息量。所以選擇最高信息增益Gain(A)的屬性A作爲節點N的分裂屬性。等價於在“能做最佳分類”的屬性A上劃分,使得完成剩餘元組的劃分所需要的信息量最小。
例題: