博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聚类算法数据挖掘(五):聚类
阅读量:5164 次
发布时间:2019-06-13

本文共 3168 字,大约阅读时间需要 10 分钟。

首先声明,我是一个菜鸟。一下文章中涌现技术误导情况盖不负责

    聚类是数据挖掘描述任务的一个主要组成部分。数据挖掘任务包括描述性任务预测性任务两种。描述性任务包括聚类、关联分析、序列、异常检测等,预测性任务包括回归和分类

    聚类:将数据对象分别为若干类,同一类的对象具有较高的相似度,不同类的对象相似度较低。从这个简略的描述中,可以看出聚类的关键是如何度量对象间的相似性。较为罕见的用于度量对象的相似度的方法有距离密度等。

    

1 基于距离度量对象相似性的思惟

    凡满足距离定义四个条件(唯一性、非负性、对称性和三角不等式)的函数都可以作为距离公式。经常使用的有欧氏距离(Euclid)、曼哈顿距离(Manhattan)、契比雪夫距离(Chebyshev)、马哈拉诺比斯距离(Mahalanobis)等。

    基于距离的两类经典聚类算法:分别方法(Partitioning Method)和层次聚类方法(Hierarchical Method)。

    

1.1 分别方法

    该方法的典范代表有k-Meansk-Medoids

    k-Means算法的核心思惟是把n个数据对象分别为k个类(这k各种事前未知),使得分别后每个类中的数据点到该类中央的距离最小。即使J最小。

    聚类和算法

    k-means算法流程:

输入:分类个数k,包括n个数据对象的数据集输出:k个聚类(1)从n个数据对象中任意选取k个对象作为初始的聚类中央;(2)分别盘算每个对象到各个聚类中央的距离,把对象分配到距离最近的聚类中;(3)全部对象分配完成后,重新盘算k个聚类的中央;(4)与前一次盘算得到的k个聚类中央比较(检测是否收敛),如果聚类中央发生变化(未收敛),转(2),否则聚类结束。

    k-means算法本质上是实现了聚类的基本思惟:类内数据点越近越好,类间数据点越远越好。

    上述算法大多数情况下会终究求得收敛的最优聚类结果,但也有可能陷入局部最优解。还存在一个问题,上述算法有一个前提,就是指定k的值,即聚类个数。而在事实应用中k值是无法事前给定的,因此k-means算法的另一个重点就是要找出一个适合的k,使平方误差数值达到最小。一般的做法是尝试若干个k,选择使平方误差(距离)最小的k值。

    k-Means算法第(3)步中聚类中央是盘算以后每个cluster的均值作为新的聚类中央,这恰是k-Means算法得名的原因。盘算公式为

    聚类和算法

    第(4)步中检测是否收敛的标准并非经常使用标准,因为要达到完全收敛可能并不事实。因此,较为罕见的说法为,直到迭代了最大的步数或者前后的 J 的值相差小于一个阈值为止。

    在k-medoids算法中,我们将从以后 cluster 中选取这样一个点——它到其他全部(以后 cluster 中的)点的距离之和最小——作为中央点。也就是说,k-Means算法选择的中央点未必在n个数据点中,而可所以连续空间的任意值;k-Medoids则只能在给样本给定的那些点里头选。也恰是因为这样,k-Means对噪声和孤立点数据非常敏感,而k-Medoids则可以有效地消除这种影响。

    每日一道理
