关键字:K-means算法,聚类中心,畸变函数

一、定义

与有监督学习相比,无监督学习的样本没有任何标记。无监督学习的算法需要自动找到这些没有标记的数据里面的数据结构和特征。这里介绍一下聚类算法和降维。

二、聚类算法


2.1 定义

把数据集分成一个个的簇cluster(也可以理解为一组一组的形式)


2.2 K-means算法(K均值算法)


(1)首先随机生成几个点,叫聚类中心(Cluster Centroids)。Cluster Centroids的个数一般与想把数据分成几类的类数相同。
如下图,想分成两类,首先随机生成两个点。



(2)这是一个迭代算法,一次迭代包含两个步骤。第一个是簇分配,第二个是移动聚类中心。

簇分配:
遍历数据集里面的每个数据,也就是图例的绿色的点。然后根据每个数据是距离红色的聚类中心近还是蓝色的聚类中心近,来判断将数据分配给其中一个聚类中心。迭代终止条件:聚类中心不再变化,
每个数据分配到的聚类不变。


图例判断结束之后是这样的:





移动聚类中心:算出每一个聚类的均值,将聚类中心移动到该点处。图例就分别算出蓝色聚类和红色聚类的均值,然后移动聚类中心。




(3)伪代码表示





(注意如果有一个聚类没有聚类中心,也就是这个聚类里面没有元素了,那么就直接移除这个聚类,不过有时候也会重新选取初始的聚类中心)


(4 )优化目标


首先是参数表示





优化目标叫失真代价函数或者畸变函数,表示:





其实(3)的步骤以及在不断最小化失真函数了


(5)初始化选取哪些数据点(为了避免局部最优)


选择簇的个数:K<m


随机选择K个训练样本


把这K个样本赋值给,即聚簇中心


局部最优的例子:上面的图是全局最优,而下面的两张是局部最优





解决局部最优的方法:


不断选取不同的初始化聚簇中心,得到不同的分类,最后选取J最小的一个。具体算法如下:





(6)如何选取K


经常手动选择


另一个法则:“肘部法则”


理想情况下畸变值随着K做如下变化:





但是实际情况曲线却经常变化不明显,所以这种思路效果不太好:





另一种思路:看哪一个聚簇数量能够更好的适应后续分类


三、降维(dimensionality reduction)


3.1 作用


对数据压缩


对学习算法加速


3.2 应用1:压缩数据


比如把数据从二维降低到一维(比如可能原来的两个维度上的数据可能是非常像线性相关的)


    例子:2D——1D

原来的数据为(x,y)二维的,现在降低为一维(z),把特征从(x,y)换成(z),如图





通过投影实现,原来的数据可以用一条直线近似表示,所以现在只需要一个z就可以确定其对应的原数据了。这样可以使得内存减半,达到数据压缩的目的。


例子:3D——2D


这里的三维空间的所有点都大概在一个平面上,把这些点投影到一个平面上,如图所示





3.3 应用2:可视化数据


比如降国家的数据从50维降低到二维(国家总体GDP和人均GDP)或者三维


3.4 主成分分析办法(PCA)——用来降维





(1)如上图:选择一条直线,把各个点投影到直线上,一个较好的直线需要满足点投影到这条直线的距离(也叫投影误差projection error
,即点到直线的距离)尽可能小。这就是PCA将会实现的目的。表面上PCA找出的是一条直线,但是实际上是一个向量。

(2)如果是将3D->2D,就需要找两个向量,因为两条直线确定一个平面。以此类推,如下图:





(3)PCA与线性回归:二者不一样,线性回归求的是垂直距离,但是PCA求的是正交距离。下图分别是线性回归和PCA:




(4)总结PCA算法:

  在应用PCA之前,先进行均值归一化和特征规范化。使得特征向量(x1,x2)均值为0。

    进行均值标准化:

Sj是一个特征的标准偏差

如果想把n维数据降低到k维,(左边的即Sigma,表示一个矩阵)在Octave中:

其中


如果要投影到k维空间,只需要选取U的前k列即可,为k个方向,构成一个n*k的矩阵叫U_reduce。


    那么如何将n维降低为k维?

新得到的低维z=U_reduce的转置*x,那么z就是k*1的。





(4)PCA中k的选取


k也被称为主成分的个数,或者我们保留主成分的个数


选择k:使得投影的均方误差,即x和其投影的平方距离除以数据的总方差,也就是数据的波动程度,希望这个比例小于0.01


四、原始数据的重构

就是求PCA的逆(从低维回到高维)





带入式子,求得就是原来n维原值的近似值


五、应用PCA的建议


假如有一个代标记的数据集
,其中x的维度很高,那么为了计算快速,就需要进行降维。首先检查被标记的训练集,抽样输入,先抽取x把y放在一边,然后可以得到一个无标签的数据集。然后用PCA对这个无标签的数据集进行降维,然后再把降维后的x得到的z与原来的y组合,把他们输入一个学习算法,像之前的逻辑回归。

    如果再来一个输入x,这是n维的,那么就先对x降维,然后代入学习算法,进行预测。








这是观看吴恩达网易云机器学习系列做的笔记
图片来源于视频课件

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信