第七周呢主要是对SVM的介绍
ng首先从以前讲过的logistic regression入手
将logistic regression的两个log(h(x))和log(1-h(x))改变成如下图的两个cost函数
最后整理得到的SVM的假设是:
除了cost处和logistic regression有一点差距之外,还有一个参数C,相当于logistic regression里面的1/λ,作用相差不大
接下来讲了margin的概念和为什么有人称SVM称为large margin algorithm
其实一句话来说就是分类后所有点到分类的超平面的距离之和最短
放在二维坐标里来说就是用一条直线分类后,两部分重最靠近该boundary的点之间的距离最长
接下来是核函数的说明
andrew ng讲得十分巧妙,至少比我在网上找的一个SVM教程讲的清楚多了
还是在平面来说,
要确定这个boundary,可能需要一个很复杂的polynomial,一般是很难确定到底需要多少次方的polynomial,而另一个很好的技术就是确定一些不共线的点(landmark),每个点视为一个参数,这样也可以表示平面上的所有点,而且假设中的多项式只有选取的点的个数那么多。
为了确定其他点到这个点的距离用来衡量参数好坏,需要有一个函数来给出一个点和另一个点的距离,这就是核函数
视频给了一个比较常用的核函数,高斯核函数:
这个核函数的图像大概是如下(最高处是选择的l点),函数值(0,1],而且较好地区分了点的距离,除此之外还有其他许多核函数,应视具体情况选择使用
如何选取点呢,那就是选择所有的example,简单而粗暴
注意核函数中有一个参数 σ,随着 σ的增大,函数图像会越来越尖细
对于large σ:higher bias,lower variance
small σ:lower bias,larger variance
事实上这周的课程除了将了一下SVM的原理之外,并没有要求实现一个SVM
而是告诉我们去使用一些软件包,比较好的有libliner和libsvm,练习中也是使用的libsvm,如果有时间可以去看看libsvm的源代码
本文出自 “DarkScope从这里开始(..” 博客,请务必保留此出处http://darkscope.blog.51cto.com/4254649/1010706