感知机原理从入门到精通
感知机的原理及预备知识
感知机是一个二分类的模型,它的输入是一个样本的特征向量,输出的是这个样本所属的类别,一般可以认为是一个二分类模型。
感知机有一个假设默认成立,即认为数据集是线性可分的,因为感知机学习的目标就是寻找一个能够将训练集中正例和负例能够完全分开的超平面,注意这里只是找到一个能完全分离正负例的超平面,没有要求是最优的,所以感知机算法可以有多个解。这是由感知机算法的迭代过程决定的,在迭代中,只要找到一个将正负样本完全分开的超平面,感知机算法就停止执行了,所以不同的初始状态,最后得到的感知机模型大概率是不一样的,如果数据是线性不可分的,那么最后就无法获取超平面。
预备的数学知识
- 点到线的距离:直线方程为 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0,点P的坐标为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),那么点到直线的距离为:
d = A x 0 + B y 0 + C A 2 + B 2 2 d = \frac{Ax_0+By_0 + C}{\sqrt[2]{A^2 +B^2}} d=2A2+B2Ax0+By0+C - 样本到超平面的距离: 假设超平面是 h = w ⋅ x + b h=w \cdot x + b h=w⋅x+b,其中 w = ( w 0 , w 1 , . . . , w m ) , x = ( x 0 , x 1 , . . . , x m ) w=(w_0, w_1,...,w_m), x=(x_0,x_1,...,x_m) w=(w0,w1,...,wm),x=(x0,x1,...,xm),样本点 x ′ x' x′到超平面的距离为:
d = w ⋅ x ′ + b ∣ ∣ w ∣ ∣ d = \frac{w \cdot x' + b}{||w||} d=∣∣w∣∣w⋅x′+b
其中 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣是w的L2正则项,即 ∣ ∣ w ∣ ∣ = w 0 2 + w 1 2 + . . . + w m 2 2 ||w|| = \sqrt[2]{w_0^2 + w_1^2 + ...+w_m^2} ∣∣w∣∣=2w02+w12+...+wm2 - 超平面:超平面是在空间 R d R^d Rd中的一个子空间 R d − 1 R^{d-1} Rd−1,在2维空间中的超平面就是一条直线,在3维空间中的超平面就是一个平面。
感知机模型
假如我们有m个样本数据,每个样本对应有n维特征和一个标签值y,如下:
( x 1 0 , x 2 0 , . . . , x n 0 , y 0 ) , ( x 1 1 , x 2 1 , . . . , x n 1 , y 1 ) , . . . , ( x 1 m , x 2 m , . . . , x n m , y m ) (x^0_1,x^0_2,...,x^0_n,y_0), (x^1_1,x^1_2,...,x^1_n,y_1),...,(x^m_1,x^m_2,...,x^m_n,y_m) (x10,x