机器学习笔记2-感知机
感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取+1和-1两个值。感知机学习旨在求出将训练数据进行线性划分的分离超平面,损失函数基于误分类,利用梯度下降法对损失函数进行极小化。(感知机模型是神经网络和支持向量机的基础)
感知机具有形式 f ( x ) = s i g n ( w x + b ) f{\rm{(}}x{\rm{)}} = {\rm{sign(}}wx + b{\rm{)}} f(x)=sign(wx+b),其中 w w w是权值向量, b b b是偏置向量,sign函数是符号函数,超平面S: w x + b = 0 wx+b=0 wx+b=0,称为分离超平面。若对数据集中所有点{( x 1 , y 1 x_1,y_1 x1,y1)( x 2 , y 2 x_2,y_2 x2,y2)…( x n , y n x_n,y_n xn,yn)},都有 w x i + b > 0 wx_i+b>0 wxi+b>0时, y i = + 1 y_i=+1 yi=+1; w x i + b < 0 wx_i+b<0 wxi+b<0时, y i = − 1 y_i=-1 yi=−1,则称为数据集线性可分。其损失函数选取为误分类点集( M M M)到超平面S的总距离,即 − 1 ∥ w ∥ ∑ i ∈ M y i ( w x i + b ) - \frac{{\rm{1}}}{{\left\| w \right\|}}\sum\limits_{i \in M} {{y_i}{\rm{(}}w{x_i}} + b{\rm{)}} −∥w∥1i∈M∑yi(wxi+b)。一般不考虑 1 ∥ w ∥ \frac{{\rm{1}}}{{\left\| w \right\|}} ∥w∥1,损失函数可写为 − ∑ i ∈ M y i ( w x i + b ) -\sum\limits_{i \in M} {{y_i}{\rm{(}}w{x_i}} + b{\rm{)}} −i∈M∑yi(wxi+b)。损失函数是非负的,当误分类点数为零时,损失函数为零。
感知机的学习算法采用随机梯度下降法(SGD),与之对应的有批量梯度下降法(BGD)。BGD每一次迭代时使用所有样本来进行梯度的更新。当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。SGD每次迭代使用一个样本来对参数进行更新。此时虽然训练速度加快了,但准确度会下降,且不易于并行实现。此外还有一个小批量梯度下降法(MBGD),它是对SGD与BGD折中的一个方法,每次迭代使用 batch_size个样本来对参数进行更新。
感知机学习算法的具体形式:
(1)选取初值
w
0
,
b
0
w_0,b_0
w0,b0;
(2)在训练集中选取数据
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi);
(3)如果
y
i
(
w
x
i
+
b
)
<
=
0
y_i(wx_i+b)<=0
yi(wxi+b)<=0,更新参数
w
←
w
+
η
y
i
x
i
w \leftarrow w + \eta {y_i}{x_i}
w←w+ηyixi,
b
←
b
+
η
y
i
b \leftarrow b + \eta {y_i}
b←b+ηyi;
(4)转至(2),直到训练集中没有误分类点。
以上是感知机学习算法的原始形式,除此之外,其还有对偶形式。对偶形式在支持向量机中会有详细讲述(利用的是拉格朗日对偶性)。
参考:
李航《统计学习方法》
https://www.cnblogs.com/lliuye/p/9451903.html