机器学习系列----SVM

本来没打算将笔记记录下来,但是觉得可以帮助别人也能方便自己回顾,就开始写下来把。
关于支持向量机,可以直接下载LIBSVM使用。(mark:本人并没有使用过)其中包含几个感念:
1,分隔超平面(separating hyperplane):用来将数据集进行分割的超平面,数据集是n维,则超平面就是n-1维。
2,间隔(margin):数据点到分隔面的距离。
3,支持向量(support vector):离分隔面最近的一些点。

同logistic回归的0和1不同,SVM采用-1和1对数据点进行分类,方便计算间隔。(label*(w T X+b)总是一个正数)
支持向量机的学习过程,本身就是寻找支持向量的过程。即寻找分隔面附近最近的数据点。并最大化间隔。
对该优化问题,可以增加部分约束条件( label*(w T X+b)>=1.0),引入拉格朗日乘子,将目标函数进行优化。(这部分没看懂。) 将问题转化为求一系列alpha和b。


介绍下Platt的SMO算法
SMO:(Sequential Minimal Optimization序列最小优化)
伪代码:

创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时:(外循环)
    对数据集中的每个数据向量:(内循环)
        如果该数据向量可以被优化:
            随机选择另外一个数据向量
            同时优化两个数据向量
            如果两个向量都不能被优化,退出内循环;
    如果所有向量都没被优化,增加迭代数目,继续下次循环;

以上伪代码,效率较低,可以通过非随机选择另外一个alpha来进行优化。
通过最大化步长的方式来获取第二个alpha值。即分别计算i和j的误差,寻找差值最大。
对于复杂数据集则需要使用核函数(kernel),提供从一个特征空间到另一个特征控件的转换。可以通过解决高维度的线性问题,来等价于低维度的非线性问题。(对于数据点基本在一个园内的情况,可以考虑径向基核函数)

(备注:具体代码来自《机器学习实战》)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值