SVM: 用kernels(核函数)来定义新的features,避免使用多项式,高斯kernel
应用kernels来进行非线性分类
非线性分类:是否存在好的features的选择(而不是多项式)--f1,f2,f3....

上图是一个非线性分类的问题,前面讲过,我们可以应用多项式(features)来构造hypothesis来解决复杂的非线性分类问题。
我们将x1,x2,x1x2.....替换成f1,f2,f3......,那么是否有更好的features的选择呢(而不是这些多项式做为features),因为我们知道以这些多项式做为features,次数较高,计算较复杂.
使用Kernel(核函数)来计算新的features

假设现在我们有三个features: x0,x1,x2;我们选择三个标识点(landmarks l(1),l(2),l(3)),通过相似度函数,也称为核函数来计算x与三个标识点之间的相似度
这儿我们使用的核函数是Gaussian(高斯)kernels,核函数有很多种,这儿我们只是选取了其中的一种
核函数也记为小写k(x,l(i)),将旧的features(x0,x1,x2)通过核函数与标识点(landmarks)映射成新的features---f1,f2,f3
Kernels是怎么度量这种相似度的

在这个例子中,我们忽略了x0(截距),因为x0总是等于1.
由上面的公式可以看出,当x与我们的一个landmark很近时,它们之间的欧式距离约等于0,这时高斯核函数的值约为1(可以理解为与这个landmark相似)
当x与我们的landmark相距很远时,它们之间的欧式距离很大,这时高斯核函数的值约为0(可以理解为与这个landmark不相似)
这样我们通过三个landmarks(l(1),l(2),l(3))来生成三个新的features: f1,f2,f3.这三个features分别用来度量样本点是否与这三个landmarks是否相似(1/0)
画图来看核函数(与landmarks的相似度)

假如现在我们的一个landmark为(3,5),σ2=1,则左边为f1的图,可以看到当x=(3,5)时(即与landmark相等时),f1的值达到最大=1,随着x离(3,5)越来越远,f1的值下降,直到为0(即相距很远)。下面的那个图为上面的图的等值线。
σ2为高斯核函数的parameter(参数),它可以用来调整下降的速度。如当σ2=0.5时,图像会更陡,说明下降上升得越快;当σ2=3时,图像会更平缓,说明下降上升得越慢。
使用了新的features(利用kernel函数)后如何进行预测(画出非线性decision boundary)

