论文原文
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《非详尽的、可重叠的聚类》论文算法的解读(学习笔记)相关推荐

  1. 非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)

    非注解的处理器映射器和适配器 非注解的处理器映射器 之前的入门Demo中使用的就是非注解的处理器映射器: org.springframework.web.servlet.handler.BeanNam ...

  2. 数据挖掘算法之时间序列算法(平稳时间序列模型,AR(p),MA(q),(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)学习笔记梳理

    时间序列算法 一.时间序列的预处理 二.平稳时间序列模型 (一).自回归模型AR( p ) (二).移动平均模型MA(q) (三).自回归移动平均模型ARMA(p,q) 三.非平稳时间序列模型 四.确 ...

  3. 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强

    论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...

  4. NILM(非侵入式电力负荷监测)学习笔记 —— 使用NILMTK Toolkit,REDD数据集,CO和FHMM两种算法

    (本文最后,提供整个工程下载) 准备工作 本篇的内容都是基于我前两篇的环境,和数据集进行的. NILM(非侵入式电力负荷监测)学习笔记 -- 准备工作(一)配置环境NILMTK Toolkit NIL ...

  5. R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

    R语言层次聚类(hierarchical clustering):数据缩放.PCA聚类结果可视化.fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性 ...

  6. 用dblink能修改_【学习笔记】通过修改基表(link$)让非public dblink变为public

    天萃荷净 开发DBA反映创建好的Oracle DBLINK由于应用需要,要将其变为public dblink.由于忘记dblink的目标段的密码,使用修改基表(link$)让非public dblin ...

  7. React学习:双向数据绑定、约束性和非约束性组件-学习笔记

    文章目录 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表单 约束性和非约束性组件(受限/非受限) 双向数据绑定小例子 React学习:双向数据绑定.约束性和非约束性组件-学习笔记 表 ...

  8. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 深度学习笔记(38) 非极大值抑制

    深度学习笔记(38) 非极大值抑制 1. 对象多次检测问题 2. 非极大值抑制 3. 独立性 1. 对象多次检测问题 到目前为止学到的对象检测中的一个问题是,算法可能对同一个对象做出多次检测 所以算法 ...

最新文章

  1. 【转】C#解析HTML
  2. java执行cmd命令,返回结果中文乱码问题解决
  3. java判断用户是否在某一个区域登录_Java实现QQ登录和微博第三方登录
  4. python读取文件模式_python如何读取文件的数据
  5. 通过一个简单的例子学习Angular Injection Token工作原理
  6. poj 1274 The Perfect Stall
  7. 模板 - 数论 - (新)
  8. OpenCV成长之路:直线、轮廓的提取与描述
  9. IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
  10. string转换函数以及hnu暑期实训部分和A+B的例题
  11. Redis之 介绍和安装
  12. 声纹技术:让智能语音助手真正“认得”自己
  13. 逆水寒服务器维护多长时间,逆水寒11月8日更新维护 更新时间内容介绍
  14. 伤病缠身仍愿竭力而战 澳网一别穆雷何时再见?
  15. 【ExcelPlanet】SUMPRODUCT函数用法:单条件、多条件、模糊条件求和与计数
  16. ON DUPLICATE key update的介绍与使用
  17. 使用Ansj实现分词
  18. 华为存储学习笔记-8
  19. oracle 051考试,OCP/OCA认证考试指南全册Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)练习与知识点...
  20. SAP入门 - 配置中文界面

热门文章

  1. FastBoot 刷机方法
  2. 狗狗的年龄的python编程_狗狗年龄和人怎么换算
  3. 手机虚拟机丨安装教程
  4. Apple Pay、支付宝、微信上演“三国杀”
  5. Centos7 入门
  6. 前端开发培训北京,JavaScript的常见用途和书写规范
  7. 德州仪器升降压变换器TPS55288,助力实现台式电脑USB PD传输
  8. xss-labs靶场实战全通关详细过程(xss靶场详解)
  9. 基于单片机的智能窗系统设计(#0479)
  10. 美国对H1B痛下黑手,加拿大数万科技岗公开抢人