非监督学习之聚类算法(1)

一、聚类的概念

聚类是一种无监督学习,根据样本的内在相似性/距离,将大量未知标记的样本集划分为多个类别,使得同一个类别内的样本相似度较大(距离较小),而不同类别间的样本相似度较小(距离较大)。
样本相似度比较见python实现相似性/距离的度量

二、聚类算法分类

基于划分的聚类算法:

算法 描述
k-Means 一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,在迭代过程中选择聚类中心点。只能处理数值型数据
k-Modes K-Means算法的扩展,用于处理分类型数据
k-Prototypes 结合了K-Means和K-Modes两种算法,能够处理混合型数据
k-Medoids(中心点) K-Means算法的改进,对异常值不再敏感。代表为Partitioning Around Medoids (PAM)算法。缺点是计算用时长,只适合处理小规模数据集
Clara k-Medoids算法的改进,采用了抽样技术,能够处理大规模数据
Clara NS 对Clara算法的改进,提高了聚类质量,但计算效率较低且对数据输入顺序敏感只能聚类凸状或球型边界

基于层次的聚类算法:

算法 描述
AGNES 算法最初将每个对象作为一个簇,然后这些簇根据某些准则被一步步地合并
BIRCH 基于树模型的数据集扫描,每个叶子节点一个聚类,用中心和半径表示,适合于数据量大,类别数K也比较多的情况。它运行速度很快,只需要单遍扫描数据集就能进行聚类
BUBBLE 把BIRCH算法的中心和半径概念推广到普通的距离空间
BUBBLE-FM 通过减少距离的计算次数,提高了BUBBLE算法的效率
CURE 采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类
ROCK 也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响

基于密度聚类算法:

算法 描述
DBSCAN 一种典型的基于密度的聚类算法,该算法采用空间索引技术来搜索对象的邻域,引入了“核心对象”和“密度可达”等概念,从核心对象出发,把所有密度可达的对象组成一个簇
GDBSCAN 算法通过泛化DBSCAN算法中邻域的概念,以适应空间对象的特点
OPTICS OPTICS算法结合了聚类的自动性和交互性,先生成聚类的次序,可以对不同的聚类设置不同的参数,来得到用户满意的结果
FDC FDC算法通过构造k-d tree把整个数据空间划分成若干个矩形空间,当空间维数较少时可以大大提高DBSCAN的效率

基于网格的聚类算法:

算法 描述
STING 利用网格单元保存数据统计信息,从而实现多分辨率的聚类
WaveCluster 在聚类分析中引入了小波变换的原理,主要应用于信号处理领域。(备注:小波算法在信号处理,图形图像,加密解密等领域有重要应用,是一种比较高深和牛逼的东西)
CLIQUE 一种结合了网格和密度的聚类算法

基于模糊的聚类算法:

算法 描述
PCM模糊聚类算法 模糊集合理论引入聚类分析中的产物

基于神经网络的聚类算法:

算法 描述
自组织神经网络SOM 该方法的基本思想是由外界输入不同的样本到人工的自组织映射网络中
一开始时,输入样本引起输出兴奋细胞的位置各不相同,但自组织后会形成一些细胞群,它们分别代表了输入样本,反映了输入样本的特征

几种常用的聚类算法从可伸缩性、适合的数据类型、高维性(处理高维数据的能力)、异常数据的抗干扰度、聚类形状和算法效率6个方面进行了综合性能评价,评价结果如下表所示:

算法名称 可伸缩性 适合的数据类型 高维性 异常数据的抗干扰性 聚类形状 算法效率
WaveCluster 很高 数值型 很高 较高 任意形状 很高
ROCK 很高 混合型 很高 很高 任意形状 一般
BIRCH 较高 数值型 较低 较低 球形 很高
CURE 较高 数值型 一般 很高 任意形状 较高
K-Prototypes 一般 混合型 较低 较低 任意形状 一般
DENCLUE 较低 数值型 较高 一般 任意形状 较高
OptiGrid 一般 数值型 较高 一般 任意形状 一般
CLIQUE 较高 数值型 较高 较高 任意形状 较低
DBSCAN 一般 数值型 较低 较高 任意形状 一般
CLARANS 较低 数值型 较低 较高 球形 较低

三、聚类模型评价的指标

