感知机学习算法的对偶形式

感知机学习算法的原始形式:http://blog.youkuaiyun.com/qq_29591261/article/details/77934696

本文相对于原文在代码中添加了自己的理解和注释,省略推理过程,想看原理推导的请参考原文:http://www.hankcs.com/ml/the-perceptron.html


关于对偶

对偶,简单地说,就是从一个不同的角度去解答相似问题,但是问题的解是相通的。
或者说原始问题比较难求解,我们去求解另外一个问题,希望通过更简单的方法得到原始问题的解。
对于感知机来说,简单来说,就是用α去记录每个yixi要加多少次,最后一次加上去就好了。
具体理解如下:
这里写图片描述
来源于知乎:https://www.zhihu.com/question/26526858


感知机学习算法的对偶形式

对偶指的是,将w和b表示为测试数据i的线性组合形式,通过求解系数得到w和b。具体说来,如果对误分类点i逐步修改wb修改了n次,则w,b关于i的增量分别为这里写图片描述,这里这里写图片描述,则最终求解到的参数分别表示为:
这里写图片描述
于是有算法2.2:
这里写图片描述


感知机对偶算法代码

  1. # -*- coding:utf-8 -*-
  2. # Filename: train2.2.py
  3. # Authorhankcs
  4. # Date: 2015/1/31 15:15
  5. import numpy as np
  6. from matplotlib import pyplot as plt
  7. from matplotlib import animation
  8.  
  9. training_set = np.array([[[3, 3], 1], [[4, 3], 1], [[1, 1], -1], [[5, 2], -1]])    #训练样本
  10.  
  11. = np.zeros(len(training_set), np.float)    #矩阵a的长度为训练集样本数,类型为float
  12. = 0.0    #参数初始值为0
  13. Gram = None    #Gram矩阵
  14. = np.array(training_set[:, 1])    #y=[1 1 -1 -1]
  15. = np.empty((len(training_set), 2), np.float)    #x4*2的矩阵
  16. for i in range(len(training_set))#x=[[3., 3.], [4., 3.], [1., 1.], [5., 2.]]
  17.     x[i] = training_set[i][0]
  18. history = []    #history记录每次迭代结果
  19.  
  20. def cal_gram():
  21.     """
  22.     计算Gram矩阵
  23.     :return:
  24.     """
  25.     g = np.empty((len(training_set), len(training_set)), np.int)
  26.     for i 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值