数据挖掘之聚类


数据挖掘之聚类

聚类 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,数据驱动

cluster

intra-cluster 应该紧凑,inter-cluster应该更疏离。
  • 聚类的应用:

    • 客户划分:”大数据杀熟“。
    • 社区发现:发现社交网络中相似的用户。
    • 地震带绘制: 将同一个簇中的地震点看做地震带。

    • 图像分割 : 将图像上的像素点聚类成区域完成分割。

聚类与图像分割

  • 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 轴可能有完全不同的结果。

数据预处理1

数据预处理2


Evaluation of Cluster 聚类的评估
  • 基于聚类的评估指标

在这里插入图片描述

所有 聚类中心到类簇中其他点的平均距离 之和,当类簇形状为圆形(高斯分布)的时候能够有效评估聚类。

evaluation1
evaluation2

  • 轮廓系数 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,最小值可能取不到,但是轮廓系数是有可能为负的。如下图中红色圈中的数据点的轮廓系数为负。

轮廓系数

右图为每个数据点的轮廓系数图,y轴为数据点,x轴为轮廓系数取值,上面柱形图对应左下侧的类簇。

聚类算法之 K-Means

kmeans-1

kmeans算法的示意图

kmeans_2

kmeans_3

好处: 针对聚簇分离度高,圆形分布的数据能够较快的收敛。算法复杂度为O(t * K * n),其中 t 为迭代次数,K 为聚类个数,n 为样本点数量。

缺点:K值不好确定;可能会收敛到局部最优;对噪点敏感;不适用于非球形分布的数据。

kmeans_kinfluence

kmeans算法初始值K的选择对于算法的收敛结果有着重要影响,如上图所示,1中的聚类结果要优于2中的聚类结果

聚类算法之 Sequential Leader Cluster

将新来的数据点根据其到已有的聚类的距离分配到其中,若距离超过某个阈值,则单独分为一个新类别。而阈值需要就是该算法的参数,需要算法调用者根据实际数据自行选择。

sequential leader clustering


聚类算法之 高斯混合模型(Gaussian Mixture) 基于模型的聚类

GMM1

f (x) 的求解可以使用 期望最大化算法,即EM算法。

从Kmeans 谈起

GMM2

无法直接求解坐标,假定一对随机坐标,然后计算Z,再根据计算结果更新坐标。Z可以看成坐标的隐变量,这里主要就是为了引出隐变量的概念,以及通过迭代的方式求解目标的方法。

计算两个非均质硬币被抛起后朝上的概率。

GMM3

用频率替代概率,就是统计中的最大似然方法。分别抛两枚硬币若干次,记下实验结果,统计出两枚硬币朝上的频率即可

GMM4

与上面不同的是,这次不知道每组实验结果是属于A硬币还是B硬币。如何在这样的情况下求出两枚硬币朝上的概率呢 ? EM 算法。
  1. 假设甲乙两枚硬币朝上的概率,是一个0到1的随机值,这里选0.6和0.5。

  2. 针对每组实验结果,使用贝叶斯概率公式计算这种数据属于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

  3. 根据计算出的条件概率将实验结果分到两枚硬币上。

  4. 使用 最大似然估计重新计算 A, B 朝上的概率,然后重复上述过程。

    GMM5

    注意这里假定所有的mixture components 都是一维高斯分布,且西格玛相同,需要估计的参数仅有下面的两个,读者可以尝试从直观的角度思考三个公式所表达的意思。

聚类算法之 基于密度的聚类算法
DBSCAN

DBSCAN介绍

核心点:处于密度较高位置的点;边界点:能够从核心点触发在某种密度下到达的点;噪点:不属于上述两种的数据点。A cluster is defined as the maximal set of density connected points. Start from a randomly selected unseen point P. If P is a core point, build a cluster by gradually adding all points that are density reachable to the current point set. Noise points are discarded (unlabelled).

DBSCAN_reachability

如上图所示为从核心点扩展边缘点的三种情况。下图为DBSCAN在不同数据集上的聚类效果。

DBSCAN结果


层次聚类 Hierarchical Clustering

层次聚类

层次聚类的结果可以根据需要在不同的层次裁剪结果,得到不同的聚类个数。

自顶向上的层次聚类

1将每个数据分为一簇,2计算每两个簇之间的距离,3合并距离最近的两个簇,重复2-3直到只剩下一个簇。如何计算两个簇之间的距离,最近的两个数据点的距离 ? 最远的两个数据点的距离 ?

参考文献

[1] https://www.bilibili.com/video/BV154411Q7mG?p=36

[2] https://www.xuetangx.com/course/THU08091000385/5882582

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值