赞
踩
1995年,Corinna Cortes(CC老师)靓照
CC老师首先给出数据集是二分类且线性可分的情况,设是上的数据集,即,其中,是的标签,例:二维空间中数据集可视化的表示(青色表示“-1”类,红色表示+1类):
CC老师提出了第一个问题:既然能线性可分,那么就有超平面(向量化表示
)将这数据集分开,使得一侧是“+1”类,另一侧是“-1类”,老师让我和同学A、同学B求出超平面,例:二维空间中数据集线性可分的可视化(黄色直线将数据集分在了两侧):
我和同学A、同学B分别给出了直线的方程,我求出的直线方程是,即求出的,同学A的给出的直线方程为,(注意在我直线方程两侧除以5就可以)即,同学B求出的直线方程为,(注意在我的直线方程两侧除以2就可以)即,然后我们三个分别把答案交给CC老师,CC老师说你们三个给我的直线方程,虽然写法不一样,但是只代表一条直线。
CC老师向我们提出了第二个问题,既然这三个方程只代表一条直线,能不能想个办法,把这条直线统一一下,标准一下,CC老师看出了我们三个的迷惑,就给我提示了一下,他说你们可以找到离这条直线最近的点,通过这个点改进你们的直线方程。
补充几何知识:
第一个知识点:已知超平面和数据集,哪个一点离这条超平面最近,答案:哪一个点使得最小,哪一点离这个超平面最近
第二个知识点:已知超平面和点,,那么这个点到这个超平面的距离为:,向量表示法为
通过几何知识,我修改我的直线方程,在二维平面里可直观的看到离这黄色直线最近的点,我用黄色圆圈标注出来了,并给出了这个点的坐标
我的直线方程改进过程:,然后把,同除以4.3,那么最后,所以我修改后的直线方程变为了,注意离这条直线最近的点使得,那么对任意的,都有。
同学B改进他的直线方程过程(我偷瞄的):,把,同除以2.15,那么最后的,直线方程为。
同学A改进他的方程,按照上述步骤,最后和我的是一样。
然后,我们三个把各自的答案给了CC老师,老师看后说,你们的给出的直线方程使得,但是出现了一个负号的差别。你们再想想对于这个问题还有什么条件没用上,我们回答对于的标签,我们没用到。我们知道在超平面一侧的所有点是同号的,即要么都大于零,要么都小于零。
则对于直线当直线方程是时,左下方的点为负数,右上方的点为正数,而左下方的点是属于-1类的,右上方的点是属于+1类的,所以我们可以把去掉绝对值,使得。
而当直线方程是时,左下方为正数,右上方为负数,我们只需把同乘以-1,便得到了。
,直到现在我们三个终于把这条直线的直线方程给统一化了,即,而且这条把数据集分开的直线还满足,老师看到这样的结果还是高兴!然后提出了一个小问题,这些数据集到我们求出的这条直线的最短距离是什么?简单啊,就是,即。老师微微点点头,表示对我们反应速度的认可!
CC老师又抛给了我们一个问题,还有没有别的超平面可以分开这两个数据集,回答是肯定,会有无数个超平面分开这两个数据集,
按照求统一黄色直线方式,我们又求出了图中绿色和蓝色的直线方程,其中绿色直线方程的的系数为我们用绿色的表示,且满足,且这个数据集到绿色直线的最小距离为,蓝色直线的系数为我们用蓝色的表示,且满足,且这个数据集到这条蓝色直线的最小距离为。老师又抛给我们一个问题,既然有无数条,你们什么时候才能求出这些所有的直线,我们也想对啊,老师又说那你们求出的这些直线有没有共同的性质,我们说有啊,就是。
老师又着急了,既然有无数条,就是有无数个,且满足的超平面能分开这两个数据集,那么哪一条才是最好的呢。我们思考了五分钟,没找到好的答案,老师又给我提示,你们已经求出了三条直线,那么要你们从三条直线(系数分别为)里选出一条呢,我们选数据集到这三条直线 最小距离(三个最小距离,,) 最大的那一条,作为最好的那一条直线,老师说答对了,那无数条直线也一样,选数据集到直线 最小距离最大的那一个。
老师说你们能不能用"选数据集到直线 最小距离最大的那一个" 这句话抽象出一个模型或者公式,老师提示说用运筹学分支之一非线性规划的知识,归纳一下这个模型,我们想了一想给出了这个模型公式:
老师微微点点头,范数的平方好处理一些吧,再改改,我们修改如下:
然后,老师说原问题一般用最小值处理,我们又做了一下修改:
最后把原问题乘以0.5,最优化问题的解不变,所以最后模型为:
老师最后微笑了一下,说下课吧,你们的模型已经解释出来了!我们着急的拉住CC老师说:老师,我们穿越过来不容易,你直接告诉我们,这个模型有无数个,那这个非线性规划怎么解啊?。老师说:所以你们就需要考虑这个问题的对偶问题啊。最后老师说:你们先去找找Harold W. Kuhn和Albert W. Tucker,去学习一下他们的kuhn-Ticker条件(KKT)。
本集结束!
下集预告:又要穿越去找Harold W. Kuhn和Albert W. Tucker,去学习他们的解非线性规划的kuhn-Ticker条件(KKT)。
对于支持向量机比较好开源库是台湾大学林老师写的libsvm,这个库只有常用的三个核函数,我在源码的基础上,加上了十个核函数。。。
源码地址:libsvm添加十个核函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。