聚类算法总结

相比较于分类和回归问题的算法,聚类算法因为是没有目标的(计算机需要自己定义类别),所以准确度就没那么高,大家对它的期待就不太高,但它确实是有用的,一般作为有监督学习的辅助算法存在(有时候作为监督学习中稀疏特征的预处理)。

下面我就将自己学到的聚类的相关内容分享一下。

----------------------------------------------------------------------------------------------------------

聚类定义及性质

定义:聚类就是对大量未知标注(已有但没有标注)的数据集,按照数据的内在相似性将数据集划分成多个类别,使类别内的数据相似度较大,而类别间的数据相似度较小分为一类的算法。

性质:属于无监督学习

举例:  根据像素进行分类处理

 

聚类的基本思想

基本思想:对于给定的k,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得每一次的改进之后的划分方案都较前一次更好。

满足条件:给定一个有N个对象的数据集,通过划分聚类技术将构造数据分成k个组合。每个划分代表一个簇,k≤N。也就是说,聚类将数据划分成k个簇,而且这k个划分满足下列条件:

1. 每一个簇至少包含一个对象

2. 每一个对象属于而且仅属于一个簇

 

聚类算法的判别好坏的标准

聚类唯一会使用到的信息是,样本与样本之间的相似度。基于此的判定标准如下:

  •  直观上,就是 “抱团紧不紧,异族远不远”
  •  学术上,叫做 “高类间距,低类内距”,即高类内相似度,低类间相似度。

机器学习的算法是固定的,结果的好坏主要看你选取的 "特征",比如下图这种情况,你是选择 "颜色" 还是 "内容"

图片

通常情况下,我们会使用 "距离" 衡量样本远近。不同的场景下, 会有不同的评定内容(特征)的距离,比如:

  1. 图片检索:图片内容的相似度
  2. 图片分割:图片像素(颜色) 相似度
  3. 网页聚类:文本内容相似度(通过bag of words, TF-IDF, word2vec)
  4. 社交网络聚类:(被)关注人群,喜好,喜好内容等的相似度
  5. 电商用户聚类:点击/加车/购买商品,行为序列等的相似度

无论用什么样的评定内容,最终都会把样本表示成向量,比较的是向量的距离。最常用的距离判定主要有:

  1. 欧式距离/闵科夫斯基距离Minkowski
  2. 曼哈顿距离 (横平竖直的街区距离)
  3. 余弦距离Cosine similarity(两个向量的距离,几何意义不够直观)
  4. 杰卡德相似系数Jaccard(两个集合的距离,交集/并集)
  5. Pearson相似系数(相比于余弦相似度,每个向量都减去了均值u)
  6. 相对熵(K-L距离,散度/混乱度)

 

几种常见的聚类算法

有些聚类算法得到的簇cluster,是一个独立于另外一个的,速度相对较快。比如:

  • K-means聚类
  • 混合高斯模型

另外一些聚类算法,可以看做是树状层叠,无需初始输入聚类个数,是速度比较慢。比如:

  • 层次聚类
  • 密度聚类
  • 谱聚类

1. K-means聚类

定义:也称为k-平均或k-均值,是一种得到广泛使用的聚类算法,或者成为其他聚类算法的基础。

原理:算法首先随机的选择k个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象根据其与簇中心的距离,将它赋给最近的簇。然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。

注:准则函数常常使用最小均方误差MSE(Minimum Squared-Error)

图示K-means

迭代收敛

  • 聚类中心不再变化
  • 每个样本到对应聚类中心的距离之和不再有很大变化

优点

  1. 经典算法,简单,快速
  2. 对处理大数据集,该算法保持可伸缩性和高效率
  3. 当结果簇是密集的,它的效果较好

缺点

  1. *初始值敏感*,必须事先给出k(要生成的簇的数目),对于不同的初始值,可能导致不同结果
  2. 在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用
  3. 不适合于发现非凸形状的簇或者数据集的量大小差别很大的簇
  4. 对噪声和孤立点数据敏感

