码迷,mamicode.com
首页 > 编程语言 > 详细

DM里的K均值算法

时间:2015-03-07 22:50:05      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:dm   k均值   聚类   

1、Preface

因为一直在做的是聚类算法的研究,算是总结了一些心得,这里总结些知识性与思路性的东西,我想在其他地方也是很容易的找到类似的内容的。毕竟,世界就是那么小。
声明:本文比较不适合没有DM基础的人来阅读。我只是胡乱的涂鸦而已

2、聚类算法

在DM里的聚类算法里,有基于划分的算法,基于层次的算法,基于密度的算法,基于网格的算法,基于约束的算法。
其中每一种基于的算法都会衍生出一至几种算法,对应的每一种算法不管在学术界还是工业界都存在着许多的改进的算法
这里想介绍的是基于基于划分的算法里的K均值算法

3、K均值算法

在基于划分的算法里,最典型的是K均值算法,这个比较简单,也是很容易理解的。
原理:
算法的输入:数据集合,K值
输出:经过聚类的K个中心点

 1、在待聚类的数据集合里随机的选取K个数据样本点作为初始的聚类中心
 2、计算剩余的每一个样本点距离K个聚类中心点的距离,分配样本点到最最近的聚类中心簇里
 3、重新计算聚类簇的均值
 4、判断聚类中心点是否会存在变化或者平方误差函数基本上不在变化(这个可以人为的设定,比如通过设定平方误差函数与上次相比满足一定的关系变停止算法等等),否则重复步骤2,3

算法优点
很明显的是算法很容易,很简单,相对来说很快啊,仅限于小数据量。
算法的缺点
这个也是很明显的,根据算法原理,K值的人为性,主观性,要是有一个算法或者什么方式能够精确地确定K值变化给此算法带来突破;另外,初始聚类中心的随机性;还有数据集合肯定存在孤立点的影响以及大数据量的解决方案等等

4、algorithms的Improvements and breakthroughts

针对K均值的缺点,前仆后继,中外的scholars和experts都在做出了很大的贡献。我这里根据自己能够想到的总结下(肯定是不全的)

  • 针对K的人为性的研究譬如canopy算法
  • 针对随机性初始中心点的研究(这个要多说点),引入密度的概念,选择密度最大的样本点;引入var的概念,选择关系最好的样本点;引入贪心算法的概念,构建K个簇中心;还有引入很多公式的概念,这个设计到的概念比较多,公式的形式的多样性估计此领域的人会很少的能看懂;引入动态的样本的构建选择距离最大的样本点的概念等等,还有引入其余算法等,模糊聚类,或者二分聚类等等

每一种的引入都会对应着一篇或数篇papers,数学的引入,算法的引入,形式多样,不拘一格
这也许正是对应了导师曾经说过的那句话,科学就是要小步慢跑

  • 针对距离的计算的研究,譬如存在欧式距离之外的马氏距离,很有意思
    当然还有很多的改进的方式,平时忘记了总结了,一时半会很难想起来了。

5、总结

看paper实现papers,改进papers,优化papers,上线系统的测试等,在看papers,实现papers,改进papers,优化papers,上线测试,循环的更迭。
我想在这一系列的过程中,会有几个好帮手,google,wiki,一个好的IDE,一个足够灵活的大脑,要是有足够的硬件条件来满足你就更棒了

DM里的K均值算法

标签:dm   k均值   聚类   

原文地址:http://blog.csdn.net/duankaifei/article/details/44120449

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!