机器学习算法之感知机算法

本文介绍了如何使用线性函数对正负样本进行分类,通过最小化误分类点到决策平面的距离作为优化目标。讨论了为何选择距离而非误分类点个数,以及如何通过梯度更新w和b的值来不断优化决策超平面,直至所有样本被正确分类。
摘要由CSDN通过智能技术生成

目标:学习一个决策超平面来对正负样本集合进行分类(注:数据需要满足线性可分)

解释:我们学习的平面函数为wx+b,如果wx+b>0,意味着此样本点在该函数的上面一侧,我们把它称为正类,同理为负类。

原理:通过最小化误分类点到决策平面距离来学习w,b,其中w是2维向量。

问题1:为什么采用误分类点到平面的距离作为优化目标?误分类点的个数不行吗?

答:误分类点的个数并不是一个连续变化的数值量,比如通过我们对决策平面的变化,误分类点的个数可能并没有发生变化,这便不能给出我们一些反馈信息来进行下一步的优化。即:不是连续函数,不可导。

问题2:何为误分类点?

答:对于正类样本来说,如果wx_i+b>0,由正类的标签y_i=+1,则y_i(wx_i+b)>0

,同类负类样本也满足y_i(wx_i+b)>0,因为y_i=-1,wx_i+b<0。因此误分类样本满足y_i(wx_i+b)<0

问题3:误分类点到决策面的距离如何描述?

答:由点到平面的距离公式我们有\frac{1}{||w||}|w*x_i+b|,由于y_i(wx_i+b)不改变wx_i+b的大小,只改变符号,因此|y_i(wx_i+b)|=|w*x_i+b|,去绝对值符号有\frac{1}{||w||}|w*x_i+b|=\frac{1}{||w||}(w*x_i+b)*(-y_i),该值便为误分类点到决策面的距离。

综上:所有误分类点的距离表示为

损失函数表示为

由于||w||对于所有样本点来说是公共常数,因此省略。

优化策略:随机初始化w,b,对于所有的样本计算点到平面的距离,如果满足误分类条件,则加入误分类集合,并根据该样本,计算相关损失函数的梯度,然后优化,重复上述过程,直到满足误分类样本点为0.

data=[(x1,y1),(x2,y2),...,(xn,y_n)]
w=(0,0),b=0
is_wrong=False#用来控制迭代过程
while(!is_wrong):
    error=0#误分类样本的个数
    for i in data:
        if(w*data[i][0]*data[i][1]<0):#此处为矩阵乘法
            w=w+learn_rate*data[i][0]
            b=b+learn_rate*data[i][1]
            error+=1
        if error==0:
            is_wrong=True

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅白Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值