零碎知识
- 很多数据分析技术,如回归和PCA,都具有O(m2)或更高的时间或空间复杂度(m为对象个数)
- 不同类型的聚类:层次(嵌套)/划分(非嵌套)聚类,互斥/重叠/模糊聚类,完全/部分聚类。
层次聚类:允许簇有子簇 |
划分聚类:得到不重叠子簇 |
互斥聚类:各个簇互斥 |
重叠聚类:如既是学生又是员工,同属于多个簇 |
模糊聚类:每个对象用0和1之间的隶属权值属于每个簇【即 簇被视为模糊集——模糊集中,每个对象以0和1之间的权值属于任一集合】 |
完全聚类:每个对象指派到一个簇 |
部分聚类:某些对象可以不属于明确定义的类 |
- 基于原型的聚类:簇是对象的集合,其中任何对象离定义该簇的原型 比离定义其他簇的原型更近。如K-均值,以质心作为簇原型。
- 基于密度的聚类:簇是对象的稠密区域,它们被低密度区域包围。
- 基于图的聚类:
划分方法:K均值
- K均值聚类:基于原型的、划分的聚类技术。它试图发现用户指定个数(K)的簇。
- 指派点到最近的质心:对于欧氏空间中的点——欧几里得距离度量;文档——余弦相似性、Jaccard度量(常用于衡量两个集合相似度)。
- 质心和目标函数:误差平方和(Sum of Squared Error, SSE)。通常,满足簇的SSE最小的质心是均值。
- K均值是非常一般的聚类算法,可用于许多类型的数据,如文档和时间序列。
- 时空复杂性均适度:时间需求:基本与数据点的个数线性相关,需要O(I×K×m×n),I为收敛所需迭代次数,m为点数,n为属性数。空间需求:只需存放数据点与质心,需要O((m+K)n)。
- 优缺点
优点 | 缺点 |
可用于各种数据类型 | 并不适合所有数据类型(如,无法处理非球形簇、不同尺寸和不同密度的簇) |
不太受初始化问题的影响 | 仅限于具有中心(质心)概念的数据 |
不适合包含离群点的数据——但可提前检测离群点并删除 |
层次方法:凝聚层次聚类
- 凝聚的层次聚类:①开始,每个点作为一个单点簇;②然后,重复地合并两个最靠近的簇,直到产生单个的、包含所有点的簇。
- 优缺点
优点 | 缺点 |
某些研究表明,此类算法能够产生高质量聚类 | 计算量和存储需求昂贵 |
缺乏全局目标函数(趋向于作出好的局部决策) | |
处理不同大小簇的能力受限 |
基于密度:DBSCAN
- DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法):与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
- 产生划分聚类(得到不重叠子簇),簇的个数由算法自动确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生 完全聚类(完全聚类:每个对象指派到一个簇)。
- 优缺点
优点 | 缺点 |
相对抗噪声 | 当簇的密度变化太大 or 高维数据,开销较大 |
能够处理任意形状和大小的簇→能够发现使用K均值不能发现的许多簇 |
- K均值与DBSCAN聚类的比较
K均值 | DBSCAN | |
簇类型 | 基于原型(如质心) | 基于密度 |
对象 | 一般聚类所有对象 | 丢弃被识别为噪声的对象,不太受噪声和离群点影响 |
簇形状大小 | × | √(但簇密度差异很大时,两种算法性能都很差) |
稀疏高维数据,如文档 | √ | × |
重叠簇 | √(能发现有重叠的簇) | ×(会合并有重叠的簇) |
时间复杂度 | O(m) | O(m2) |
每次结果 | ×(不同,多次运行结果不同,因为随机化初始质心) | √ (相同) |
自定义簇数 | 自定义 | 自动确定,但需指定Eps(邻域半径)和MinPts(最少点数) |
模糊聚类
- 模糊集合论:允许对象以0和1之间的某个隶属度属于一个集合
- 模糊逻辑:允许一个陈述以0和1之间的确定度为真
- K均值的模糊版本:模糊c均值【即FCM (fuzzy c-means) 】