(1) 兰德系数(ARI评价法),需要真实值,最佳值为1,python里的sklearm函数adjust_rand_score
(2)互信息(AMI评价法),需要真实值,最佳值为1,python里的sklearm函数adjust_mutuai_info_score
(3)V-measure评价法, 需要真实值,最佳值为1,python里的sklearm函数completeness_score
(4)FMI评价法,需要真实值,最佳值为1,python里的sklearm函数fowlkes_mallows_score
(5)轮廓系数评价法,不需要真实值,畸变程度最大,python里的sklearm函数silhouette_score
(6)Calinski- Harabasz指数评价法,不需要真实值,相对较大,python里的sklearm函数calinski_harabaz_core
说明:评价的标准是组内的相似性越大,组间相似性越小,前四种方法因为有真实值得参与相对于后两种更具有说服力,那么当有真实值得参与时聚类的评价可以等同于分类算法的评价 ,轮廓系数在不考虑业务情况下得分越高越好,最高得分是1

四、怎么选择聚类算法

对于一个聚类问题,要挑选最适合最高效的算法必须对要解决的聚类问题本身进行剖析,下面我们就从几个侧面分析一下聚类问题的需求。

聚类结果是排他的还是可重叠的

为了很好理解这个问题,我们以一个例子进行分析,假设你的聚类问题需要得到二个簇:“喜欢詹姆斯卡梅隆电影的用户”和“不喜欢詹姆斯卡梅隆的用户”,这其实是一个排他的聚类问题,对于一个用户,他要么属于“喜欢”的簇,要么属于不喜欢的簇。但如果你的聚类问题是“喜欢詹姆斯卡梅隆电影的用户”和“喜欢里奥纳多电影的用户”,那么这个聚类问题就是一个可重叠的问题,一个用户他可以既喜欢詹姆斯卡梅隆又喜欢里奥纳多。
所以这个问题的核心是,对于一个元素,他是否可以属于聚类结果中的多个簇中,如果是,则是一个可重叠的聚类问题,如果否,那么是一个排他的聚类问题。

基于层次还是基于划分

其实大部分人想到的聚类问题都是“划分”问题,就是拿到一组对象,按照一定的原则将它们分成不同的组,这是典型的划分聚类问题。但除了基于划分的聚类,还有一种在日常生活中也很常见的类型,就是基于层次的聚类问题,它的聚类结果是将这些对象分等级,在顶层将对象进行大致的分组,随后每一组再被进一步的细分,也许所有路径最终都要到达一个单独实例,这是一种“自顶向下”的层次聚类解决方法,对应的,也有“自底向上”的。其实可以简单的理解,“自顶向下”就是一步步的细化分组,而“自底向上”就是一步步的归并分组。

簇数目固定的还是无限制的聚类

这个属性很好理解,就是你的聚类问题是在执行聚类算法前已经确定聚类的结果应该得到多少簇,还是根据数据本身的特征,由聚类算法选择合适的簇的数目。

基于距离还是基于概率分布模型

基于距离的聚类问题应该很好理解,就是将距离近的相似的对象聚在一起。相比起来,基于概率分布模型的,可能不太好理解,那么下面给个简单的例子。
一个概率分布模型可以理解是在 N 维空间的一组点的分布,而它们的分布往往符合一定的特征,比如组成一个特定的形状。基于概率分布模型的聚类问题,就是在一组对象中,找到能符合特定分布模型的点的集合,他们不一定是距离最近的或者最相似的,而是能完美的呈现出概率分布模型所描述的模型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 1. 章节主要内容 “聚类”(clustering)算法是“无监督学习”算法中研究最多、应用最广的算法,它试图将数...
    闪电随笔阅读 5,040评论 1 24
  • 1. Kmeans聚类算法简介 由于具有出色的速度和良好的可扩展性,Kmeans聚类算法算得上是最著名的聚类方法。...
    wujingwin阅读 10,436评论 1 8
  • 聚类算法 前面介绍的集中算法都是属于有监督机器学习方法,这章和前面不同,介绍无监督学习算法,也就是聚类算法。在无监...
    飘涯阅读 41,329评论 3 52
  • 天空突降大雨,狂奔回家收枕头。 收拾完再出门,意外发现,风景不错呢。 粉色的花瓣散落在地面,伴随着一片凋零的落叶,...
    浅浅的美好生活阅读 211评论 0 0
  • 1、 腊月瑟缩着脚步 伴着无眠的寒星 梦蜷缩在儿时的雪洞 2、 烛光斑斓在深雪的迷宫 点亮张张稚嫩的面容 欢笑穿透...
    童心_8c86阅读 1,447评论 26 56