博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习算法学习---处理分类问题常用算法(五)
阅读量:6518 次
发布时间:2019-06-24

本文共 1253 字,大约阅读时间需要 4 分钟。

支持向量机

优点:泛化错误率底,计算开销不大,结果易解释。

缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。

适用数据类型:数值型、标称型。

1、 基于最大间隔分隔数据

如果数据集是N维的,那么需要一个N-1维的对象来对数据进行分隔,该对象被称为超平面,也就是分类的决策边界。

间隔:点到分隔面的距离。

最优分隔超平面:找到距离分隔面最近的点,确保它们离分隔面的距离尽可能远。(原因是希望分类器尽可能健壮)

支持向量:离分隔超平面最近的那些点。

2、寻找最大间隔

分隔超平面的形式化表示:wTx+b;点A到超平面的距离:|wTA+b|/||w||

(1)分类器求解的优化问题

工作原理:输入数据给分类器会输出一个类别标签。详解可见:

分类器:使用类似单位阶跃函数的函数对wTx+b作用得到f(wTx+b),其中当u<0时,f(u)=-1,反之输出+1。

类别标签采用-1和+1,而不是0和1的原因:由于-1和+1仅仅相差一个符号,方便数学上的处理。可以通过一个统一公式来表示间隔或者数据点到分隔超平面的距离,同时不必担心数据属于哪一类。

点到分隔面的函数间隔:label*(wTx+b);点到分隔面的几何间隔:label*(wTx+b)/||w||

目标求出w和b:需要找到支持向量,对间隔最大化。argmaxw,b{minn(label·(wTx+b))/||w||}

该问题是一个带约束条件的优化问题,约束条件是label*(wTx+b)>=1.0。这类问题可以用拉格朗日乘子法求解。

g(x)=wTx+b=<w,x>+b=<sum(αiyixi)1...n,x>+b=sum(αiyi<xi,x>)+b推导过程可见:

 

优化目标函数最后可以写成:maxα[sum(αi)i=1...m-0.5*sum(label(i)·label(j)·αi·αj<x(i),x(j)>)i,j=1...m],其中尖括号表示两个向量的内积,约束条件为:α>=0,和sum(αi·label(i))i=1...m=0(数据必须100%线性可分)。引入松弛变量,允许有些数据点可以处于分隔面错误的一侧,新的约束条件为:

C>=α>=0,和sum(αi·label(i))i=1...m=0,常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标的权重。

SVM主要工作就是求解这些alpha。

3、SMO高效优化算法(序列最小优化)

工作原理:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。“合适“指两个alpha必须满足(1)要在间隔边界之外;(2)还没有进行过区间化处理或者不在边界上。

python实现:

4、核函数

将数据映射到高维空间,将线性不可分问题转换为线性可分问题。

常用核函数:

 

 

转载于:https://www.cnblogs.com/zhenpengwang/p/10815217.html

你可能感兴趣的文章
Win软件私家珍藏-常用软件工具使用总结
查看>>
iToolkit,推荐我们自己做的一套前端组件
查看>>
Junit源码阅读(一)
查看>>
JavaScript设计模式与开发实践 | 01 - 面向对象的JavaScript
查看>>
捷信达酒店管理系统使用说明
查看>>
使用java api 创建excel内容并发送邮件
查看>>
Unity3d删除无用的美术资源轻量级插件
查看>>
2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
查看>>
Linux基础命令---umask
查看>>
Nginx 性能优化(学习笔记二十五)
查看>>
Strategy for Python Challenge(01)
查看>>
Spring事务异常回滚,try catch 捕获异常不回滚
查看>>
钢管识别项目1
查看>>
iOS的@try、@catch()
查看>>
中科院院士谭铁牛:人工智能发展需要理性务实
查看>>
真正的开源与人造开源之间的斗争愈演愈烈
查看>>
Coding and Paper Letter(十七)
查看>>
ES6特性之:模板字符串
查看>>
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
Netflix如何节省92%视频编码成本?
查看>>