Non-exhaustive, Overlapping Clustering《非详尽的、可重叠的聚类》论文算法的解读(学习笔记)

论文原文
https://pubmed.ncbi.nlm.nih.gov/30080141/
论文目的
实现类簇的可重叠性与离群点数量的控制。
目标函数
传统K-Means算法的目标函数为:
在这里插入图片描述
众所周知,传统的K-Means算法问题的求解是一个NP hard问题,但这篇文章提出的算法可以通过对偶半正定性(SDP)实现全局最优解的求解。目标函数如下:
在这里插入图片描述
写成矩阵的形式表述如下:
在这里插入图片描述
参数定义为
(1)α:控制可重叠的样本数,αn为重叠数量;
(2)β:控制离群点数,最多只能有βn个离群点;
(3)U=[uij]n×k(话说CSDN为啥不加个下标的功能啊,o(╥﹏╥)o),uij只取0或1两个值,但样本xi属于簇j时,uij为1,否则为0;
(4)Ue表示某个样本属于多少个簇,U是一个n×k的矩阵,e是一个k×1的向量,相乘之后正好是n×1;
(5)K表示将高维数据映射到低维的核函数;
(6)W表示核函数对应的权重。
算法过程如下
在这里插入图片描述
简单来说就是:
(1)初始化各项参数和聚类中心;
(2)计算各个点到初始聚类中心之间的距离,并且将距离进行排序;
(3)将每个点分配给距离它最近的聚类中心:要确保n-βn的点分配到某些簇,将前n-βn进行分配;然后再取 βn+αn 个点分配到距离它最近的簇。
参数α和β的选择
(1)β:首先通过最见到的K-Means对所有样本进行聚类,得到每个点到簇中心的距离,计算所有距离的均值μ和方差σ,根据统计学3σ原则(对于正态分布的随机误差,落在 ±3σ以外的概率只有 0.27%),如果一个样本到簇中心的距离大于μ+3σ,那么我们认为它是离群点,据此可以估计离群点数量,由此得到β值。
(2)α:α的选择依数据集的不同而有所改变,但是通常α要远远小于簇数-1,它通常取决于我们对重叠数的期望。当簇数较小时,α=0.1,α=1或者α=(根号k)-1都是可行的。如果α大于等于100,可以取α=1/(√k-1), α=1/(log k-1), α=1, α=log k-1, and α=√k-1。
对偶半正定
将目标函数转化为:
请添加图片描述
对原始限制条件放宽后得到目标函数为:
在这里插入图片描述
参数初始化
后续补充
Python代码
https://github.com/YiFraternity/OS-K-Means/tree/master/code
但是要把源文件中的__main__函数改一改,它里面试验的是iris数据集,如果导入的是其他形式的数据集可能会出错,可以直接把自己的数据集放在__main__函数里面直接调用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值