CLIQUE 聚类算法以及Java实现+多线程
CLIQUE(Clustering In QUEst)是一种简单的基于网格的聚类方法,用于发现子空间中基于密度的簇。CLIQUE把每个维划分成不重叠的区间,从而把数据对象的整个嵌入空间划分成单元。它使用一个密度阈值识别稠密单元和稀疏单元。一个单元是稠密的,如果映射到它的对象数超过该密度阈值。
CLIQUE识别候选搜索空间的主要策略是使用稠密单元关于维度的单调性。这基于频繁模式和关联规则挖掘使用的先验性质。在子空间聚类的背景下,单调性陈述如下:
一个k-维(>1)单元c至少有I个点,仅当c的每个(k-1)-维投影(它是(k-1)-维单元)至少有1个点。考虑下图,其中嵌人数据空间包含3个维:age,salary,vacation. 例如,子空间age和salary中的一个二维单元包含l个点,仅当该单元在每个维(即分别在age和salary上的投影都至少包含l个点).
CLIQUE通过两个阶段进行聚类。在第一阶段,CLIQUE把d-维数据空间划分若干互不重叠的矩形单元,并且从中识别出稠密单元。CLIQUE在所有的子空间中发现稠密单元。为了做到这一点,CLIQUE把每个维都划分成区间,并识别至少包含l个点的区间,其中l是密度阈值。然后,CLIQUE迭代地连接子空间.CLIQUE检查中的点数是否满足密度阈值。当没有候选产生或候选都不稠密时,迭代终止。
在第二阶段中,CLIQUE使用每个子空间中的稠密单元来装配可能具有任意形状的簇。其思想是利用最小描述长度(MDL)原理,使用最大区域来覆盖连接的稠密单元,其中最大区域是一个超矩形,落人该区域中的每个单元都是稠密的,并且该区域在该子空间的任何维上都不能再扩展。一般地找出簇的最佳描述是NP一困难的。因此,CLIQUE采用了一种简单的贪心方法。它从一个任意稠密单元开始,找出覆盖该单元的最大区域,然后在尚未被覆盖的剩余的稠密单元上继续这一过程。当所有稠密单元都被覆盖时,贪心方法终止。
最后给出Java实现(支持多属性聚类,多线程)
https://github.com/HK-Zhang/wheats/tree/master/src/ClusterClique
参考文章:《数据挖掘概念与技术》韩家炜
相关文章
- Java Web Servlet (Part C)- HttpServletRequest & HttpServletResponse
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- 手机java程序_2020年最流行的Java开发技术
- 说一下java的运行机制_Java运行机制是什么?「建议收藏」
- java 阶乘算法_Java 实现阶乘算法
- Java 多线程
- java运行环境配置(jdk配置)Java博客 2 年前 桃李Taoli
- Java算法大全_java贪心算法几个经典例子
- 手动部署java项目到k8s中
- javaweb酒店管理系统设计与实现_java餐饮管理系统源码
- 花个几分钟,带你再了解一下Java注解
- Java递归 通过递归实现累加
- java多线程和锁
- Java基础学习笔记二十一 多线程详解编程语言
- java中的switch case语句详解编程语言
- Java中的 多线程编程详解编程语言
- 极光Java后台推送APP对接详解编程语言
- Java 浅拷贝和深拷贝详解编程语言
- 写入数据Java实现MySQL数据写入(java向mysql)
- 版本配置Linux系统的默认Java版本(linux默认java)
- Redis缓存中Java实现过期策略(redisjava过期)
- 收回Redis与Java实现过期收回功能(redisjava过期)
- 使用Java远程控制Linux 实现简单、高效的服务器管理(java控制linux)
- Linux下编译Java文件,迎来新体验(linux编译java文件)
- Linux 服务器快速部署Java开发环境(linux配置java)
- 询Java与Oracle联合查询更高效的数据处理方式(java oracle查)
- JAVA多线程与并发学习总结分析