机器学习算法(一): 感知机

感知机(perceptron)由Rosenblatt于1957年提出,是之后提出的神经网络和支持向量机的基础。感知机是二分类的线性分类模型,属于监督学习算法。

优点:简单、易于实现。

缺点:不能解决xor等线性无关问题。

 

感知机分为原始形式对偶形式

感知机就是寻找数集的线性划分,y = sign(w·x + b),其中sign是符号函数。

 

具体步骤:

1、采用所有误分类的点到超平面的距离来衡量分类误差的大小。

注:点x_i到平面的公式为:

len(\boldsymbol{x_i}) = \frac{1}{\|\boldsymbol{w}\|} |\boldsymbol{w}\cdotp\boldsymbol{x_i} + b|           

M为所有分类错误的样本点。误差函数为:

min_{w,b} L(w,b) = - \sum_{x_i\epsilon M} y_i(w*x_{i}+b)

2、用梯度下降法寻找最优的(w,b),来使得损失最小。
采用随机梯度下降法:

梯度函数:
∂L(w,b)∂w=−∑xiϵMyixi ∂L(w,b)∂b=−∑xiϵMyi\frac{\partial L(w,b)}{\partial w} = - \sum_{x_i\epsilon M}y_ix_i

\frac{\partial L(w,b)}{\partial b} = - \sum_{x_i\epsilon M}y_i

更新w,b:

w:=w + \eta y_ix_i

b:=b+ηyi

 

原代码:
def perceptron(X,Y):  
     w = np.mat([0.5,0.5])      
     b = 0.5
     m = np.shape(X)   
     isfind = False
     while not isfind:
         for i in range(m):    
             wx = np.dot(w,X[i].T)  
             if Y[i]*(wx+b) <=0:       
                 w = w + 0.5*Y[i]*X[i]
                 b = b + 0.5*Y[i]
                 break
             elif i == m-1:              
                 print(w,b)
                 isfind=True

 

对偶形式

 

 

 

 

 

参考文献:李航《统计学习方法》、Tom Mitchell《机器学习》

本人邮箱 554756767@qq.com  欢迎交流。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值