本次目标
密度聚类
DBSCAN算法
噪声:特征还包括不能被其他样本密度可达
课堂问答
问: 每个p都必须是核心对象么?
答:是的,如果p1 -> p2 -> p3->...->pn -> q,所有p都是核心对象,最后一个是不是不清楚。
问:核心对象怎么确定?
答:给定ε,给定一个m值,只要样本周边的样本个数>M值,这个样本是核心对象。或者说一个样本周边有足够样本,就是核心对象,否则不是。
1.确定核心对象
- 确定密度可达的样本集合,即在ε范围,确定集合
- UNION - FIND - SET
即并查集,这个是用于实现集合交的方式简单,速度较快的方法
从而实现聚类
课堂问答
问:如果密度可达,就是密度相连的吧?
答:是的
问:一般的阈值如何确定?
答:需要调参
问:m和ε也是调参么?
答:是的,是调参
如果存在某个核心对象,能够被两个簇的中心样本密度可达,这两个簇,往往也能连在一起。即可以合并簇
问:感觉半径r的设定,对结果影响很大?
答:是的
问:密度相连的两个点,路径不唯一?
答:是的
问:epoch能否再讲解一遍?
答:线性回归中的概念。如果对x1, x2, x3, ..., xn, 我们总是会用某种方式,下降其维度,如果把所有样本遍历一遍,下降完了,这个叫做一个epoch。但我们往往会取若干个样本,其个数,远远小于总样本个数,这称之为mini-batch。如1000个样本,我们的batch选择50(个样本),则完成20个mini-batch,对1000个样本完成一次epoch。
问:1->2->3->4,1和4超出半径r,还是一个簇么?
答:是一个簇,因为都是密度可达的。
问:这个算法对数据分布有要求么?
答:没有
问:1和3是核心对象,1->2, 3->2,123是一个簇么?
答:是不确定的。因为无法判断123一定是一个簇,共同指向一个东西很难说,但反过来,1->2, 1->3,则123是一个簇。
问:如果123不是一个簇,2归谁呢?
答:1与3不一定如何,2归1或2归3都有道理。
问:在DBSCAN中,指向不是相互的么?即1->2,等同于2->1么?
答:不是的。不确定的。
问:并查集是什么?
答:并查集是在做基本数据结构,总会要用的一个东西。
比如往往做最小生成树,如Kruskal算法
附图:
问:异常值怎么判断?
答:如果一个样本不是核心对象,并且没有被其他核心对象密度可达,即可以判定为异常值。
异常值被参数半径:r与邻域样本数量参数影响。
如:
有可能需要做后处理。
问:如果2是核心对象,那123是一个簇;如果2不是核心对象,是不是可以分为两簇?
答:有可能,其实是待定的。可以通过双向并查集尝试。
问:密度的定义是否可以处理多维数据?
答:可以。我们只是定义了ε邻域,并没有定义什么是ε邻域。
问:m值就是最小的簇元素的个数么?
答:如果周边的样本大于m个,则就是核心对象。但是理论上最小的簇元素的个数就是m个
密度最大值聚类
课堂问答
问:高局部密度距离的两个密度可以相等么?
答:
问:都小是不是表示边界?
答:都小,是噪声的噪声。其实ρ很小,δ很大的时候,一般是在边界上。
举例说明
通过密度聚类,一定程度上可以看出簇的边在什么位置,会给出是否属于该簇的权值。通过EM算法,能够算出到底一个样本,(x,y)属于这个簇的概率
课堂问答
问:多大算大,多大算小?
答:这个需要调参,如下图
左下角聚类明显不合理,因为m值太小,所以需要将ε调的小一些
或者保持ε值,但需要将m值调大
ε比较大,可以将更多的样本纳入到簇里面
反之ε比较小,m值又比较小,有些样本纳入不到簇里面
如果发现噪声较多,可以将ε与m值同时调大,则噪声判断就变得严格了。
相似度传递
通过矩阵计算,得出的两个结论
通过吸引程度与依赖程度,二者之间在一起形成的相似度
推荐使用所有样本相似度的中位数(1.0),作为初值,进行迭代。
但是实践发现使用中位数不一定好,如果用若干倍可能好一些。
相似度越大,说明越想做聚类中心
相似度越小,说明越不想做聚类中心
该算法的时间复杂度太高,为n2,不见得合适。
数据只能是中小规模
课堂问答
问:怎么知道参数调好了呢?
答:唯一的方案,就是噪声验证。
问:为什么用欧式距离相反数?
答:应都是有道理。用欧式距离倒数也可以
谱聚类
如果一个矩阵是对称阵,并且是实数组成的,那么它的特征值一定是实数。
如果某个算法是基于谱的,往往就是求特征值或者特征向量。
谱聚类,即通过对样本数据的拉普拉斯矩阵的特征向量进行聚类
拉普拉斯矩阵(Lnxn) = 相似度的对角阵(D) - 相似度的对称阵(W)
是从小到大排
L = 特征向量x特征值
如图,对K维数据做聚类,可以选择K-Means算法,喂给K维的K均值聚类,则最终结果就是我们想要的谱聚类的结果。
课堂问答
问:DW是什么?
答:D是我们的度矩阵,W是我们的权值矩阵,任何两个样本求相似度
问:不是从小到大么?
答:是从小到大排列
问:奇异值分解?
答:确实非常像奇异值分解,也像PCA(主成分分析)。
如图,可以说明如何从n维降维到k维
问:前k大,这个k个维度选多少合适呢?
答:如果选择性别,则分为男性,女性,未知,三个即可。
如果选择年龄段,就麻烦很多。
在谱聚类中有从小到大排列的n个样本,记为:
λ1,λ2,...,λn
则δi = λi+1 - λi,则能算出:
δ1,δ2, ...,δn-1
这n个值,谁大,我们就认为其后者-前者差值最大,大的位置上,前面的i个应该是一个部分,后面则是另外一部分。则将k取i的值即可
问:W-D的理论基础?
答:谱聚类应该是切割图推导的一个结论。
如图,对权值进行簇的划分,需要使得样本被切断,且两个簇的样本个数不要差别太大。
左边记为A,右边记为A',则左边簇的边记为i,右边簇的边记为j。
对于Wij/|A| + Wij/|A'|,使得分割结果不会过分差异过大。
如此继续推,得到L = D - W
可以继续推论:
D-1·L = D-1 (D - W) = I - D-1·W
此时是从小到大排
问:K_means和谱聚类要给k值,DBSCAN和密度聚类不需要是么?
答:是的
额外讲解
切割图是了解谱聚类的一把钥匙。
这三个拉普拉斯矩阵,使用最多的是随机游走拉普拉斯矩阵。
下图是通过谱聚类实现的,但是K-Means算法搞不定
说明当nxn更改为nxk之后,丢掉一部分样本,降维之后效果反而还更好了。从这个意义理解,PCA(主成分分析)干的是这个事情,谱聚类也是干的这个事情。
课堂问答
问:在拉普拉斯矩阵的特征向量上做k-means,那么有没有在拉普拉斯矩阵的特征值上做密度聚类的情况呢?
答:本质上做k-均值聚类,本来求的拉普拉斯矩阵,应该求在整数域上的解,那才叫做聚类。因为一个样本,属于且只属于一个类别。我们先把整数域上的结论,放在实数域的情况中去做,然后将它强制转换为整数域上去做。
建议先应用,再去推理论
往往是利用实际数据,求相似度,然后将标签传递下去。