关于聚类算法BIRCH
来源:互联网 发布:网络借钱平台 编辑:程序博客网 时间:2024/05/17 08:15
BIRCH的基本思想
/**
* 1、算法起初,我们扫描数据库,拿到第一个data point instance--(1,2,3),我们创建一个空的Leaf和* MinCluster,把点(1,2,3)的id值放入Mincluster,更新MinCluster的CF值为(1,(1,2,3),(1,4,9)),
* 把MinCluster作为Leaf的一个孩子,更新Leaf的CF值为(1,(1,2,3),(1,4,9))。实际上只要往树中放入一个
* CF(这里我们用CF作为Nonleaf、Leaf、MinCluster的统称),就要更新从Root到该叶子节点的路径上所有节点的
* CF值。
*
*
* 2、当又有一个数据点要插入树中时,把这个点封装为一个MinCluster(这样它就有了一个CF值),把新到的数据点
* 记为CF_new,我们拿到树的根节点的各个孩子节点的CF值,根据D2来找到CF_new与哪个节点最近,就把CF_new加入
* 那个子树上面去。这是一个递归的过程。递归的终止点是要把CF_new加入到一个MinCluster中,如果加入之后
* MinCluster的直径没有超过T,则直接加入,否则譔CF_new要单独作为一个簇,成为MinCluster的兄弟结点。插入
* 之后注意更新该节点及其所有祖先节点的CF值。
*
*
* 3、插入新节点后,可能有些节点的孩子数大于了B(或L),此时该节点要分裂。对于Leaf,它现在有L+1个
* MinCluster,我们要新创建一个Leaf,使它作为原Leaf的兄弟结点,同时注意每新创建一个Leaf都要把它插入到
* 双向链表中。L+1个MinCluster要分到这两个Leaf中,怎么分呢?找出这L+1个MinCluster中距离最远的两个
* Cluster(根据D2),剩下的Cluster看离哪个近就跟谁站在一起。分好后更新两个Leaf的CF值,其祖先节点的CF值
* 没有变化,不需要更新。这可能导致祖先节点的递归分裂,因为Leaf分裂后恰好其父节点的孩子数超过了B。
* Nonleaf的分裂方法与Leaf的相似,只不过产生新的Nonleaf后不需要把它放入一个双向链表中。如果是树的根节点要
* 分裂,则树的高度加1。
*/
这周日之前完成算法。开始阅读网络课程论文
0 0
- 关于聚类算法BIRCH
- Birch聚类算法
- 关于聚类算法-BIRCH算法的详细解析
- 聚类算法birch详解
- BIRCH聚类算法原理
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- BIRCH 大规模数据聚类算法(转)
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- 聚类算法之BIRCH(Java实现)
- birch聚类算法的原理与实现
- BIRCH算法
- BIRCH算法
- BIRCH算法
- Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
- self.navigationItem 与 self.navigationController.navigationItem 的区别
- 【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Querying Entities】
- Python 第一章 基础知识(7) 模块
- POJ-2723(2-SAT)
- 关于聚类算法BIRCH
- [LeetCode] Add Two Numbers
- windows下arp命令
- linux shell
- 如何解决每次打开office2010都会出现正在配置
- How To Validate ASM Diskgroup Consistency/State After ASM Reclamation Utility (ASRU) Execution Abort
- sgu139:Help Needed!
- C++学习:指针
- coursera台大机器学习基础课程学习笔记2 -- 机器学习的分类