这篇文章主要是分析感知器和SVM处理分类问题的原理,不涉及求解
感知器:
感知器要解决的是这样的一个二分类问题:给定了一个线性可分的数据集,我们需要找到一个超平面,将该数据集分开。这个超平面的描述如下:
$w*x+b=0$
而感知器的决策函数是:
$f(x)=sign(w*x+b)$
其中 $z=w*x+b$ 是数据集的一个线性回归。
而 $sign$则是一个简单的符号函数。
所以,我们可以这样理解。感知器是在线性回归的基础上,加了一个阈值,将:
$w * x_i + b\geq 0$ 的y值离散化为+1、$w * x_i + b\leq 0$ 的y值离散化为-1的一个分类器。
理论上,可以使用最小化均方误差的办法来求得所有的权值 W。但是,感知器给出了一个更加简练的办法。
对于一个已知的平面 $w*x+b=0 $,一个点 $(x_i,y_i)$到该平面的距离是:
$d=\frac{|w * x_i + b|}{||w||}$,当该点被正确分类以后,
$y_i=1$时,$w * x_i + b>0$ ,该点到超平面的距离是 $\frac{w * x_i + b}{||w||}$
$y_i=-1$时,$w * x_i + b<0$ ,该点到超平面的距离是 $- \frac{w * x_i + b}{||w||}$
这可以表示为: $\frac{y_i * (w * x_i + b)}{||w||}$
若被误分,则误分点到超平面的距离是 $-\frac{y_i * (w * x_i + b)}{||w||}$
将所有的误分点都相加起来,不考虑$\frac{1}{||W||}$,就得到了感知器的损失函数:
$L(w,b)=-$ $\sum_{i=1}^{n}$$y_i * (w * x_i + b)$
对于一个线性可分的数据集,我们当然是希望误分点越少越好,误分点越少,则损失函数越小。于是,感知器的训练就变成了一个无约束条件的最优化问题:
$min \ \ L(w,b) $
从无约束到有约束,从感知器到SVM:
前面我们得到了感知器的分离超平面: $w*x+b=0 $,这是在无约束的条件下得到的结果。无约束带来的一个很显见的特点是,这样的解有无穷多个。像感知器这样的分类器,我们不能保证每一个分离超平面都能够以最大的确信度将可分数据集分离开来。所以,在感知器的基础上,我们希望做到:有最大的确信程度,确定数据的分类。
一般情况下,分类点和超平面的距离衡量了分类的确信程度,分类点和分离超平面越远,说明分类越靠谱。而$|w*x+b|$衡量了点到超平面$w*x+b=0$的距离。而$y_i $和 $w*x_i+b$符号是否一致可以描述分类的正确性。因此,使用$y_i*(w*x_i+b)$可以描述分类的正确与否和确信度。
函数间隔:
(1) 样本点函数间隔:
定义:样本点$(x_i,y_i) $和分离超平面$w*x+b=0 $的函数间隔为:
$T_i$$'$ $=y_i * (w * x_i + b)$ $ $ $i=1,2,3......n$
(2) 训练集的函数间隔:
定义:训练集的函数间隔是所有样本点的函数间隔的最小值:
$T_i$$'$ $=min($$T_i$$'$$) \ $ $i=1,2,3......n$
但是,函数间隔有一个问题是:当 w 和 b 等比例地扩大的时候,y’实际上也在等比例地扩大,但是分离超平面却没有变化。这样,不利于确定最优分离超平面,说明函数间隔舍弃了重要的信息。而从感知器的推导过程来看,唯一被舍弃的信息只有||w||。我们也可以这样理解,w、b之所以能等比例地扩大,这是因为我们没有对w加以约束,因此,需要在函数间隔的基础上加一约束。这样,函数间隔就变成了:
$T=\frac{y * (w * x + b)}{||w||}=\frac{T'}{||w||}$
由于T描述的是样本点$(x_i,y_i) $和分离超平面$w*x+b=0 $的几何距离,因此,得到下面的定义:
(3) 样本点几何间隔:
定义:样本点$(x_i,y_i) $和分离超平面$w*x+b=0 $的几何间隔为:
$T_i=\frac{y_i * (w * x + b)}{||w||}$ $ $ $i=1,2,3......n$
(4) 训练集的几何间隔:
定义:训练集的函数间隔是所有样本点的函数间隔的最小值:
$T = min(T_i) $ $ $ $i=1,2,3......n$
根据SVM需要最大的确信度的思想,可以得到SVM的目标函数如下:
$ max \ \ T$
$\frac{y_i * (w * x_i + b)}{||w||}\geq T$ $ $ $i=1,2,3.....n$
由于 $T=\frac{T'}{||W||}$
因此,可以将这个关系代入上面的目标函数 :
得到 $max \ \frac{T'}{||w||}$
$y_i$$* (w * x_i + b)\geq T'$ $ \ \ \ $ $i=1,2,3......n$
因为 T’表示的是函数间隔,从前面的分析,我们可以知道,w、b等比例的变化的时候,T’也会等比例地变化。因此,我们可以让T’变化为 1 ,这样是可以解得相应的 w 和 b 。
于是,得到: max $\frac{1}{||w||}$
$y_i$$* (w * x_i + b)\geq 1$ $ \ \ \ $ $i=1,2,3......n$
由于 max $\frac{1}{||w||}$ 等价于 min $ \ \frac{1}{2}||w||^2$
所以,问题可以变成:
$ min \ \ \frac{1}{2}||w||^2$
$1-y_i * (w * x_i + b) \leq0$ $ \ \ \ $ $i=1,2,3......n$
上面讨论的都是基于数据集线性可分的前提条件,因此,将其称为线性可分支持向量机
但是,在实际的生活中,我们能够收集到的数据集常常不是线性可分的。这时候,需要在原来线性可分支持向量机的基础上,往深处延伸一下。于是,就有了下一步
从线性可分数据集到近似线性数据集,从线性可分支持向量机到线性支持向量机:
有些训练集不能线性可分,是因为存在一些特异点,将这些特异点去掉以后,剩下的大部分样本组成的集合依然是线性可分的。
在这种情况下,意味着某些样本点$(x_i,y_i) $不能满足函数间隔大于1的约束条件。为了解决这个问题,可以对每个样本点引入一个松弛变量,使得函数间隔加上这个松弛变量后,满足约束条件。因此,约束条件变成了:
$y_i * (w * x_i + b)+ \zeta_i \geq 1$ $ \ \ \ $ $i=1,2,3......n$
于是可以写成:$y_i * (w * x_i + b) \geq 1 - \zeta_i $ $ \ \ \ $ $i=1,2,3......n$
这种情况下,对每一个松弛变量$\zeta_i$,支付一个代价$\zeta_i$。则目标函数由原来的$\frac{1}{2}||w||^2$ 变成:$\frac{1}{2}||w||^2$ $+C$$\sum_{i=1}^{n}$ $\zeta_i$
所以,具有特异点的线性可分支持向量机实际上可以归纳为下面有约束最优化的问题:
$min \ \ \frac{1}{2}||w||^2 + C\sum_{i=1}^{n}\zeta_i$
$y_i * (w * x_i + b) \geq 1 - \zeta_i $ $ \ \ \ $ $i=1,2,3......n$
$\zeta_i \geq 0, \ \ i=1,2,3......n$
从近似线性数据集线性不可分数据集,从线性支持向量机到非线性支持向量机:
除去了线性可分数据集和近似线性可分数据集,剩下的就是非线性数据集了。如果非线性可分数据集能够用一个超曲面将数据集分开,那么,称这类问题为非线性可分问题。
当遇到非线性可分问题时,我们希望通过一个变换,让数据集经过映射后,成为线性可分数据集。这样,我们就能继续沿用前面提到的办法。
记 $z=\phi (x) $是从非线性到线性的映射,那么,只需要将x替换成映射后的函数,就可以继续沿用线性支持向量机的办法,于是,得到目标函数如下:
$min \ \ \frac{1}{2}||w||^2 + C\sum_{i=1}^{n}\zeta_i$
$y_i*(w * \phi (x_i) + b) \geq 1 - \zeta_i $ $ \ \ \ $ $i=1,2,3......n$
$\zeta_i \geq 0, \ \ i=1,2,3......n$
非线性支持向量机的特殊例子:One Class SVM
前面我们谈到,如果一个非线性数据集,可以用一个超曲面将其和其他数据分开,那么这个数据集是非线性可分的。但是,现实生活中有这样的一个应用场景,我们现在只知道正样本,但是其他的样本们无法判断是正样本还是负样本,
举个例子,比如现在有一堆某产品的历史销售数据,记录着买该产品的用户的各种信息(这些信息在特征提取时会用到),然后还有些没买过该产品的用户的数据,想通过2类classification预测他们是否会买该产品,也就是弄2个类,一类是“买”,另一类是“不买”。这时候问题就来了,如果把买了该产品的用户看成正例,没买该产品的用户看成负例,就会出现(1)已经买了的用户,可以明确知道他已经买了,而没买的用户,却不知道他是的确对该产品不感兴趣,还是说想买但由于种种原因暂时没买成。(2)一般来说,没买的用户数会远远大于已经买了的用户数,这会造成training set中正负样本不均衡,使train出来的model有bias。
另外一个例子是,现在有一堆用户行为的记录,记录着该用户对推送给他的文章的应答行为。如果将点击推送文章的用户标记为正样本,而对于没有点击的用户,我们没有办法确定他是不是对该文章是否感兴趣。
还有一个例子是广告方面的例子,记录着用户对广告的点击。我们同样也会得到类似的结果。
那么,对于这种类型的问题,我们应该如何处理呢?如果我们只是考虑用户是否会买商品/点击文章/点击广告,认为不点击的用户不是负样例的话,这一类问题可以理解为只有正样例的学习问题。
这时候,问题就变成了只有正样本的训练问题。因此,可以使用One Class SVM来进行求解。
那One Class SVM的原理是什么呢?由于现在只有一个Class,因此,训练出一个最小的超球面(3维以上),将这些数据都包含起来。遇到一个新的数据点时,如果这个数据点落在超球面上,就是这个类,否则不是。这个算法被称为SVDD(support vector domain description)
由于SVDD的目标是找到一个超球面,只需要一个中心和一个半径,就能确定一个超球面。因此,目标函数如下:
$min \ F(R,a,\zeta_i)=R^2+C\sum_{i}\zeta_i$
$s.t \ (x_i-a)^T(x_i-a)\leq R^2+\zeta_i$ $ \ \ $ $\forall \ i,\zeta_i\geq 0$
上面讨论到的函数求解将会在后续的文章中讨论,敬请期待。
参考文献:
1、《统计学习方法》 李航
2、*
转载请注明源地址:http://www.cnblogs.com/weibao/p/5547587.html
有任何问题请联系:weibao798@gmail.com
从感知器到SVM的更多相关文章
-
感知器、逻辑回归和SVM的求解
这篇文章将介绍感知器.逻辑回归的求解和SVM的部分求解,包含部分的证明.本文章涉及的一些基础知识,已经在<梯度下降.牛顿法和拉格朗日对偶性>中指出,而这里要解决的问题,来自<从感知器 ...
-
感知器、logistic与svm 区别与联系
https://blog.csdn.net/m0_37786651/article/details/61614865 从感知器谈起 对于典型的二分类问题,线性分类器的目的就是找一个超平面把正负两类分开 ...
-
机器学习之感知器和线性回归、逻辑回归以及SVM的相互对比
线性回归是回归模型 感知器.逻辑回归以及SVM是分类模型 线性回归:f(x)=wx+b 感知器:f(x)=sign(wx+b)其中sign是个符号函数,若wx+b>=0取+1,若wx+b< ...
-
机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
-
Coursera机器学习基石 第2讲:感知器
第一讲中我们学习了一个机器学习系统的完整框架,包含以下3部分:训练集.假设集.学习算法 一个机器学习系统的工作原理是:学习算法根据训练集,从假设集合H中选择一个最好的假设g,使得g与目标函数f尽可能低 ...
-
深度学习炼丹术 —— Taoye不讲码德,又水文了,居然写感知器这么简单的内容
手撕机器学习系列文章就暂时更新到此吧,目前已经完成了支持向量机SVM.决策树.KNN.贝叶斯.线性回归.Logistic回归,其他算法还请允许Taoye在这里先赊个账,后期有机会有时间再给大家补上. ...
-
Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法
(一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...
-
第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...
-
设计一个简单的,低耗的能够区分红酒和白酒的感知器(sensor)
学习using weka in your javacode 主要学习两个部分的代码:1.过滤数据集 2 使用J48决策树进行分类.下面的例子没有对数据集进行分割,完全使用训练集作为测试集,所以不符合数 ...
随机推荐
-
【python】操作excel——xlrd xlwt xlutils
from xlutils.copy import copy import xlrd # import xlutils #打开已存在的excel rb=xlrd.open_workbook('D:\\1 ...
-
滚动固定TAB在顶部显示
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
-
java中 File文件常用操作方法的汇总
一.IO流: 1.全称为:Input Output---------输入输出流. 输入:将文件读到内存中. 输出:将文件从内存中输出到其他地方. 2.IO技术的作用: 主要是解决设备与设备之间的数据传 ...
-
北航 编译实践 PL/0文法
编译实践-PL\0编译系统实现 姓名: 专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...
-
C#面向对象的一些笔记
抽象 抽象类通常表示一个抽象的概念,提供一个继承的出发点.当设计抽下类时候,尽可能的拥有更多的相同代码,更少的数据. 抽象类.方法用abstract关键字修饰: 抽象成员不能是private. 抽象类 ...
-
Intersection(poj)
Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13140 Accepted: 3424 Des ...
-
初识Vue——计算属性和观察者
一.计算属性 在模板内使用 1.基础例子 <template> <div class="main"> <div id="reverse_st ...
-
DB 查询分析器 6.04 在 Windows 10 上的安装与运行展示
DB查询分析器 6.04 在 Windows 10 上的安装与运行展示 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员 http://www.csdn.net/art ...
-
[Leetcode 216]求给定和的数集合 Combination Sum III
[题目] Find all possible combinations of k numbers that add up to a number n, given that only numbers ...
-
运行npm install出现警告
如下: 解决: fsevent是mac osx系统的,你是在win或者Linux下使用了 所以会有警告,忽略即可