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__函数里面直接调用。
Non-exhaustive, Overlapping Clustering《非详尽的、可重叠的聚类》论文算法的解读(学习笔记)相关推荐
- 非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)
非注解的处理器映射器和适配器 非注解的处理器映射器 之前的入门Demo中使用的就是非注解的处理器映射器: org.springframework.web.servlet.handler.BeanNam ...
- 数据挖掘算法之时间序列算法(平稳时间序列模型,AR(p),MA(q),(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)学习笔记梳理
时间序列算法 一.时间序列的预处理 二.平稳时间序列模型 (一).自回归模型AR( p ) (二).移动平均模型MA(q) (三).自回归移动平均模型ARMA(p,q) 三.非平稳时间序列模型 四.确 ...
- 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强
论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...
- NILM(非侵入式电力负荷监测)学习笔记 —— 使用NILMTK Toolkit,REDD数据集,CO和FHMM两种算法
(本文最后,提供整个工程下载) 准备工作 本篇的内容都是基于我前两篇的环境,和数据集进行的. NILM(非侵入式电力负荷监测)学习笔记 -- 准备工作(一)配置环境NILMTK Toolkit NIL ...
- R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性
R语言层次聚类(hierarchical clustering):数据缩放.PCA聚类结果可视化.fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性 ...
- 用dblink能修改_【学习笔记】通过修改基表(link$)让非public dblink变为public
天萃荷净 开发DBA反映创建好的Oracle DBLINK由于应用需要,要将其变为public dblink.由于忘记dblink的目标段的密码,使用修改基表(link$)让非public dblin ...
- React学习:双向数据绑定、约束性和非约束性组件-学习笔记
文章目录 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表单 约束性和非约束性组件(受限/非受限) 双向数据绑定小例子 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表 ...
- [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 深度学习笔记(38) 非极大值抑制
深度学习笔记(38) 非极大值抑制 1. 对象多次检测问题 2. 非极大值抑制 3. 独立性 1. 对象多次检测问题 到目前为止学到的对象检测中的一个问题是,算法可能对同一个对象做出多次检测 所以算法 ...
最新文章
- 【转】C#解析HTML
- java执行cmd命令,返回结果中文乱码问题解决
- java判断用户是否在某一个区域登录_Java实现QQ登录和微博第三方登录
- python读取文件模式_python如何读取文件的数据
- 通过一个简单的例子学习Angular Injection Token工作原理
- poj 1274 The Perfect Stall
- 模板 - 数论 - (新)
- OpenCV成长之路:直线、轮廓的提取与描述
- IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
- string转换函数以及hnu暑期实训部分和A+B的例题
- Redis之 介绍和安装
- 声纹技术:让智能语音助手真正“认得”自己
- 逆水寒服务器维护多长时间,逆水寒11月8日更新维护 更新时间内容介绍
- 伤病缠身仍愿竭力而战 澳网一别穆雷何时再见?
- 【ExcelPlanet】SUMPRODUCT函数用法:单条件、多条件、模糊条件求和与计数
- ON DUPLICATE key update的介绍与使用
- 使用Ansj实现分词
- 华为存储学习笔记-8
- oracle 051考试,OCP/OCA认证考试指南全册Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)练习与知识点...
- SAP入门 - 配置中文界面