10月24日-吴恩达机器学习P72-77

(一)理解大间隔分类器的数学原理

1、向量内积的知识
向量u的范数||u||等于向量u的长度,向量u表示在坐标轴上时其长度可以用这个根式表示。
u向量乘以v向量等价于:v在u上的投影长度p乘以||u||,与u1v1+u2v2的结果是一样的。
注意,在u与v的夹角大于90度时,p<0,向量内积也小于0。
10月24日-吴恩达机器学习P72-77_第1张图片2、SVM决策边界
我们先做一点简化,假设θ0=0,也就是忽略截距。假设特征数即n=2,这样我们就有两个特征量x1和x2。那么优化目标可以变成向量θ的范数的平方的1/2的最小化。
而下面的θTx>=1的条件其实也可以看作是向量θ与向量X的乘积,也等价于P乘以θ的范数。
10月24日-吴恩达机器学习P72-77_第2张图片那么根据上面讲的,条件就可以等价改为P乘以θ的范数。而设定θ0=0,说明直线一定过原点。当SVM是左边这条绿线时,不管是y=1还是y=0,都要求θ很大;
而当SVM是右边这条绿线时,分析下来的θ可以很小。这要求两边的margin很大,这样可以输出一个较小的θ的范数。这就是支持向量机目标函数所做的,也是为什么支持向量机会最终找到大间距的原因。
10月24日-吴恩达机器学习P72-77_第3张图片

(二)核函数1

1、假设我现在有这样一个数据集,现在我需要拟合一个非线性边界来区别正负实例,一种办法是构造复杂多项式,如下。
现在我们用一种新的写法表示这个式子,将各个特征多项式分别用f1、f2、f3…表示。
10月24日-吴恩达机器学习P72-77_第4张图片我们是否有更好的选择构造f1、f2、f3…新特征呢?
假设我们目前只有三个特征x0,x1,x2其中x0=0。现在做三个标记点l(1)、l(2)、l(3)。
给定一个特征X,那么f1、f2、f3可以分别表示为如下相似度函数。
相似度函数,从数学角度来说,就是一个核函数,这里我们用的是高斯核函数,常标记为k(x,l(i))。
10月24日-吴恩达机器学习P72-77_第5张图片接下来查看核函数内部的表示:
如果特征x与标记1(即l(1))很近,那么上面这一项趋近于0,e的0次方≈1;
如果特征x与标记1(即l(1))很远,那么上面这一项趋近于无穷,e的负无穷≈0。
我们在上图做了三个标记l(1)、l(2)、l(3),分别定义了三个新特征f(1)、f(2)、f(3)。
10月24日-吴恩达机器学习P72-77_第6张图片对应的图示:
假设我们有两个特征变量x1、x2,设我们的第一个标记l(1)表示如下,σ^2=1。那么曲面的高度就是f1,底面横轴纵轴分别是x1、x2,不同的训练样本对应着不同的(x1,x2,y)。
只要x1=3、x2=5,那么y=f1=1;如果x1、y1往周围移动,那么离这个点越远,f1的值越接近0。
特征f1衡量了x到第一个标记有多近,这个值在0-1之间。
如果σ^2=0.5呢?整个曲面变得更瘦。也就是说,往标记点周围移动,特征f1下降到0的速度更快了;
如果σ^2=3呢?整个曲面变得更胖。也就是说,往标记点周围移动,特征f1下降到0的速度更慢了。
10月24日-吴恩达机器学习P72-77_第7张图片实例:
假定我们已经找到了一个学习算法计算出θ0=-0.5、θ1=1、θ2=1,那么给出一个训练样本(这个洋红色的点),它与l(1)很近,那么f1≈1;与l(2)、l(3)较远,那么f2≈0、f3≈0;整理计算式子如下,最终计算出h(x)=0.5>=0,预测y=1。
同理,对这个蓝绿色的点预测y=0。这个绿色的点预测y=1。
假设我们有无数个点,可以发现,对于靠近l(1)、l(2)任意一个的点,我们预测y=1;对于远离l(1)、l(2)的点,我们预测y=0。那么我们最终会得到红色线的决策边界。
10月24日-吴恩达机器学习P72-77_第8张图片
这就是核函数,我们通过标记点和相似性函数来定义新的特征量,从而训练复杂的非线性边界。

(三)核函数2

1、如何选取标记点?
直接取样本点作为标记点即可。
说明特征函数基本上是在描述每一个样本集中其他样本的距离。
10月24日-吴恩达机器学习P72-77_第9张图片我们给出这个过程的具体大纲。
我们将选取与m个训练样本一模一样的位置作为我的标记点l(1)、l(2)、…l(m),给定样本x,我们可以计算f1、f2、…f(m)这些特征。那么可以给出特征向量f,由f1、f2、…f(m)等组成。
现在给定训练样本(x(i),y(i)),那么对x(i)可以分别表示为f1(i)、f2(i)、…f(m)(i)的相似度函数。类似地,我们可以用向量f(i)描述特征向量x(i)。
10月24日-吴恩达机器学习P72-77_第10张图片假设我们已经学习到了参数θ,需要对给定的x进行预测,计算m+1维的特征向量f,其中m是指一共m条训练样本。
2、怎样得到参数θ?
我们需要最小化下面这个函数,当你最小化下面这个函数时,你已经最小化了参数θ。另外,我们有n个特征,但我们实际上有的特征量即有效特征量是f的维度的数量,所以这里的n=m。另外,正如之前的正则项,j总是从1开始而不是从0开始的。
在最后一项,SVM算法为了提高计算效率,计算方法略作了修改,这里不详细解释。
10月24日-吴恩达机器学习P72-77_第11张图片可以将核函数关于应用到定义特征向量、标记点的及时用于逻辑回归算法,但是用于支持向量机的计算技巧不能较好的推广到其他算法诸如逻辑回归上,所以核函数应用于逻辑回归会特别慢。
3、如何选择支持向量机中的参数?
(1) 在支持向量机中的参数C的作用类似于正则化中的1/λ的作用。
如果C太大,意味着低偏差、高方差,相当于使用较小的λ(过拟合);
如果C太小,意味着高偏差、低方差,相当于使用较大的λ(欠拟合)。
(2) σ的平方如果较大,特征fi会变化得相对平滑,变化比较平缓,会给模型带来高偏差、低方差;
σ的平方如果较小,相似度函数会变化得相对剧烈,斜率较大,会给模型带来低偏差、高方差。
10月24日-吴恩达机器学习P72-77_第12张图片

(四)使用SVM

1、在实践中,求参数θ不需要我们手动去求,可以直接调用一些软件库(比如:liblinear,libsvm等)。
但我们需要做的是:
(1) 选择参数C
(2) 选择核函数
比如:无核的(也叫“线性核函数”),仅仅用θTx预测y(适用于特征数n多但样本数m少的情况,只是为了确定边界,很怕过拟合);
高斯内核函数,这时你需要进一步选择θ^2(适用于特征数n少但样本数m多的情况);
10月24日-吴恩达机器学习P72-77_第13张图片2、如果选了高斯内核函数,需要注意在代码中实现这个内核函数。
比如在代码中的x1代表的是x(i),代码中的x2代表的是l(j)即标记。
注意:如果你有两个大小很不一样的特征变量,需要在使用高斯内核函数之前将这些特征变量的大小按比例归一化。
10月24日-吴恩达机器学习P72-77_第14张图片
还有一点要注意:不是所有提出来的相似度函数都是有效的核函数,因为SVM中需要一些数值优化技巧来得到参数θ,但这必须满足一些条件。有效的核函数必须满足“默塞尔定理”(Mercer’s Theorem)。
3、介绍其他的一些核函数
(1) 多项式核函数
通常表示成(xTl+常数)的几次方。
(2) 字符串核函数(适用于当输入数据是文本字符串时)、卡方核函数、直方相交核函数等等。
10月24日-吴恩达机器学习P72-77_第15张图片
4、多分类问题
对多分类问题训练KSVM模型将每个类别从其他类别中区分出来,与我们在逻辑回归中运用到的训练多个分类器的思想一致。θ(i)表示第i类。
10月24日-吴恩达机器学习P72-77_第16张图片
5、适用情况
(1) 如果n远大于m:
使用逻辑回归,或无核的SVM
(2) 如果n很小,m适中:
使用高斯内核函数的SVM
(3) 如果n很小,m很大:
增加更多的特征,然后使用逻辑回归或无核的SVM
(4) 神经网络通常适用于设置的大多数情况并且表现得更好,但是可能会比较慢。(如果你有一个好的SVM包,可能会比神经网络快很多。SVM具有的优化问题是一种凸优化问题,好的SVM包会找到它的全局最小值而不是局部最小值)
10月24日-吴恩达机器学习P72-77_第17张图片

(五)无监督学习

1、无监督学习的数据不给出标签y,我们将这系列无标签的数据输入到算法中,让算法找到一些隐含在数据中的结构。
下面这个图我们可以用算法找出数据集中的两组点集(簇),这种算法也叫做聚类算法(Clustering algorithm)。
10月24日-吴恩达机器学习P72-77_第18张图片
聚类算法可以用于分割市场、划分有联系的人群、协同计算机群、银河系的组成等。
2、K-Means算法
在聚类问题中,我们会给定一组未加标签的数据集,同时希望有一个算法能够自动地将这些数据分成有密集关系的子集或簇,K-means算法是最热门的聚类算法之一。
(1) 直观感受k-means原理(簇分配+移动聚类中心)
我想将图上的数据分成两个簇。
第一步随机生成两点,这两点就叫聚类中心。
10月24日-吴恩达机器学习P72-77_第19张图片
每次内循环的第一步就是簇分配。
需要遍历每个样本(绿点),根据它离红色叉近还是离蓝色叉近来划分到不同簇下,将每个点染成对应簇的颜色。
10月24日-吴恩达机器学习P72-77_第20张图片
每次内循环的第二步就是移动聚类中心。
将红色的叉移动到所有红色的点的均值处,将蓝色的叉移动到所有蓝色的点的均值处。
10月24日-吴恩达机器学习P72-77_第21张图片
然后再做一次簇分配。
根据这些点离红色叉近还是离蓝色叉近,重新分到不同簇下面。
10月24日-吴恩达机器学习P72-77_第22张图片
然后再做一次移动聚类中心。
根据同色点的均值移动聚类中心到新的位置上。
10月24日-吴恩达机器学习P72-77_第23张图片
再做一次簇分配。
10月24日-吴恩达机器学习P72-77_第24张图片
再一次移动聚类中心。
10月24日-吴恩达机器学习P72-77_第25张图片
这样就完成了。即使你再进行下一次K均值算法的迭代,聚类中心的位置不会再改变,点的颜色也不再改变,此时我们认为K均值已经聚合了。

(2) 用更规范的方式讲解k-means原理
1、输入K(想分成K簇)、一系列无标签数据集;
10月24日-吴恩达机器学习P72-77_第26张图片

2、随机初始化K个聚类中心,我们记作μ1、μ2、…μk。
3、开启循环:
(1) 簇分配:
对于每个训练样本,我们用变量c(i)表示第1个到第k个最接近x(i)的聚类中心;计算的就是x(i)与聚类中心μi的距离平方。
(2) 移动聚类中心:
等于这个簇中所有点的平均值。
10月24日-吴恩达机器学习P72-77_第27张图片
如果分到一个没有点的聚类中心,我们建议直接把这个点移除,最终分到的是K-1个簇而不是K簇了,当然也可以尝试重新初始化K个聚类中心。
(3) K均值算法的另一个作用–解决分离不佳的簇的问题
通常我们见到的是左边这种易于划分成几个簇的数据,但有时我们也遇到右边这种不利于划分成簇的数据。
服装店收集了很多顾客的身高、体重数据,想设计一款衣服分别为S码、M码、L码,那么这三种码对应的应该是哪些数据呢?
可以用聚类算法指定分成3簇。
10月24日-吴恩达机器学习P72-77_第28张图片

你可能感兴趣的:(吴恩达机器学习,支持向量机)