高维聚类

维数灾难的表现

  • 在高维空间下,几乎所有的点对之间的距离都差不多相等

考虑一个d维欧式空间,假设在一个单位立方体内随机选择n个点。首先,如果d为1,那么久相当于在一个长度为1的线段上随机放置点,那么将会有两类点连续点(距离很近)和线段两端的点(距离很远),这些点的平均距离是1/3。

证明可以做如下变换,取数轴上的区间[0,h],两点的随机左边为a,b.
则a,b相互独立,都服从[0,h]上的均匀分布, 
分布函数为F(x)=0,x<0时,F(x)=x/h,0≤x≤h时,F(x)=1,x>h时. 
两点距离X=|a-b|=max(a,b)-min(a,b) 
EX=Emax(a,b)-Emin(a,b). 
max(a,b)的分布函数G(x)=[F(x)]^2,由此可求出Emax(a,b)=2h/3. 
min(a,b)的分布函数H(x)=1-[1-F(x)]^2,由此可求出Emin(a,b)=h/3. 
EX=h/3.

如果d非常大,那么根据欧式距离的公式,每个xi和xj都是0到1之间均匀选出的随机变量,所以两个向量之间的最大距离为sqrt(d),而且,几乎所有的距离都接近平均距离。

  • 几乎任意两个向量之间都是近似正交的

正交是根据向量之间的夹角来衡量的。假设在一个维数非常大的d维空间有三个点A,B,C,如果B处于原点,那么我们可以根据欧式空间的余弦公式计算。当d不断增长时,分母会随d线性增长,但是分子是随机值之和,有正有负,所有,分子的期望为0 。

BFR算法

它是k-均值算法的一个变形,其设计目的是为了在高维欧式空间中对数据聚类。它首先随机选择初始k个点,然后,数据文件中的点按组块方式读入。
假设约束:簇的形状必须以满足以质心为期望的正态分布。 簇的坐标必须和空间的坐标一致。
组块中点的处理方法

  • 首先,将所有充分接近某个簇质心的点加入该簇。那么高维空间的簇质心如何表示呢?该算法采用一种叫做N-SUM-SUMSQ的表示方法,该算法使得可以很简单的将新点的信息加入。

    N-SUM-SUMSQ
    其中,内存中存放的是每个组块足够少的点和表示K个簇的概要和其他信息,具体如下图:
    这里写图片描述
    那么内存中存的就是留存集中的点和废弃集和压缩集的概要信息,那么概要信息就是用N-SUM-SUMSQ来表示,具体如下:

 - N:所表示的点的个数
 - SUM:所有点在每一维的分量之和
 - SUMSQ:所有点在每一维的分量平方和

并做如下定义:

 - 质心的第i维坐标:SUMi/N
 -  第i维上的方差: SUMSQi/N - (SUMi/N)^2

这种表示法会使得加入点,合并簇十分简单

  • 对于那些并不充分接近任意簇质心的点,我们将它们同留存集中的带你一起进行聚类,这时可以使用任意基于内存的聚类算法。
  • 对尝试对新的点聚类得到的小簇和留存集进行合并。
  • 如果是输入的最后一个组块,对压缩集和留存集进行操作,可以合并也可以分配给最近的簇。

重要决策
如何确定某个新点p离k个簇中的一个足够近,这样将p加入才有意义

  • 方法一:将p加入某个簇,该簇不仅离p最近,而且不会在之后进行变化,也就是说一个点p加入一个簇,p始终离该簇的质心是最近的。
  • 方法二 如果p属于某个簇,那么我们可以计算它到该簇质心的概率。
    依据的事实:
 1. 每个簇都由正态分布的点构成
 2. 点的坐标是与空间的坐标一致的

这样一来,就允许我们通过马氏距离来计算。马氏距离本质上是点到质心的距离,并在每一维通过簇的标准差进行归一化。

参考书籍:《Mining of Massive Datasets》

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值