详解机器学习之感知机理论与实践

版权声明:本文为博主原创文章,未经允许不得转载! https://blog.csdn.net/qq_27590277/article/details/88362129

导读

本章讲的是让他机器学习说yes/no,目录分为:

  1. 感知机假设集合

  2. 感知机学习算法(PLA)

  3. 确保数据集线性可分

  4. 非线性可分数据

  5. 实践代码与效果

Perceptron Hypothesis Set

我们还以是否给办理信用卡为例,上面是客户的信息。

x是上面的客户信息向量,每一个维度对应一个权重w,w理解为这个维度的重要性。这个我们设定一个阈值,客户的每个信息*权重超过了阈值则就给办理,否则不给办理。

其中

我们简化下,将+1设为good,-1设为bad。因为权重*x求和-阈值是一个数,经过sign函数,如果大于0就返回+1,小于0就返回-1,来判断。

我们再来简化下这个公式:

这里的阈值可以看做是*+1的一个变量,将+1看做已知的向量元素x,即:

然后就可以合并:

最终变为两个向量的内积形式。

那么我们的h长什么样子呢?我们在二维上用图表示:

其中:

(x1,x2)为平面上的点

label y为已知,平面上表示为o为+1,x为-1

假设h集合,为平面上的很多线,在线的两边分别为正的,负的。

在数学上,这个叫做线性分类器linear classifiers。

Perceptron Algorithm Learning(PLA)

我们知道集合h里面有我们想要的最终g,但是h集合里面有太多的选择了,我们怎么也不能一个一个选吧?比如上面的二维分类中的h集合里是所有的平面的线条,但是我们怎么也不能一个一个拿来试试吧。我们要想人一样的,想做下试试,再根据错误反馈慢慢调整。

比如下面这条线,我们能不能稍微弄动下,把正确的包含进来呢?

方法如下:

对于每条数据(x,y)来说,如果发现通过通过函数返回值和label y不一样,那么我们就更新,怎么更新呢?

当y=+1时,所得的内积后的值为负数,那代表w和x的夹角太大了,要缩小下,通过公式:

将新的w更新到w和x之间。

当y=-1时,所得的内积后的值为正数,那代表w和x的夹角太小了,要扩大下,通过公式:

将新的w更新到w和x之外。

直到没有错误为止,停止更新,返回w向量即可。

一句话表示这个简单的算法:

知错能改,善莫大焉。

这里有个我拓展个知识:

向量w是该二维平面的法向量:

其实向量w是n维超平面的法向量,因为上图是二维的,所以超平面是一条线。

这里再补充点超平面的知识:

超平面分离定理是应用凸集到最优化理论中的重要结果,这个结果在最优化理论中有重要的位置。所谓两个凸集分离,直观地看是指两个凸集合没有交叉和重合的部分,因此可以用一张超平面将两者隔在两边。

Guarantee of PLA

我们的数据必须是能用一条线(或者一个平面)分开,我们叫这个为线性可分linear separable,如图:

                                                                                              线性可分

                                                                                             线性不可分

                                   

Non-Separable Data

像这种线性不可分的怎么办呢?这个其实很简单,找犯错误最小的就行。公式为:

可是。。这个是个NP-hard问题,而NP-hard问题是直接难倒计算机界的一大难题,至今未解。所以,这样最佳的分割线还是找不到的。

以上图片(除了纸上的推导)来自台大林轩田机器学习基石视频

代码实践

初始化数据

显示的正常分类结果为:

循环迭代更新


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

猜你喜欢

转载自blog.csdn.net/qq_27590277/article/details/88362129