李航《统计学习方法》第二版-第2章 感知机 浅见
- 2.1 感知机模型
- 2.2 感知机学习策略
- 2.3 感知机学习方法
2.1 感知机模型
感知机是二分类线性模型,输入为实例的特征向量,输出为类别,-1和1。
目的是求出将数据分离的超平面,基于误分类的损失函数,用梯度下降法进行最小化,求得感知机模型。
感知机的定义简单就是输入空间X,输出Y={1,-1}。即:
f(x)=sign(w⋅x+b)f(x)=sign(w\cdot x+b)f(x)=sign(w⋅x+b)
w叫权重,就是影响程度,b叫偏置,就是修正偏差用的。其实后面更新的就这两个参数,w就是斜率,旋转多少,w就是平移多少,sign是符号函数,即:
sign(x)&#61;{&#43;1,x≥0−1,<0sign(x)&#61;\left\{ \begin{aligned} &&#43;1,x \geq 0 \\ &-1 ,<0 \\ \end{aligned} \right.sign(x)&#61;{&#43;1,x≥0−1,<0
线性方程 w⋅x&#43;b&#61;0w\cdot x&#43;b&#61;0w⋅x&#43;b&#61;0对应于特征空间的一个超平面&#xff0c;w是法向量&#xff0c;b是截距。二维就是一条线将样本分成两类&#xff0c;三维空间就是一个平面分割成两部分。简单可以如图所示&#xff1a;
2.2 感知机学习策略
我们应该选择怎么样的感知机呢&#xff0c;就是要定个损失函数。我们当然希望能够分清所有的样本&#xff0c;没有偏差&#xff0c;所以损失函数可以定义成有偏差&#xff0c;就是某个样本到超平面的距离&#xff0c;首先要先选出分类分错的样本&#xff0c;即做(xi,yi)(x_i,y_i)(xi,yi)&#xff0c;则分错就是真实的类别和错分的类别相反了&#xff0c;也就是相乘是<0。所以可以是这样:
−yi(w⋅xi&#43;b)>0-y_i(w\cdot x_i&#43;b)>0−yi(w⋅xi&#43;b)>0
即真实的和预测的结果异号。因此到超平面的距离是&#xff1a;−1∣∣w∣∣yi(w⋅xi&#43;b)-{\frac {1} {||w||}y_i(w\cdot x_i&#43;b)}−∣∣w∣∣1yi(w⋅xi&#43;b)
这样所有分类错的点的集合设为M&#xff0c;到超平面的总距离为:−1∣∣w∣∣∑xi∈Myi(w⋅xi&#43;b)-\frac{1}{||w||} \sum_{x_i \in M} y_i(w\cdot x_i&#43;b)−∣∣w∣∣1xi∈M∑yi(w⋅xi&#43;b)
不考虑1∣∣w∣∣\frac {1} {||w||}∣∣w∣∣1,这个是常数&#xff0c;就得可以得到感知机学习的损失函数。
对于给定训练集T&#61;(x1,y1),(x2,y2),...,(xN,yN)T&#61;{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}T&#61;(x1,y1),(x2,y2),...,(xN,yN)
其中xi∈X&#61;Rnx_i \in X&#61;R^nxi∈X&#61;Rn,yi∈Y&#61;{1,−1}y_i\in Y&#61;\{1,-1\}yi∈Y&#61;{1,−1}&#xff0c;i&#61;1,2,..,Ni&#61;1,2,..,Ni&#61;1,2,..,N。则损失函数定义为:
L(w,b)&#61;−∑xi∈Myi(w⋅xi&#43;b)L(w,b)&#61;- \sum_{x_i \in M} y_i(w\cdot x_i&#43;b)L(w,b)&#61;−xi∈M∑yi(w⋅xi&#43;b)
其中M为分类错误点的集合。
2.3 感知机学习方法
当然采用梯度下降法啦&#xff0c;而且是随机梯度下降法&#xff0c;每次随机选一个错分类的点来进行梯度下降&#xff0c;损失函数的梯度由:
∇wL(w,b)&#61;−∑xi∈Myixi\nabla_wL(w,b)&#61;-\sum_{x_i \in M} y_ix_i∇wL(w,b)&#61;−xi∈M∑yixi
∇bL(w,b)&#61;−∑xi∈Myi\nabla_bL(w,b)&#61;-\sum_{x_i \in M} y_i∇bL(w,b)&#61;−xi∈M∑yi
给出。
随机选取一个错分类点(xi,yi)(x_i,y_i)(xi,yi),对w&#xff0c;b进行更新&#xff1a;
w←w&#43;ηyixiw \leftarrow w&#43;\eta y_ix_iw←w&#43;ηyixi
b←b&#43;ηyib \leftarrow b&#43;\eta y_ib←b&#43;ηyi
其中η\etaη是步长&#xff0c;也就是学习率&#xff0c;这样就不断的进行&#xff0c;使得最后损失函数不断减小&#xff0c;直到为0。
基本算法就是:
1.选取初值w0,b0w_0,b_0w0,b0;
2.在训练集上选取数据(xi,yi)(x_i,y_i)(xi,yi);
3.如果1∣∣w∣∣yi(w⋅xi&#43;b)≤0{\frac {1} {||w||}y_i(w\cdot x_i&#43;b)} \leq0∣∣w∣∣1yi(w⋅xi&#43;b)≤0,
w←w&#43;ηyixiw \leftarrow w&#43;\eta y_ix_iw←w&#43;ηyixi
b←b&#43;ηyib \leftarrow b&#43;\eta y_ib←b&#43;ηyi
4.转至2&#xff0c;直至训练集中没有错分类的.
很容易理解&#xff0c;就不多说了。做实验会发现&#xff0c;采取不同的初值或者选取不同的错分类点&#xff0c;解可以不同&#xff0c;并且该算法也右收敛性的理论证明&#xff0c;具体可以去看书&#xff0c;我就不写了&#xff0c;因为写了大多人也不会看的哈哈。
还有中算法就是叫对偶形式&#xff0c;名字比较奇怪&#xff0c;其实因为是收敛的&#xff0c;那必定是有限次更新可以完成&#xff0c;所以可以写出训练集之间内积的形式&#xff0c;而且内积可以服用&#xff0c;存在一个矩阵里&#xff0c;其他原理和上面的算法一样。
总结
感知就模型就是二分类的线性模型&#xff0c;利用梯度下降法将错分类降到最低。
好了&#xff0c;今天就到这里了&#xff0c;希望对学习理解有帮助&#xff0c;大神看见勿喷&#xff0c;仅为自己的学习理解&#xff0c;能力有限&#xff0c;请多包涵&#xff0c;部分图片来自网络,侵删。