分類算法簡述

分類算法簡述


一、什麼是分類算法

數據挖掘任務通常分爲兩大類:

  • 預測任務,根據其他屬性的值,預測特定屬性的值。
  • 描述任務,概括數據中潛在聯繫的模式(相關性,趨勢,聚類,軌跡和異常)

這裏寫圖片描述
  分類屬於預測任務,就是通過已有數據集(訓練集)的學習,得到一個目標函數f(模型),把每個屬性集x映射到目標屬性y(類),且y必須是離散的(若y爲連續的,則屬於迴歸算法)。

二、分類的基本流程

1、模型建立

  分類過程首先需要將生活的數據處理成計算機可以理解的數據(通常爲表)。阿里天池競賽題目爲例,已知客戶行爲信息,以及商品內容,預測推薦哪件商品給客戶會被購買。
  人的每一個行爲都可以抽象成屬性,是否購買過同類產品,買東西的頻率是多少,從點進去網頁到放進購物車的平均時間多少,從放入購物車到下單的時間多少,是否曾經把購物車的東西拿出來過,有無評論買過東西的習慣,有無退貨習慣,買過最貴的東西是什麼價位,最便宜是什麼價位…….

數據名 屬性
客戶id 1
是否買過同類產品
買東西頻率 2
有無退貨習慣
買過商品最貴是多少錢 799
買過商品最便宜是多少錢 32
買過商品平均是多少錢 78
上次買東西多久前 3天前

  真實生活中數據可能有很多屬性,需要我們決定保留哪個屬性(特徵選擇),如“買過最便宜的多少錢”這個屬性可以去掉,“上次買東西多久前”與“買東西頻率”這兩個屬性可以只保留一個。接着我們需要將數據轉換爲計算計可以理解的格式(屬性轉換與模型建立)如“買東西頻率”-》“3天一次”更改爲“買東西頻率(每月)”-》“0.1”

(1)特徵選擇

  • 減少特徵數量、降維,使模型泛化能力更強,減少過擬合
  • 增強對特徵和特徵值之間的理解

這裏寫圖片描述

(2)數據類型

  數據集可以看成數據對象的集合,數據對象的其他名字是記錄向量模式事件樣本實體,屬性的其他名字爲變量特性字段特徵,屬性的數量稱爲維度

這裏寫圖片描述
  表中的學生id,年級,平均成績均爲屬性,每列的所有內容稱爲一個記錄或一個樣本。
  
(3)屬性類型與屬性轉換

  首先確定你所選取的特徵是什麼類型,再通過屬性轉換爲計算機可以理解的格式。如人名屬於標稱屬性,但有時候人名可能會重複,可以將其轉換爲不重複的id。
  
這裏寫圖片描述
          (圖片來自《數據挖掘導論》中文版p17)

  其次可以根據值的個數,將屬性區分爲離散屬性或者連續屬性,如果離散屬性中每個值的價值相同如,“皮膚顏色”這個屬性中,“黑”,“白”,“黃”三個值的價值相同,但“是否爲黑人”這個屬性中,“是”,“否”,可能“是”在實際應用中價值更大,前者稱爲“對稱屬性”,後者稱爲“非對稱屬性”。
  
(4)模型建立

  通過以上幾步就可以將生活中的數據轉爲計算機可以理解的格式如:這裏寫圖片描述
  
  對於模型的描述

  • 稀疏性:如果數據集非對稱屬性中,“是”的值很少則認爲稀疏性高
  • 維度:屬性個數

2、算法選擇

分類算法按原理分爲以下四大類:

  • 基於統計:如貝葉斯算法
  • 基於規則:如決策樹算法
  • 基於神經網絡:如神經網絡算法
  • 基於距離:如KNN算法

分類算法按模型可以分爲一下兩類:

  • 預測性模型:直接告訴你數據應被分到哪個類
  • 概率性模型:不直接告訴你結果,但告訴你屬於每個類的概率

