聚类算法分析——Kmeans算法
2015-09-07 22:00
134 查看
Kmeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后通过计算各个簇中数据点的平均值,更新簇中心,迭代至满足收敛条件。
Kmeans的目标函数:(这里以欧式距离作为衡量近邻标准进行分析)
其中,N是数据数目,C是划分簇的数目,rc 是一个0 1变量,当数据点xn被归类到c簇时为1,否则为0。
Kmeans 算法就是最小化这个目标函数,可采取迭代的方法:先固定uc,选择最优的簇,即将数据归类到离它最近的中心;下一步固定簇,选取最优的uc。这里可通过M对uc求导求得最优值,如步骤(2)公式所示,也就是对应簇中数据的平均值。
kmeans算法可分为两步骤进行:
(1) 根据C个簇的uc将每个数据点归类到离它最近的簇;
(2) 计算每个簇新的中心点。
不断迭代这两个步骤,直至每个簇的中心不再变化或者变化很小。
*备注:*uc的初始化问题。Matlab默认的是随机从样本中抽取C个数据点,并另外提供了三种方法,包括均匀抽取;抽取10%的子样本先使用聚类进行uc估计;构建C*P矩阵(P指样本数据的维度)。
(最近在研究图像分割,今天把Kmeans翻出来,实现的效果不是很好,基于像素值考虑的东西可能不全面,还在继续探索)
Kmeans的目标函数:(这里以欧式距离作为衡量近邻标准进行分析)
其中,N是数据数目,C是划分簇的数目,rc 是一个0 1变量,当数据点xn被归类到c簇时为1,否则为0。
Kmeans 算法就是最小化这个目标函数,可采取迭代的方法:先固定uc,选择最优的簇,即将数据归类到离它最近的中心;下一步固定簇,选取最优的uc。这里可通过M对uc求导求得最优值,如步骤(2)公式所示,也就是对应簇中数据的平均值。
kmeans算法可分为两步骤进行:
(1) 根据C个簇的uc将每个数据点归类到离它最近的簇;
(2) 计算每个簇新的中心点。
不断迭代这两个步骤,直至每个簇的中心不再变化或者变化很小。
*备注:*uc的初始化问题。Matlab默认的是随机从样本中抽取C个数据点,并另外提供了三种方法,包括均匀抽取;抽取10%的子样本先使用聚类进行uc估计;构建C*P矩阵(P指样本数据的维度)。
(最近在研究图像分割,今天把Kmeans翻出来,实现的效果不是很好,基于像素值考虑的东西可能不全面,还在继续探索)
相关文章推荐
- UVA 1451 - Average
- 【h5-egret】js加载成第三方库
- backtrack5r3信息收集之主机综合扫描工具的使用
- 如何在点击shell/elisp类型的link时,不要弹出确认窗口
- CCMenu解析
- Coursera机器学习课程笔记(5) Neural Networks Representation
- 网页计算器
- Linux中的SSH登录
- 面试题:(1)关于fork的问题
- hihocoder1163 nim博弈
- BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割
- ConcurrentModificationException异常解决
- Java Io 字符流
- Linux/Mac/Windows换行符及对'\r'和'\n'的不同处理
- Codeforces Bubble Cup 8 - Finals [Online Mirror] 解题报告
- Android学习总结(一)
- Windows QT下OpenCV的配置
- java移动占位符<<;>>d的实现原理
- 转: Jenkins+Gradle实现android开发持续集成、打包
- Spring整合Redis