分類問題(分類器方法)


一.K-近鄰算法(k-NearstNeighbor,kNN)

  使用某種距離計算方法進行分類。

  思路:如果一個樣本在特征空間中的k個最鄰近樣本中的大多數屬於某一類別,則該樣本也屬於這個類別。該方法所選擇的鄰居都是已經正確分類的對象。

  常用向量距離:歐式 馬氏 信息熵。kNN中一般使用歐式距離計算:

                                                

  統計學習方法中一般要在偏差(Bias)和方差(Variance)間取得一個平衡(Tradeoff)。k的選取同理。

  k的選取:太大:導致分類模糊,偏差過大。

                  太小:分類結果易因噪聲點干擾而出現錯誤,此時方差較大(  受個例影響 波動較大 ,)

  如何選取k:利用交叉驗證評估一系列不同k值。

  步驟:

    (1)計算測試數據和各個訓練數據之間距離

    (2)按距離遞增關系排序

    (3)選取距離最小的k個點

    (4)確定前k個點所在類別的出現頻率

    (5)返回前k個點中出現頻率最高的類別作為測試數據的預測分類

二.朴素貝葉斯(Naive Bayes Classifier,NBC)

  使用概率論建立分類器。

  朴素;整個形式化過程只做最原始、最簡單的假設。假設各特征之間相互獨立

  優點:所需估計參數很少、對缺失數據不敏感、算法簡單、在數據較少情況下依然有效,可處理多類別問題。

  朴素貝葉斯基本公式:

                                           

  分類表達式:

                           

  Note;假設各特征獨立,P(ABC|T)=P(A|T) X P(B|T) X P(C|T)

三.支持向量機(Support Vetor Machine,SVM)

  SVM通常用來進行模式識別、分類、回歸分析。與其他算法相比,SVM在學習復雜的非線性方程提供更清晰、強大的方式。

  通過尋求結構化風險最小來提高機器學習泛華能力,實現經驗風險和置信范圍的最小化,達到在統計量樣本較小情況下,也能獲得良好統計規律目的。

  通俗來講,是一種二分類模型,基本模型定義為:特征空間上的間隔最大的線性分類器,即SVM的學習策略便是間隔最大化,最終可轉化為一個凸二次規划問題求解。

概念了解:

(1)線性可分。很容易在圖中畫出一條直線將這一組數據分開。數據稱為線性可分數據。

                    

(2)分隔超平面。

  在二維平面上,將數據集分隔開的直線稱為分隔超平面。如果是三維的,分隔數據的就是一個平面。如果數據是100維的,那就需一個9維的對象對數據進行分隔,這些統稱為超平面。 

  在樣本空間中,划分超平面可通過如下形式來描述:

            (其中w為法向量,決定超平面的方向,b為位移量,決定了超平面與原點的距離)

(3)間隔

  如下圖,有多種分隔方式,但是哪種分隔方式最好?

  所以SVM的目標是尋找一個超平面,使得離超平面較近的異類點之間能有更大的間隔,即不必考慮所有樣本點,只需讓求得的超平面使得離它近的點間隔最大。

                

 

(4)支持向量。離分隔超平面最近(最小間隔)的數據點是支持向量。

   接下來目標:尋找最大支持向量到分隔面的距離。

                                                           

 

   對使用單位躍階函數f得到 其中當u<0,f(u)=-1,當u>0,f(u)=+1

用一個統一公式表示間隔or數據點到分隔超平面的距離:

              

此時,如果數據處於正方向(+1類)且離分隔超平面很遠的位置,是一個很大正數,則會是一個很大正數;

如果數據處於負方向(-1類)且離分隔超平面很遠的位置,是一個很大負數,由於此時類別標簽為-1,則,仍會是一個很大正數。

  為找到具有最小間隔的數據點(支持向量),就要找到分類器中定義的w,b 。一旦找到支持向量,就要對該間隔最大化,可以寫作:

                    

該基本型是一個凸二次規划問題,可以采用拉格朗日乘數法對其對偶問題求解求解,表達式則變為:

              

約束條件為:

              

 

  常數C用於控制最大化間隔和保證大部分點的函數間隔小於1。因為所有數據可能都有干擾數據,所以通過引入所謂的松弛變量,允許有些數據點可以處於分隔面錯誤的一側。

根據上式可知,只要求出所有alpha,分隔超平面就可以通過這些alpha表達,這也是SVM的主要工作。 

 可參考:https://blog.csdn.net/qq_35992440/article/details/80987664

四.AdaBoost算法

  由若干個分類器構成。

  AdaBoost是一種迭代算法,核心思想:針對同一個訓練集訓練不同的分類器(弱分類器),then把這些弱分類集合起來,構成一個更強的最終分類器(強分類器)。

Adaptive Boosting(自適應),自適應在於:前一個基本分類器分錯的樣本會得到加強,加權后的樣本再次被用來訓練下一個基本分類器。同時,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率,or達到預先設定的最大迭代次數。

   最經常使用的弱分類器是 單層決策樹(決策樹樁),即層數為1的決策樹。

 

  本節使用單層決策樹作為弱分類器。每一個訓練數據都有一個權值系數,注意不是弱分類器系數。建立最佳單層決策樹依據:每個訓練數據在單層決策樹中的分類結果 乘 自己權值系數  后相加的 和 最小,即分類誤差最小化。

AdaBoost迭代算法步驟:

  1.初始化訓練數據的權值分布。若有N個樣本,則每一個樣本最開始時都賦予相同的權重:1/N

  2.訓練弱分類器。具體訓練過程中:if某個樣本點已被准確分類,那么在構造下一個訓練集時,它的權重就被降低;相反,若某個樣本點未被准確分類,那它的權重得到提高。then,權重更新的樣本集被用於訓練下一個分類器,整個訓練過程迭代進行下去。

  3.將各個訓練得到的弱分類器組合成強分類器。加大分類誤差率小的弱分類器權重。

運行過程:

  訓練數據中的每個樣本,並賦予一開始相等權重,這些權重構成了向量D。

  首先在訓練數據上訓練一個弱分類器並計算分類器的錯誤率,then在同一數據集上再次訓練弱分類器。

  在第二次訓練分類器中,會重新調整每個樣本權重,其中第一次分類錯誤的權重會提高,而第一次分類樣本正確的權重會降低。AdaBoost根據每個弱分類器錯誤率進行計算,為每個分類器都配了一個權重α。最終所有α求和。

 

錯誤率定義:

                   ε=未正確分類的樣本數目/所有樣本數目

α計算公式:

     

計算出α后,對權重向量D進行更新,D的計算方法如下:

  如果某個樣本被錯誤分類,那么該樣本權重更改為:

        

  如果某個樣本被正確分類,那么該樣本權重更改為:

        

 計算出D后,AdaBoost開始下一輪迭代。不斷重復訓練和調整權重,直到訓練錯誤率為0,或者弱分類器的數目達到用戶的指定值。

五.決策樹(Decision Tree)

1.決策樹的基本概念

  決策樹是一個非參數的監督式學習方法,又稱為判定樹,是運用於分類的一種樹結構。

2.決策樹的學習過程

3.信息熵

4.Scikit-learn決策樹算法庫類介紹

 

六.Multi-layer Perceptron 多層感知器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM