【机器学习】【PCA,SVM,K-Means】

PCA,全称Principal Component Analysis,主成分分析,用于数据压缩,加快训练速度。

PCA降维,消除训练集中冗余特征,例如:数据集中有一类特征是厘米长度,又有一类特征是英寸长度。在处理音频的时候,有那么大维度的特征,我们不可能人工的检查出这类冗余特征,就需要进行PCA降维。

具体的PCA降维过程及原理什么的,网上肯定有很多解释,这里只总结一下PCA降维一些具体操作。

对了,这幅图是解释一下,PCA与线性回归的区别。(左图为线性回归,右图为PCA)

线性回归(左图)是为了最小化点和直线间的平方误差,是某个点与预测值之间的差值;而PCA(右图)是最小化点和线之间的最小距离,也就是正交距离。该篇文章所有图均来源于:网易公开课-吴恩达老师-机器学习

这里为了能够好理解,假设训练集的特征为二维。

PCA降维:我们需要将n维的特征向量压缩为k维,即x(i)∈R^n→Z(i)∈R^k(表示第i个样本,特征向量为n维,压缩到第i个样本,特征向量为k维)

首先,对m个样本求得一个协方差矩阵,如下图:(Sigma表示该矩阵)

其次,通过对Sigma矩阵进行奇异值分解

具体为何对Sigma进行奇异值分解,暂时还没进入深入研究,当然可以直接调库来进行svd操作,得到的U矩阵是我们需要的

得到的U矩阵,是一个n*n的矩阵,因为x(i)是n*1的向量,x(i)*x(i)^T,即(n*1)*(1*n)→R^(n*n),即Sigma其实是n*n矩阵。

接下来,我们选择矩阵U的前k列,将这个新矩阵进行转置并与样本矩阵做矩阵乘法,如下图所示:

对U转置后的矩阵维度为k*n,训练集矩阵X则是n*m(n为特征参数个数,m为样本个数)

得出的Z矩阵维度为k*m,矩阵Z的每一个列向量即为压缩后的样本特征向量。即Z(i)对应X(i)。(Z(i)表示Z的第i个列向量)

 

 

SVM,Support Vector Mashine支持向量机,有两类,线性SVM和非线性SVM,由于它的某种特性(下面会提到)又被称为大间距分类器。

首先,为什么称其为大间距分类器?下面通过一张图来了解。

为了方便理解,这里特征向量维度为2,图中需要将训练集分为两类。我们可以直接进行线性区分。但是决策的边界并不是唯一的,如:

这样,洋红色线条和绿色线条都是用来分类的边界。

但是,SVM会选择这条黑色的线条来进行分类,从图中可以直观的看到,对于此时的训练数据进行SVM分类,显得更加稳健。

大致了解SVM的作用之后,可以看看SVM的代价函数

其中cost1和cost0函数通过logistic回归中的log函数演变过来的。图形如下:

代价函数中,C代表类似于logistic正则化项的1/λ,控制方差与偏差的权重。应用SVM对这样的数据进行分类,黑色的线代表线性SVM的边界。

如果设置常数C的初始值非常大的话,且分类过程只应用了SVM时,那么单个特殊的数据对分类结果的影响就非常大。例如下图:

当然,如果C的值设置得比较小时,那么SVM就会忽略掉这些特殊的点。

那么,为什么这个代价函数能使得SVM与样本间距最大呢???吴老师的课中讲的很清楚。这里简单总结下,以防自己以后忘了。

首先是线性代数的相关知识,假设两个向量u=[u1,u2]^T,v=[v1,v2]^T,那么u^T*v=u1*v1+u2*v2,也称u和v的内积,两个二维向量在图中表示如图:

图中p称为v在u上投影的量,向量u的长度||u||=sqrt(u1^2+u2^2)(sqrt代表开根号),u和v的内积另一种计算方法为u^T*v=p*||u||,即u^T*v=u1*v1+u2*v2=p*||u||。当然,p有可能为负值,也就是v与u夹角超过90度的情况。好了,接下来继续看看SVM的代价函数

为了方便,我们假设特征数n=2,那么该过程就是最小化1/2*(θ1^2+θ2^2),然后将其变形一下:

1/2*(sqrt(θ1^2+θ2^2))^2

根据上一步的线性代数知识:sqrt(θ1^2+θ2^2)=||θ||,θ为参数向量。那么此时,这步的目的就转化为了min(1/2||θ||^2)

继续看上一步的代价函数cost1和cost0函数中的根据前面的线性代数知识,转变一下内积的计算方法,如下图

我们将其放在分类训练数据中:

将该数据分为两类,其中绿线表示决策边界,可以看出,该边界并不算一个很好的分类边界,需要知道一点,θ参数向量与该决策边界是垂直的,然后,将所有样本投影到θ参数向量上,并且,当y(i)=1时,我们希望p(i)*||θ||>=1,当y(i)=0时,我们希望p(i)*||θ||<=-1。如图

无论是处于θ向量的上方或者下方的数据,我们的代价函数都希望||θ||尽量小,那么我们就需要|p(i)|尽量大,即当p(i)>0时,p(i)尽量大,p(i)<0时,p(i)尽量小。于是SVM就形成了下面的图:

这也就是为何SVM被称为大间距分类器的原理。

接下来简单说一下非线性SVM的核函数和处理过程。肯定有很多博客介绍过,所以只是简单介绍一下。

首先,将m个训练样本的特征向量,作为l向量(landmark,为什么要用标记向量呢...一笔带过,也可以看下面这个图

,为了实现分类,那么离l向量近的数据为一类,离l向量较远的为一类,这样就实现了非线性的分类)

将m个训练样本的特征向量,作为l向量

通过x(i)与核函数,来计算出每个特征向量的f(i),图中similarity为核函数。

那么每个f(i)的维度即为总样本量为m+1(多的一个维度为偏移量)。所以,我们需要训练的代价函数:

此时训练得到的θ就是支持向量机的参数。非线性SVM核函数有多种,比较常用的有高斯核函数,如下

K-Means,非监督学习将数据分为K类,简单说一下过程,随机初始化K个与数据同维度的向量,然后通过计算样本数据与该K个向量的距离,选出距离最近的,这样就将数据分为K类,然后,再取K类的中心点(取平均值为一种方法),再将样本分为K类,如此反复,最后通过设置循环次数或者偏移距离来终止循环。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值