聚类&相似性度量

聚类属于无监督学习,目的是通过得到的类来发现数据的特点或者对数据进行处理。在数据挖掘和模式识别领域有广泛的应用。层次聚类和k均值聚类是最常用的两种聚类算法。

聚类需要根据样本特征的相似度或者距离来作为是否归属于某一类的依据,也就是相似的样本归为一类,不相似的样本不归为一类。

度量样本特征的相似度或者距离有多种方式:

  1. 闵科夫斯基距离:

          a、当p=1时,称为曼哈顿距离:

          b、当p=2时,称为欧式距离:

               c、当p=∞时,称为切比雪夫距离:

准确的来说闵科夫斯基距离是一组距离的定义,随着次数的增加,向量分量中的大值对距离的贡献会越大,极端下切比雪夫距离只考虑最大的那个分量。一般常用欧式距离。闵科夫斯基距离的缺点一是对所有分量一视同仁,没有考虑不同特征之间的区别,二是没有考虑分量的量纲的影响,相同的特征,变换一下量纲级别就会导致完全不一样的结果,三是没有考虑各个分量之间的分布(期望,方差)。

 

2、马氏距离:

S是整体样本的协方差矩阵, 当协方差矩阵为单位矩阵的时候,马氏距离就等于欧式距离,当协方差矩阵仅为对角矩阵的时候,即为标准化之后的欧式距离,由此可以看出马氏距离的两个优点,一是排除了量纲的影响,相当于标准化了,二是排除了变量之间的相关性的影响,相当除掉掉了向量线性相关部分。马氏距离的缺点是夸大了变化微小变量的作用。

3、相关系数

其中方差:

协方差:

相关系数是针对不同含义的特征之间,衡量彼此的线性关系是否密切,如果密切则考虑合并两个特征,或者对于不同样本之间,相互之间的特征线性关系如果密切,则说明属于同一类别,但这需要特征维度足够大才能说明问题,因为相关系数的一个明显的缺点就是其接近1的程度与公式中m值相关,m值比较小时,相关系数波动大,有些样本相关系数容易接近于1,m值较大时,相关系数的绝对值容易偏小,对于不同的m值之间的样本不具备可比性,比如不能通过对比不同维度的向量对的相关系数的大小,就能判断某一对比另一对更线性相关。

4、夹角余弦

用两个向量夹角的余弦值来衡量两者的相似性,余弦值为1,则角度为零度,说明两个向量完全指向相同的方向,余弦值为0,角度为90度,说明两者之间是独立的,余弦值为-1则说明两者指向相反的方向。余弦相似度常用于高维正空间,比计算文本相似度。

 

类的定义:设T为给定的正数,若集合G中任意的两个样本的距离小于等于T,则G为一个类或簇。

类的中心:

类的直径:

样本的散布矩阵:

样本协方差矩阵:

类间距离:1、最短距离:两个类的样本之间的最短距离;2、最长距离:类似定义;3、中心距离:类心与类心之间的距离;4、平均距离:任意两个不同类的样本之间距离的均值。

层次聚类:层次聚类分两种,一种是聚合聚类,一种是分裂聚类。聚合聚类一开始把每个一样本都分成一个类,然后计算类间距离,选择距离最近的类合并成一个新类,然后再找到所有现有类中的最近的类进行合并,不断的重复这个过程。

聚合聚类的时间复杂度为O(),计算代价比较高

步骤:输入样本集以及样本之间的距离

  1. 计算样本之间的两两距离
  2. 构造样本数量个类
  3. 合并类间距离最小的类为一个新类
  4. 计算新类与当前各类的距离,统计类的个数,判断停止条件,满足条件则终止,不满足条件则回到3。

K均值聚类的时间复杂度为O(mnk)

步骤:输入样本集

  1. 随机选择k个样本作为初始的类心
  2. 计算剩余样本对k个类心的距离,把每个样本划分到最近的类心所代表的类中
  3. 更新计算k个类心
  4. 判断是否满足迭代收敛或停止条件,否则返回2

K均值聚类的结果受初始随机选择的类心的影响非常大,可以进行多次随机选择,然后比较最后的结果的好坏。在已知类别数的情况下,还可以先做层次聚类来确定初始类心。另外,k值的选择可以尝试不同的k值的聚类结果来选择,一般来说类别数k和类的平均直径成单调递减关系,并且曲线上存在一个由急变缓近似临界点,超过这个点后,平均直径就不怎么变小了,这个点就是最优的k值。

参考《统计学习方法》李航

你可能感兴趣的:(机器学习)