Svm的一些小碎碎(个人整理)
原文章地址:寒小阳http://blog.****.net/han_xiaoyang/article/details/52678373
1.引言
欠的总是要还的,SVM这么神圣的算法是每个从事数据挖掘/数据分析的朋友可能会头疼的东西,又是不得不面对的,
因为最近准备应聘,所以又将机器学习的这些算法又整理一遍,复习一下,希望我好运!
2.支持向量机(SVM)的学习目标
SVM的目标是利用训练数据集的间隔最大化找到一个最优分离超平面
首先SVM和朴素贝叶斯一样,需要一些用于训练的数据进行训练模型,也就是说SVM是一个有监督学习算法.
SVM也是一个分类算法,和朴素贝叶斯一样,可以用来预测数据属于哪个类别。比如Kg比赛典型的例子:泰坦尼克号生存结果和垃圾邮件分类.
举一个简单的例子方便理解:
图中是人的身高和体重绘制的散点图,使用支持向量机(SVM),可以尝试一下这些问题:
给定一个特征的数据点(重量和身高),这个人的性别是什么?
比如现在有一个人身高为175cm,体重为80kg,他是男性还是女性呢?
很显然,结合上边的图,此人为男性。
3.什么是分离超平面
结合上图很容易就可以看出,我们是有办法可以分离这两类样本点的.比如可以画一条直线,使的将男性和女性分开,在SVM中我们把这条线叫做分离超平面,大概就是下图的这个样子:那么问题来了:这明明是一条直线,为什么称他为一个超平面
上边的小例子中知识只是在二维空间中的,那么如果如果在三维空间中呢?
所谓超平面是平面的一般化:
在一维空间中,它是点
在二维空间中,它是线
在三维空间中,它是面
在四维以及更高维的空间中,我们就称为超平面
什么是最优分离超平面?
回到刚才的例子当中,我们可以找到好几个分离超平面,他们每一个都是正确的,可以成功按照性划分
显然不能随便选择一条分割线,就确定最终的结果,那就太荒唐了!
所以我们选择选择这样的一个超平面:最可能的远离所有类别的数据点;
我们选择这条线为最优,看起来好多了,可以将他们好好的分对了!
这就是SVM要做的事情,支持向量机就是要找到这样一个最优分类超平面,保证:
1.准确无误的将训练数据进行分类
2.对测试集数据也要进行很好的分类
那么最早说这篇博客主要说Margin/间隔有什么关系呢?又怎么找到呢?
结合上边的图,简单的说就是:Margin就是最优分离超平面的间隔
给定一个特征的超平面,我们可以计算出这个超平面与和他最接近的数据点之间的距离.间隔就是二倍的这个距离
一般的说,间隔中间是无点区域.这意味着里边不会有任何的数据元素.(如果数据中存在噪声的,可能不会这么理想)
从刚才的图中选一个,间隔hi看起来像这个样子:
可以看到:图中B的间隔小于A的间隔.
我们有以下的观察结果:
1.如果一个超平面有非常接近的一个数据点,那么间隔会小
2.如果一个超平面离数据点越远,那么间隔越大.
这就意味着 "最优超平面将有最大的间隔"
接下来准备写SVM是利用间隔最大化求得最优分离超平面的!
小阳大佬博客写的非常不错,经常学习,学到了很多东西,这次自己学习写了一下!再次致谢!