一.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 多層感知器