在SVM中的hypothesis是直接对结果进行预测,如上图所示,当θTx>=0时,hypothesis = 1;
利用某种学习算法求得了它的parameters(θ),分别为θ0=-0.5,θ1=1,θ2=1,θ3=0
当我的x(trainning/crossvalidation/test data)距离landmark1(l1)很近时,这时hypothesis=0.5>0,预测值为1;
当我的x(trainning/crossvalidation/test data)距离landmark2(l2)很近时,这时hypothesis=0.5>0,预测值为1;
当我的x(trainning/crossvalidation/test data)距离landmark1(l1)和landmark2(l2)都很远时,这时hypothesis=-0.5<0,预测值为0;
这样我们就可以画出decision boundary大致如上图所示,在红色框里面的点,预测值为1;在框外的点,预测值为0;这样我们就画出了一个非线性的决策边界
那么我们如何选择landmarks呢?以及除了高斯核函数外有其它的核函数吗?---之后会提到
总结
- Kernel(核函数)是用来计算新的features的,从而避免在非线性较复杂的问题时直接使用多项式来做为features(使用多项式计算较复杂)
- 高斯核函数通过x与landmarks的距离远近来度量这种相似度(越近表明越相似越接近于1,越远表明越不相似,越接近于0),取值范围在0-1之间。这样就映射出了新的features(这种features表明与landmarks的相似的度量)
SVM: 用kernels(核函数)来定义新的features,避免使用多项式,高斯kernel的更多相关文章
- SVM: 使用kernels(核函数)的整个SVM算法过程
将所有的样本都选做landmarks 一种方法是将所有的training data都做为landmarks,这样就会有m个landmarks(m个trainnign data),这样features就 ...
- SVM(三)—Kernels(核函数)
(整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 内容整理中...
- 【机器学习算法-python实现】svm支持向量机(3)—核函数
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gshengod/article/details/24983333 (转载请注明出处:http://b ...
- SVM为什么需要核函数
生存?还是毁灭?——哈姆雷特 可分?还是不可分?——支持向量机 之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理.如果提供的样本线性不可分,结果很简单,线性分类器 ...
- SVM: 实际中使用SVM的一些问题
使用SVM包来求θ,选择C与核函数 我们使用已经编写好的软件包(这些软件包效率高,用得多,是经无数人证明已经很好的可以使用的软件包)来求θ,而不是自己去编写软件来求它们(就像我们现在很少编写软件来求x ...
- Coursera 机器学习 第7章 Support Vector Machines 学习笔记
7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...
- [Scikit-learn] 1.4 Support Vector Machines - Linear Classification
Outline: 作为一种典型的应用升维的方法,内容比较多,自带体系,以李航的书为主,分篇学习. 函数间隔和几何间隔 最大间隔 凸最优化问题 凸二次规划问题 线性支持向量机和软间隔最大化 添加的约束很 ...
- [Scikit-learn] 1.4 Support Vector Regression
SVM算法 既可用于回归问题,比如SVR(Support Vector Regression,支持向量回归) 也可以用于分类问题,比如SVC(Support Vector Classification ...
- 机器学习:SVM(核函数、高斯核函数RBF)
一.核函数(Kernel Function) 1)格式 K(x, y):表示样本 x 和 y,添加多项式特征得到新的样本 x'.y',K(x, y) 就是返回新的样本经过计算得到的值: 在 SVM 类 ...
随机推荐
- eslint 验证vue文件 报错 unexpected token =解决方法
解决方案:.eslintrc更改文件配置 { "extends": [ 'standard' ], "parserOptions": { "parse ...
- 【计算机网络基础】URI、URN和URL的区别
先引用一张关系图 灰色部分为URI URI强调的是给资源标记命名,URL强调的是给资源定位. URI是Uniform Resource Identifier,表示是一个资源: URL是Uniform ...
- AttributeError: 'sys.flags' object has no attribute 'utf8_mode'
AttributeError: 'sys.flags' object has no attribute 'utf8_mode' pycharm工程的py版本是3.6,结果即使使用py3.7编译后的py ...
- Ubuntu /etc/security/limits.conf 不生效问题
一.问题描述 修改 /etc/security/limits.conf ,重启之后不生效 内容如下: * soft nofile * hard nofile root soft nofile root ...
- Java8时间转换
===java8中时间的各种转换(LocalDateTime)=== 1.将LocalDateTime转为自定义的时间格式的字符串 public static String getDateTimeAs ...
- TJOI2019
TJOI出一堆模板题还玩一堆梗是什么鬼 甲苯先生的字符串(矩阵快速幂) 矩阵快速幂模板题 代码 甲苯先生的滚榜(树状数组.线段树) 最开始想平衡树搞,但是平衡树太难写了 一次答案的查询相当于查询比当前 ...
- Maven 的依赖范围
Maven 在编译项目主代码的时候需要使用一套 classpath,在编译和执行测试的时候会使用另外一套 classpath.最后,实际运行 Maven 项目的时候,又会使用一套 classpath. ...
- ADO,net 实体数据模型增、删、改,浅谈
第一步:建立ADO.net数据模型,一步步操作就行 第二步:画个简单的测试界面 第三步铺代码 using DevComponents.DotNetBar.SuperGrid; using DevCom ...
- C# vb .net实现羽化效果
在.net中,如何简单快捷地实现Photoshop滤镜组中的羽化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- git push proxy 取消不掉 can not prox....
使用这个折腾了半天 git config --global --unset http.proxy git config --global --unset https.proxy 没用,原来实现项目目录 ...