解析机器学习中的几种常见聚类算法

来源:互联网 发布:mac屏幕下方白条 编辑:程序博客网 时间:2024/06/14 23:57

关于聚类算法一直是近几年来机器学习的热门,下面谈谈自己对其中几种聚类算法的理解,首先在谈聚类算法之前我们引入相似度这么一个概念,什么是相似度呢,简单来说假设有M个样本,其中任意两个样本之间的相似的度量,很明显我们需要一个标准去度量它们下面有几种常见的度量标准:

1.欧式距离
2.杰卡尔德距离
3.相关系数

1 K-Means算法
还有一些度量标准在这里就不多做介绍了,接下来我们介绍第一种聚类算法,K-Means聚类算法,关于K-Means其时我们首先可以先从算法名称入手,中文名叫K-均值算法,那么我们想这个算法明显是通过某种均值的手段去达到最终目的。
具体怎么来呢,首先给定M个样本,在M中选k(m(1),m(2),m(3)….m(k))个样本作为距离中心,那么对于M样本中的任意某样本X(i)到这k个距离中心的最小距离的那个m(i)便把它归于这么m(i)的类别,然后对M中的所有样本求距离最小,则每个m(i)中都聚集了自己的样本,然后对这些样本相加求平均便得到一个新的值,把这个新的值认为是新的m(i),然后再从新让M中的所有样本求距离最小,再重复求均值,一直迭代下去,直到收敛,这应该算是一种通俗的理解K-means算法的说法。
关于K的给定,该算法对初值是敏感的,其实最简单的方法我们直接用交叉验证判断最合适的就行,再介绍一种叫二分K-means法,我们在较大的簇中随机取两个样本,在两个小簇中随机取一个样本,作为距离中心,然后用K-means可以用来验证
接下来介绍K-means++算法,选第一个距离中心,所有样本到该点的距离给个权值,距离越远权值越大,接着根据权值选第二个距离中心,然后计算其他样本到这两点的距离给权值,再选第三个样本…
下面我们来说比较重要的一点,关于K-means的目标函数,我们默认样本是服从高斯分布的
L(m(1),m(2),m(3)…)=1/2*∑∑(x(i)-m(j))^2
i是从 1,2,3,4… N 就是m()中样本个数
j是 从 1,2….k 就是k 个簇
那么有了目标函数 我们对其关于m(j)求偏导其实就能得到一个很有趣的东西 本质就是m(j)的梯度下降,大家有兴趣可以自己玩玩

2 密度聚类算法
接下来我们讨论关于密度的聚类算法,其实密度算法直观的看其实挺好理解的,首先我们给定几个概念,其中一个是直接密度可达,假设给定一个标准 r m r表示某样本为中心的圆的半径,m是该圆中的样本个数
那么对于某个样本C给定一个半径r 如果它圆内有大于等于m个样本则说C是核心对象,那我们再给定一个样本Q 如果Q在C的圆内,那我们说Q到C是*直接密度可达的,在给定一个样本R 如果R也在C圆内,那么我们说Q和R是密度可达的。再给定一个样本P,如果P是Q的密度可达的,那我们说P和R是密度相连的。那么这样通过密度相连形成的集合就是簇,同时这样可以有效的防止噪声。我们需要调节 r m的值找到搭配最好的效果。
3 谱聚类算法**
关于谱聚类是用特征值与特征向量的办法,首先我们给定M个样本:x(1),x(2),x(3)…x(n), 任意两样本相似度我们用高斯相似度取度量S(i,j),这样我们就能把S(i,j)写成一个n*n的一个矩阵,它其实是一个对称阵,那么我们将该矩阵对角线元素全变为0方便计算,得到W,接着我们将W第一行全加起来得到d(1),第二行全加起来得到d(2),一直加到第n行得到d(n),然后将d(1),d(2)….d(n),写到n*n矩阵的对角线上,其他元素全为零,得到D矩阵为n*n的,接着我们用D-W=L得到L然后求出L的特征值和特征向量,取前K个特征向量,将K个特征向量第一行加起来,便得到第一个样本的特征,第二行加起来得到第二行的特征….一直到取出第n行加起来作为第n个样本的特征,然后对拿到的这些特征我们用K-means算法进行聚类,这就是谱聚类。

关于几个常见的算法就讨论在这,只是浅谈了下这几个算法的思想,关于调参,评价标准,特征选择等就留给大家去讨论了,有不对的地方还请大家多多指教,也欢迎大家多多分享