毅力,是千里大堤一沙一石的凝聚,一点点地累积,才有前不见头后不见尾的壮丽;毅力,是春蚕吐丝一缕一缕的环绕,一丝丝地坚持,才有破茧而出重见光明的辉煌; 毅力,是远航的船的帆,有了帆,船才可以到达成功的彼岸。

    当结果簇是密集的,而簇与簇之间区别显著时,k-Means算法的效果较好。对于大规模数据集,该算法是绝对可扩展的,并且效率较高。仅就k-Means和k-Medoids两者而言,在第(3)步中,k-Means具有O(n)的时间复杂度,而k-Medoids的时间复杂度是O(n^2)。

    k-Means的不足:首先,k-Means只有在簇数据点的平均值有定义的情况下才能应用,这可能不适用于某些应用,如离散数据。对k-Means改进后的k-模算法用取代簇的平均值作为相似性度量,用基于频率的方法来修改聚类的模。k-模算法可用于解决离散问题。k-Means和k-模相结合用来处理有数值类型和分类类型属性的数据,这就是k-原型算法。其次,k-Means和k-Medoids不适用于发现非球状的簇。原因是这类算法应用距离来描述数据间的相似性,但是对于非球状数据集,只用距离来描述是不够的。对于这种情况,要采取密度作为相似性度量。(参见2)

    

1.2 层次聚类方法

    层次聚类方法(Hierarchical Method)按数据分层建立簇,形成一棵以簇为节点的树。该方法的典范代表有凝聚法Agglomerative)和分裂法Divisive)。若自底向上进行层次聚集,则称为凝聚的层次聚类;若自顶向下进行层次分解,则称为分裂法的层次聚类。

    凝聚的层次聚类首先将每个对象作为一个簇,然后逐渐合并这些簇形成较大的簇,直到全部对象都在同一个簇中,或者满足某个终止条件。分裂与之相反,它首先将全部的对象置于一个簇中,然后逐渐分别为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件,例如达到了某个希望的簇数目,或两个最近的簇之间的距离超过了必定的阈值。

    层次方法可以在不同粒度水平上对数据进行探测,而且容易实现相似度量或距离度量。但是,单纯的层次聚类算法终止条件暧昧,而且执行合并或分裂簇的操作不可修正,这可能致使聚类结果品质很低。另外,由于须要检查和预算大量对象或簇才能决定簇的合并或分裂,所以其可扩展性较差。因此,事实应用中常把层次方法与其他方法结合应用,形成多阶段聚类,改善聚类品质。这类方法包括BIRCH、CURE、ROCK、Chameleon等。

    

2 基于密度度量对象相似性的思惟

    对于非球状的聚类问题可采取基于密度的聚类算法。基于密度的聚类算法(Density-based Method)从数据对象的分布密度触发,把密度足够大的区域连接起来,从而可以发现任意外形的簇,而且此类算法还能有效去除噪声。罕见的基于密度的算法有DBSCAN、OPTICS、DENCLUE等。

    

3 其他方法

    

3.1 视觉聚类算法

    视觉聚类算法是基于尺度空间理论建立的。其基本思惟是:将数据集看作图像,将数据建模问题看作认知问题,通过模拟认知心理学的格式塔原理与生物视觉原理解决问题。格式塔原理(Gestalt)就是物体的团体是由局部特征组织在一起的认知原则,包括相似率、连续率、闭合率、近邻率、对称率。将这五者作为聚类的基本原则,模拟人的眼睛由近到远视察风物的进程设盘算法进行聚类。随着由近到远,视察尺度由小变大,所看到的风物层次会逐渐变化,这就是一个聚类的进程。

    视觉聚类的关键是最好聚类个数的选择。随着尺度σ由小变大,聚类个数逐渐变少,但会涌现尺度σ在很大范围内变化而聚类个数稳定稳定的情况,这意味着这个聚类个数存活周期最长,它就是最好聚类个数。这解决了聚类有效性问题。

    

    参考资料:

    [1]谎话数据挖掘

    [2]聚类算法研讨.孙吉贵等.Journal of Software

    [3]座谈 Clustering (2): k-medoids.http://blog.pluskid.org/?p=40

    [4]数据仓库工具箱:维度建模的完全指南

文章结束给大家分享下程序员的一些笑话语录: 腾讯总舵主马化腾,有人曾经戏称如果在Z国选举总统,马化腾一定当选,因为只要QQ来一个弹窗”投马总,送Q币”即可。

--------------------------------- 原创文章 By

聚类和算法
---------------------------------

转载于:https://www.cnblogs.com/jiangu66/archive/2013/05/26/3100647.html

你可能感兴趣的文章
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>