关于K值的选定:肘点法

选取不同的K值,画出损失函数曲线。然后找出曲线中的 “肘节点”(拐点)。

K-means的局限性

  1. 属于 “硬聚类”,即每个样本只能属于一个类别。其他的聚类方法,如GMM或者模糊K-means允许 "软聚类",即可以同时属于多个类别。
  2. K-means对异常点的 "免疫力" 很差 (因为是取每个值的平均值,一些异常大或异常小的点就会带来比较大的影响)。这一点可以通过一些调整来改善,比如中心不直接取均值,而是找均值最近的样本点代替。
  3. 对于团状的数据点集区分度好,对于带状或环状等 “非凸” 形状区分度差。这一点谱聚类或者特征映射可以获得比较好效果。

2. 层次聚类

很多朋友表示K-means中的K太难确定了,那有没有不需要确定K的聚类算法呢?当然!

定义:层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。具体又可分为:

  • 凝聚的层次聚类(AGNES算法):一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇维越来越大的簇,直到某个终止条件被满足。
  • 分裂的层次聚类(DIANA算法):采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到某个终止条件被满足

图示两种方法的区别

3.密度聚类方法(DBSCAN)

全名:DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

原理:只要一个区域中的点密度大于某个阈值,就把它加到与之相近的聚类中去。

这类算法能克服基于距离的算法(如K-means)只能处理凸形(类圆形)聚类的缺点,可处理任意形状的聚类,且对噪声数据不敏感。但计算密度单元的计算复杂度大,需要建立空间索引了降低计算量。

对比:与划分和层次聚类方法不同,能够把具有足够高密度的区域划分为簇,并可在有 "噪声" 的数据中发现任意形状的聚类。

密度聚类的几个概念

对象的e邻域:给定对象在半径为e内的区域。

核心对象:对于给定的数目m,如果一个对象的e领域至少包含m个对象,则称该对象为核心对象。

直接密度可达:给定一个对象集合D,如果p是在q的e领域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。

:一个基于密度的簇是最大的密度相连对象的集合。

噪声:不包含在任何簇中的对象成为噪声。

4. 谱聚类

谱的定义:方阵作为线算子,它的所有特征值的全体统称为方阵的谱。

  • 方阵的谱半径为最大的特征值
  • 矩阵A的谱半径:(ATA)的最大特征值

谱聚类的定义:一般地说,是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的目的。

注:靠不靠谱关键看它的特征值

5. 混合高斯模型GMM

在不知道是什么分布的情况下,都可以看作是多种高斯分布(正态分布)的组合形式,当然需要基于不同的加权。

全名:Mixture of Multivariate Gaussian

优点

  1. 可解释性好,可以看作多个分布的组合
  2. 速度快,因为EM这种高效的算法在,时间复杂度O(tkn)
  3. 学术上比较直观,最大数据似然概率
  4. 可以拓展到多个其他分布(不仅限于高斯分布)的混合,可通过多个多项式做类别判定

缺点

  1. 初始化要慎重,不然可能掉到局部最优解里去
  2. 需要手工指定K(高斯分布的个数)值
  3. 跟K-means一样,对于我们提到的 “非凸” 分布数据集,也无能为力

注:GMM+EM = Soft Kmeans

K-means 与 层次聚类的对比

  1. K-means是中偏平聚类,产出的一个结果;而层次聚类能够根据聚类程度的不同,产生出不同的结果。
  2. K-means需要指定聚类个数K,层次聚类不需要。
  3. K-means速度相对层次聚类更快一些。

-------------------------------------------------------------------------------------------------------

参考:

Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio (密度最大值聚类)

A tutorial on spectral clustering, Ulrike von Luxburg, 2007 (谱聚类)

Lutkepohl, H.:Handbook of Matrices. Wiley, Chichester(1997) (谱聚类中的特征值问题)

https://blog.csdn.net/lin_limin/article/details/81048411(混合高斯分布和EM算法)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值