(3)性能與結果的衡量:

  • 準確率:指模型正確地預測新的或未見過的數據的類標號的能力,這也是模型的首要能力。如果一個模型的分類準確率小於百分之五十,那麼可以認爲其結果是無價值的。在其他條件等同的情況下,當然首選準確率高的分類方法。
  • 速度:指產生和使用模型的時間複雜度。產生模型的試驗數據集通常是巨量的,因爲一般情況下其數量和分類準確率成正比。如果產生和使用模型的時間過長,將嚴重影響用戶的使用。
  • 穩健性:指給定噪聲數據或具有空缺值的數據,模型正確預測的能力。現實中的數據庫通常有噪聲,有時還很大。如果一個分類器不善於消除噪聲的影響,將嚴重影響分類準確率。
  • 可伸縮性:指給定大量數據,有效的構造模型的能力。有些分類器在數據量很小的情況下可以有效的構造模型,隨着數據量的增大,其構造模型的能力顯著下降,這最終也會影響分類準確率。
  • 可解釋性:指學習模型提供的理解和洞察的層次。

  其中計算準確率主要是通過混淆矩陣( Confusion Matrix)的計算,一個完美的分類模型就是,如果一個客戶實際上(Actual)屬於類別good,也預測成(Predicted)good,處於類別bad,也就預測成bad。但從上面我們看到,一些實際上是good的客戶,根據我們的模型,卻預測他爲bad,對一些原本是bad的客戶,卻預測他爲good。我們需要知道,這個模型到底預測對了多少,預測錯了多少,混淆矩陣就把所有這些信息,都歸到一個表裏:

               預測
               true     false
實   true          a       b
際   false       c       d

其中:

 1. d是正確預測到的負例的數量, True Negative(TN,0->0)
 2. c是把負例預測成正例的數量, False Positive(FP, 0->1)
 3. b是把正例預測成負例的數量, False Negative(FN, 1->0)
 4. a是正確預測到的正例的數量, True Positive(TP, 1->1)
 5. c+d是實際上負例的數量,Actual Negative
 6. a+b是實際上正例的個數,Actual Positive
 7. b+d是預測的負例個數,Predicted Negative
 8. a+c是預測的正例個數,Predicted Positive

幾組常用的評估指標:

  1. 召回率(recall,R)/敏感性sensitivity:針對good的正確覆蓋率,預測對的good實例/實際good的實例 =a/(a+b)
  2. 精確率(precision,P):預測爲good的所有樣本中實際爲good搜所佔的數目,預測對的good實例/預測good的實例 =a/(a+c)
  3. f-measure:是一種統計量,常用於評價模型的好壞,取值在0到1之間。 f-measure=(2×P×R)/(R+P)

因爲大部分情況下準確率提升召回率就會下降,所以一般以f-measure值作爲衡量分類器的標準.

三、簡單的分類算法介紹

1、如何選擇合適的算法

  如果你的訓練集很小,高偏差/低方差的分類器(如樸素貝葉斯)比低偏差/高方差的分類器(如K近鄰或Logistic迴歸)更有優勢,因爲後者容易過擬合。但是隨着訓練集的增大,高偏差的分類器並不能訓練出非常準確的模型,所以低偏差/高方差的分類器會勝出(它們有更小的漸近誤差)。你也可以從生成模型與鑑別模型的區別來考慮它們。

2、簡單的分類模型

樸素貝葉斯(Naive Bayes, NB)
  根據條件獨立假設與貝葉斯公式,計算樣本屬於每個類的概率。

決策樹(Decision Tree, DT)
  根據特徵集取值不同,將樣本逐層劃分並建立規則,直到某一個樣本集合內的所有樣本屬於同一類。

K近鄰(K-nearest neighbors, KNN)
  kNN 算法的思路非常簡單直觀:如果一個樣本在特徵空間中的 k 個最相似 ( 即特徵空間中最鄰近 ) 的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章