热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【机器学习】SVM和核函数

上了吴恩达教授在Coursera上的课程之后,在网上找到了他在斯坦福课程的资料CS229 。下面会结合这两个课程的资料,整理一篇笔记。

背景

从之前的逻辑回归的模型中,我们可以看到,如果一个样本越远离决策边界(Decision Boundary),那么我们就越能确保这个样本被正确分类。所以一个比较好的决策边界是尽量能让所有样本到决策边界的距离最大。从下图中可以看到,如果margin越大,我们对样本的正确分类就越有信心。
【机器学习】SVM和核函数
SVM就是一种能帮你得到margin最大的决策边界的算法。

SVM数学推导

在接下来的推导中,定义y(i){1,1}y^{(i)}\in\{-1,1\},而不是y{0,1}y\in\{0,1\}。首先定义函数间隔(functional margin) 为:
γ^(i)=y(i)(wTx(i)+b)\hat{\gamma}^{(i)}=y^{(i)}(w^{T}x^{(i)}+b)

如果y(i)=1y^{(i)}=1,那么我们希望wTx(i)+bw^{T}x^{(i)}+b能是一个很大的正数,相反,如果y(i)=1y^{(i)}=-1,那么wTx(i)+bw^{T}x^{(i)}+b需要是一个很小的负数,这样就能使得样本离决策边界越远,分类效果越好。因此,得到的functional margin γ^\hat{\gamma}越大,分类效果越好。
对于一个样本集S={(x(i),y(i));i=1,...n}S=\{(x^{(i)},y^{(i)});i=1,...n\},定义:
γ^=mini=1,...nγ^(i)\hat{\gamma}=\min_{i=1,...n}\hat{\gamma}^{(i)}

那么接下来讨论 几何间隔(geometric margin)
【机器学习】SVM和核函数
从上图中可以看到,向量ww一定是与超平面垂直的,我们取超平面上的任意两点x1,x2x_1,x_2x1,x2x_1,x_2满足wx1+b=0wx_1+b=0wx2+b=0wx_2+b=0,两式相减得到w(x1x2)=0w(x_1-x_2)=0。因为向量x1x2x_1-x_2肯定在超平面上,所以可以得到向量ww与这个超平面正交。
假设A为样本点,如何求A到超平面的几何间距γ(i)\gamma^{(i)}呢?假设点B是A到超平面的投影,那么向量B可以表示为x(i)γ(i)wwx^{(i)}-\gamma^{(i)}*\frac{w}{||w||}。而且由于B点位于决策边界上,所以:
wT(x(i)γ(i)ww)+b=0w^T(x^{(i)}-\gamma^{(i)}*\frac{w}{||w||})+b=0

得到γ(i)\gamma^{(i)}为:
γ(i)=(ww)Tx(i)+bw\gamma^{(i)}=(\frac{w}{||w||})^Tx^{(i)}+\frac{b}{||w||}

由于我们的样本是有正负之分的,综合正负样本可以得到:
γ(i)=y(i)((ww)Tx(i)+bw)\gamma^{(i)}=y^{(i)}((\frac{w}{||w||})^Tx^{(i)}+\frac{b}{||w||})

同时定义γ=mini=1,...nγ(i)\gamma=\min\limits_{i=1,...n}\gamma^{(i)}
从geometric margin的表达式可以看到,wwbb的缩放对γ\gamma的值没有影响,所以我们可以把要求的最优化问题写成:
maxy,w,bγs.t.  y(i)(wTx(i)+b)γ,i=1,...,nw=1\max_{y,w,b}\gamma\\ s.t.\space \space y^{(i)}(w^{T}x^{(i)}+b)\ge\gamma, i=1,...,n\\ ||w||=1
但这个问题并不是一个直接可解的优化问题。我们首先用functional matrix来代替geometric matrix:
maxy,w,bγ^ws.t.  y(i)(wTx(i)+b)γ^,i=1,...,n\max_{y,w,b}\frac{\hat{\gamma}}{||w||}\\ s.t.\space \space y^{(i)}(w^{T}x^{(i)}+b)\ge\hat{\gamma}, i=1,...,n

