620 likes | 989 Views
聚类. Applications Hierarchical Clustering k -Means Algorithms CURE Algorithm. http://infolab.stanford.edu/~ullman/mining/2009/index.html. 给定大量的数据,需要理解它们的结构. 聚类. 给定一个点的集合 , 已知点之间的距离 , 把这些点分为若干个类别(子集) , 在某种意义上,一个类别之间的点的距离尽可能的接近. Example. x xx x x x x x x x x x x
E N D
聚类 Applications Hierarchical Clustering k -Means Algorithms CURE Algorithm
聚类 • 给定一个点的集合, 已知点之间的距离,把这些点分为若干个类别(子集), 在某种意义上,一个类别之间的点的距离尽可能的接近.
Example x xx x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Problems With Clustering • 在二维空间聚类看起来较为简单. • 对少量数据聚类也似乎较为简单. • And in most cases, looks are not deceiving.
维度的讨论 • 很多应用不是二维的,而是 10 或者 10,000维. • 高维空间具有不同的性质:几乎所有的点之间的距离都相同. • 无法聚类
Example: Clustering CD’s (Collaborative Filtering) • Intuitively: 音乐可以分为不同的类别,用户只喜欢几个类别. • 类别是什么? • 用购买CD的用户来表示一个CD. • 相似的CD拥有相似的用户购买群体,反过来亦然.
The Space of CD’s • 设想一个空间,一个维度对应一个购买者. • 维度上的值只能取 0 或 1 . • 一个 CD’ 表示为 (x1, x2,…, xk), where xi = 1 当且仅当i th顾客购买了这个 CD. • Compare with boolean matrix: rows = customers; cols. = CD’s. 用户空间
Space of CD’s – (2) • 对于 Amazon, 维度是数以千万计. • An alternative: 用 minhashing/LSH 可以得到“close” CD’s 之间的 Jaccard 相似性. • 1 减去 Jaccard similarity 可以定义为CD之间的距离.
Example: Clustering Documents • 用矢量(x1, x2,…, xk)表示一个文档,其中xi = 1 当且仅当i th词出现在文档里. • 不限制词的集合. • 具有相同的词的集合可能是同一个主题.
Aside: Cosine, Jaccard, and Euclidean Distances • 表示文件的的方法,词或者shingle: • 如果把文件表示成一个向量: 用余弦距离测量文件之间的距离. • 如果把文件表示成一个shingle的集合: Jaccard距离测量文件之间的距离 • 表示成点: 用欧几里得距离测量点之间的距离.
聚类的方法 • 层次法Hierarchical (Agglomerative): • 从下往上 • 一开始,每个点本身就是一个类. • 反复把两个相近的类别汇聚成一个类别. • 从上往下 • 从一个类开始分裂 • 点分配Point Assignment: • 保持类别的集合. • 把点放入最近的类别.
层次聚类 • 关键操作:反复合并距离最近的类别 • 3个问题: • 如何表示一个超过一个点的类别? • 如何决定最近的类别? • 什么时候停止聚类?
Hierarchical Clustering – (2) • Key problem: 在建立类别的时候, 如何表示每一个类别的位置, 如何测量一对类别的距离? • Euclidean case: • 用每个类别的中心表示该类的位置:centroid= 类中的点的平均值. • 用类的中心点之间的距离作为类之间的距离.
Example x (1.5,1.5) x (4.7,1.3) x (1,1) x (4.5,0.5)
Non-Euclidean 如何表示一个类? • Non-Euclidean只有点本身. • I.e., 不存在两个点的平均位置. • 用clustroid表示 • clustroid = 在类里面距离其它点最近的点. • 计算类别之间的距离的时候,把clustroid 看成是欧式空间的中心点.
什么叫距离其他点最近的点 • 可能的含义: • Smallest maximum distance to the other points. • Smallest average distance to other points. • Smallest sum of squares of distances to other points. • Etc., etc.
Example clustroid 1 2 6 4 3 clustroid 5 intercluster distance
如何定义类之间的距离 • 两个类别中任意两个点之间的距离(这两个点分属两个类别) • 基于类的“黏度”定义类别之间的距离(黏度,如类别中的点与类中心点的最大距离) • 合并的类别:如果两个类别合并后,产生的类别的黏度最大,则应该合并这两个类
Cohesion具体定义 • 方法1: 合并后类的直径= 类里面最远的两个点之间的距离. • 方法2:合并后类里面点之间的平均距离. • 方法3:居于密度的方法 • 用类里面的点的数目除以合并后类的直径或者平均距离 • 或者用点数的平方除以合并后类的直径或者平均距离
层次聚类的实现 • 最简单的实现方法 • 对所有的类别两两比较,然后合并,复杂度(o(N^3))。 • 使用优先级队列,优化上述想法的实现细节,能够把复杂度减少到(o(N^2log(N)) • 对于无法装入内存的实际数据,还是太大
k – Means Algorithm(s) • 假设点之间的距离是Euclidean距离. • 假设类的数目为k. • 初始化类别:每个类别首先选择一个点. • Example: 先随机选一个点,从剩下的点中选择k-1个距离最远的点.
Populating Clusters • 对于每一个点, 把它归类到距离中心点最近的类别中. • 所有的点都分完以后,重新计算中心点 • 按照新的中心点,重新分配所有的点 • 有时候,点的类别会发生变化. • 重复2和3,直到收敛 • 收敛的定义:中心点不再变化,点不在类之间移动。
Best value of k Average distance to centroid k 选择合适的k • 选择不同的, 观察平均距离的变化,随着k的增加,平均距离在减少. • 一开始,平均距离随着k迅速减少,随后逐渐平坦
Too few; many long distances to centroid. Example: Picking k x xx x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Just right; distances rather short. Example: Picking k x xx x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Too many; little improvement in average distance. Example: Picking k x xx x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
BFR Algorithm • BFR (Bradley-Fayyad-Reina) 是k –means的一个改进,用于处理大规模存储在硬盘上的数据. • 假设类以正态分布概率分布在欧式空间的中心点附近. • 不同维度的方差可能会有所不同. • 类是轴对齐的椭圆 • 对于每一个点,可以定量计算它属于某一个类别的概率
BFR – (2) • 一次读入可以装满内存的点. • 大多数以前载入的点用一些简单的统计值表示. • 初始化的时候,用某些合理的方法产生k个中心点. • 取k个随机点 • 取一个小的随机样本,最优聚类. • 取随机样本; 选一个随机点,然后选k – 1 个离该点最远的点.
三种类别 • 废弃集(The discard set): • 距离中心点足够近的点.可以仅存储概要信息 • 压缩集(The compression set): • 距离足够近的点,但是这些点又距离中心点较远. • 这些点仅存储概要信息.但是不能归入某个类别 • 保留集(The retained set) : isolated points.
废弃集和压缩集的概要信息 • 废弃集和压缩集表述为: • 点数目, N. • 和向量, 第ith元素是所有点在第ith维坐标的和. • 平方和向量: ith是点在第ith维坐标的坐标的平方和.
Comments • 两个N维向量和一个点数目N,2d + 1 个值表示任意多个点的集合. • d = 维度的数目. • 每一维的均值(中心点坐标)可以表示为 SUMi/N. • SUMi = ith component of SUM.
Comments – (2) • 维度i的方差: (SUMSQi /N ) – (SUMi /N )2 • 标准差只要对上述值开根. • 如果椭圆不是轴对齐的,则需要用d*d维的协方差矩阵表示统计信息,而不是d维统计信息了。 • 下面就可以开始聚类了。
处理读入内存的点 • 找到距离中心点足够近的点。 • 把这些点加入到废弃集 DS。 • 用主内存聚类算法对剩下点和以前遗留下来的孤立点进行聚类, • 有聚类的点集合就是压缩集合,剩余的点归类为孤立点集合.
Processing – (2) • 计算类的统计值. • Add N’s, SUM’s, SUMSQ’s. • 如果可能的话,合并Cs集合. • 如果是最后一轮,把所有的Cs集合和Rs点归类到最近的类别中.
A Few Details . . . • 如何判断一个点已经距离中心点足够近,这样就能把这个点归入相应的类别? • 如何判断是否应该把两个压缩集合并成一个压缩集?
How Close is Close Enough? • 如何判断一个点已经距离中心点足够近,这样就能把这个点归入相应的类别? • BFR 提供了两种方法: • Mahalanobis distance低于一个门限. • 属于最近的类别的概率最高.
Mahalanobis 距离 • 归一化的距离中心点的欧式距离. • 对于点 (x1,…,xk) 和 centroid (c1,…,ck): • 每一个维度归一化: yi = (xi -ci)/i • 取yi ’s 的平方和. • 开根.
Mahalanobis Distance – (2) • 如果类别是在d空间正态分布的,经过变换后,距离的标准差是 = d. • 68% 的点的 Mahalanobis distance < d. • 如果M.D. 小于某个门限,则把这个点归如该类别,例如, 2 倍的标准差.
是否合并两个 CS 子类别? • 计算如果合并以后的形成的类别的方差. • N, SUM, SUMSQ. • 如果方差小于某个值,合并. • 各种变型: 对不同的维度加权, 考虑密度因素.
The CURE Algorithm • BFR/k –means的问题: • 假设类别在每个维度上正态分布. • 轴是固定的,椭圆与轴有角度,不能工作. • CURE: • 假设欧式距离. • 类别(簇)可以有任何形状. • 用代表点的集合表示类
Example: Stanford Faculty Salaries h h h e e e h e e e h e e e e h e salary h h h h h h h age
两阶段 CURE • 第一个阶段:初始化 • 取能在内存装下的随机样本点. • 初始化类别 • 用层次法聚类:把最近的点聚到一个类别中. • 对于每一个类别,选择代表点集合 • 选择相互距离足够远的点 • 把这些点向中心方向移动一段距离,例如 20%.