感知機perceptron是二類分類問題的線性分類模型,輸入爲實例的特徵向量,輸出爲實例的類別(+1,-1)。感知機旨在求出訓練數據進行線性劃分的分離超平面(separating hyperplane),基於損失函數,利用梯度降低法對損失函數進行極小化,求得感知機模型,從而對新實例進行分類。它分爲原始和對偶形式。1957年Rossenblatt提出。算法
從輸入空間到輸出空間的映射(函數):f(x)=sign(w·x+b)
其中,w是weight,x輸入向量,b偏置bias,sign是符號函數,即
假設空間是定義在全部特徵空間上的函數(線性分類模型)的集合{f|f(x)=w·x+b}
感知機解釋:
線性方程w·x+b=0對應於特徵空間Rn一個超平面,w是超平面的法向量,b是超平面的截距,超平面S將實例分爲正負兩類。函數
若是對於數據集T,存在一個超平面可以徹底正確的將其劃分到超平面的兩側稱爲數據集線性可分linear separable
學習
假設數據線性可分,爲了求出超平面,須要求出w和b,須要一個學習策略(如何找到超平面的計算方法),即定義損失函數,並將損失函數最小化。
定義損失函數:誤分類點總數到超平面S的總距離。
輸入空間Rn任一點到平面的距離是:點到平面的距離
誤分類點知足:
所以誤分類點到平面的距離是:
假設總共有M個誤分類點,則總距離爲:
不考慮常數項||w||,就是感知機的損失函數,即
在誤分類時,L爲w,b的連續可導函數。正確分類時L爲0。spa
主要就是對上述損失函數進行求解全局最小(優)值(極小值)3d
具體採用隨機梯度降低法(stochastic gradient descent SGD):首先任意選取一個超平面w0,b0,而後梯度降低法不斷地極小化目標表函數,極小化過程不是一次使M中全部誤分類點梯度降低,而是一次隨機選取一個誤分類點使其梯度降低。
梯度爲:
具體算法過程:
code
首先將b併入w獲得w hat,將x添加一維1,形式將被簡化。因而獲得:
迭代次數k有一個上限,說明原始算法是可收斂的,前提是數據線性可分。blog
說明一點,感知機的學習算法是支持向量機學習算法的基礎,這裏原始形式和對偶形式與之對應。
Gram 矩陣:
MATLAB示例:ast
1 x1=[3,3]', 2 x2=[4,3]', 3 x3=[1,1]', 4 G=[x1'*x1,x1'*x2,x1'*x3; 5 x2'*x1,x2'*x2,x2'*x3; 6 x3'*x1,x3'*x2,x3'*x3]