为了剔除γ^\hat{\gamma}的影响,我们可以对wwbb进行缩放,使得γ^\hat{\gamma}为1.前面讨论过,对wwbb同时缩放,并不会影响geometric function的大小,也不会影响最终的结果。
因此,上述问题可以简化成:
minw,b 12w2s.t.  y(i)(wTx(i)+b)1,i=1,...,n\min_{w,b}\space \frac{1}{2}||w||^2\\ s.t. \space \space y^{(i)}(w^{T}x^{(i)}+b)\ge1, i=1,...,n

现在我们把这个问题转换成能用已知的优化问题求解的形式了。

正则化

为了解决某些离散点存在使得我们没办法保证functional margin永远都等于1,所以我们为上式加上一个补偿因子ξ\xi.
minw,b 12w2+Ci=1nξis.t.  y(i)(wTx(i)+b)1ξi, i=1,...,nξi0, i=1,...,n\min_{w,b}\space \frac{1}{2}||w||^2+C\sum_{i=1}^n\xi_i\\ s.t. \space \space y^{(i)}(w^{T}x^{(i)}+b)\ge1-\xi_i, \space i=1,...,n\\ \xi_i\ge0, \space i=1,...,n
其中 C是惩罚系数,即对误差的宽容度。C越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。

核函数

如果我们想要拟合一种比较复杂的情况,通常需要把样本映射到更高维,但如果样本量比较大的时候,模型就会变得很复杂,所以我们需要寻找一种新的表达方式。
对于给定的样本集(x(1),y1),(x(2),y2),...,(x(m),y(m))(x^{(1)},y^{1}),(x^{(2)},y^{2}),...,(x^{(m)},y^{(m)})
选取 l(1)=x(1),l(2)=x(2),...l(m)=x(m)l^{(1)}=x^{(1)},l^{(2)}=x^{(2)},...l^{(m)}=x^{(m)}
然后计算xxl(i)l^{(i)}之间的相似度,记作f(i)f^{(i)}
f(i)=similarity(x,l(i))f^{(i)}=similarity(x,l^{(i)})

其中f(0)=1f^{(0)}=1.
其中最常用的一种核函数就是高斯核函数。
高斯核函数计算相似度的公式为:
f(i)=similarity(x,l(i))=exp(xl(i)22σ2)f^{(i)}=similarity(x,l^{(i)})=exp(-\frac{||x-l^{(i)}||^2}{2\sigma^2})

原先的模型就变成了 h=g(θTf)h=g(\theta^Tf)
【机器学习】SVM和核函数
如果不用核函数,就是线性核,即h=g(θTx)h=g(\theta^Tx)
在用高斯核之前一定要先进行特征缩放。
【机器学习】SVM和核函数
当n很大,但m很小的时候,不建议用高斯核,因为样本量太少,不太好训练一个复杂的模型。
当n很小,但m很大时,也不建议用高斯核,因为高斯核算法训练地很慢。
只有当n比较小,m适中时,才推荐用高斯核。


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 机器学习之数据均衡算法种类大全+Python代码一文详解
    目录前言一、为什么要做数据均衡?二、数据场景1.大数据分布不均衡2.小数据分布不均衡三、均衡算法类型1.过采样2.欠采样3.组合采样四、算法具体种类1 ... [详细]
  • Stanford机器学习第九讲. 聚类
    原文:http:blog.csdn.netabcjenniferarticledetails7914952本栏目(Machinelearning)包括单参数的线性回归、多参数的线性 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 支持向量机训练集多少个_25道题检测你对支持向量机算法的掌握程度
    介绍在我们学习机器算法的时候,可以将机器学习算法视为包含刀枪剑戟斧钺钩叉的一个军械库。你可以使用各种各样的兵器,但你要明白这些兵器是需要在合适的时间合理 ... [详细]
author-avatar
塑料调色cz
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有