数据挖掘之聚类
聚类 OverView
数据挖掘的方法可以有以下的划分:
- Partitioning Methods (将一组数据划分为不同的聚类)
- K-Means
- Sequential Leader
- Model Based Methods
- Density Based Methods
- Hierarchical Methods (层次聚类)
What is cluster analysis ? 什么是聚类分析
- Finding groups of obejcts
- Object similar to each other are in the same group,相似的物体应被聚为一类。
- Object are different from those in other groups,不相似的物体应聚为不同类别。
- Unsupervised learning 无监督学习
- NO labels, 无标签
- data driven,数据驱动
-
聚类的应用:
- 客户划分:”大数据杀熟“。
- 社区发现:发现社交网络中相似的用户。
-
地震带绘制: 将同一个簇中的地震点看做地震带。
-
图像分割 : 将图像上的像素点聚类成区域完成分割。
- The Big Picture
-
聚类算法应当满足的条件
- Scalability
- Ability to deal with different types of attribute
- Ability to discover clusters with arbitrary shape,处理任意形状的聚类
- Minimum requirements for domain knowledge
- Ability to deal with noise and outliers,处理噪点和离群点
- Insensitivity to order of input records
- Incorporation of user-defined constains
- Interpretability and usability
-
Hints
- 不同的数据预处理方式对聚类效果有很大的影响,如归一化处理。结合具体的数据分析,单独归一化 y 轴和 x 轴可能有完全不同的结果。
Evaluation of Cluster 聚类的评估
- 基于聚类的评估指标
所有 聚类中心到类簇中其他点的平均距离 之和,当类簇形状为圆形(高斯分布)的时候能够有效评估聚类。
-
轮廓系数 Silhouette
对于每一个样本点 i 计算 a(i) 和 b(i),其中 a(i) 是该样本点到其所在的聚类中其他点的平均距离,b(i)为 该样本点到 其他聚类中所有点的平均距离的最小值,最后根据下式计算 S(i)。
-
A method of interpretation and validation of clusters of data.
-
A succinct graphical representation of how well each data point lies within its cluster compared to other clusters.
-
a(i): average dissimilarity of i with all other points in the same cluster.
-
b(i): the lowest average dissimilarity of i to other clusters.
-
S ( i ) = ( b ( i ) − a ( i ) ) / M a x ( b ( i ) , a ( i ) ) S(i) = ( b(i) - a(i) ) / Max (b(i), a(i)) S(i)=(b(i)−a(i))/Max(b(i),a(i))
轮廓系数的最大值为 1 , 最小值为 -1,最小值可能取不到,但是轮廓系数是有可能为负的。如下图中红色圈中的数据点的轮廓系数为负。
聚类算法之 K-Means
好处: 针对聚簇分离度高,圆形分布的数据能够较快的收敛。算法复杂度为O(t * K * n),其中 t 为迭代次数,K 为聚类个数,n 为样本点数量。
缺点:K值不好确定;可能会收敛到局部最优;对噪点敏感;不适用于非球形分布的数据。
聚类算法之 Sequential Leader Cluster
将新来的数据点根据其到已有的聚类的距离分配到其中,若距离超过某个阈值,则单独分为一个新类别。而阈值需要就是该算法的参数,需要算法调用者根据实际数据自行选择。
聚类算法之 高斯混合模型(Gaussian Mixture) 基于模型的聚类
f (x) 的求解可以使用 期望最大化算法,即EM算法。
从Kmeans 谈起
计算两个非均质硬币被抛起后朝上的概率。
-
假设甲乙两枚硬币朝上的概率,是一个0到1的随机值,这里选0.6和0.5。
-
针对每组实验结果,使用贝叶斯概率公式计算这种数据属于A, B的概率,即条件概率。举例来说,
P(A | B) = P(B | A) * P(A) / P(B)
,其中事件A为选择甲硬币的概率,假设甲乙硬币无明显区别,则P(A=甲) = P(A=乙) = 0.5
。事件B为10次抛硬币结果为5正5反,如第一组数据所示。而P(B|A)可以使用伯努利概率模型计算,为C(10, 5) * 0.6^5 * 0.5^5
。而P(B)可以由全概率公式计算,因为 B 有且只有被甲乙硬币抛出。则P(A=甲|B) = 0.2006581248 * 0.5 / (0.2006581248 * 0.5 + 0.24609375 * 0.5) = 0.44914892610093643
。 -
根据计算出的条件概率将实验结果分到两枚硬币上。
-
使用 最大似然估计重新计算 A, B 朝上的概率,然后重复上述过程。
注意这里假定所有的mixture components 都是一维高斯分布,且西格玛相同,需要估计的参数仅有下面的两个,读者可以尝试从直观的角度思考三个公式所表达的意思。
聚类算法之 基于密度的聚类算法
DBSCAN
层次聚类 Hierarchical Clustering
参考文献
[1] https://www.bilibili.com/video/BV154411Q7mG?p=36
[2] https://www.xuetangx.com/course/THU08091000385/5882582