聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
原文请戳:http://blog.csdn.net/abcjennifer/article/details/8170687
聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral clustering,Ncut五个算法在聚类中的应用。
Clustering Algorithms分类
1. Partitioning approach:
建立数据的不同分割,然后用相同标准评价聚类结果。(比如最小化平方误差和)
典型算法:K-Means, K-Medoids
2. Model-based:
对于每个类假定一个分布模型,试图找到每个类最好的模型
典型算法:GMM(混合高斯)
3. Dimensionality Reduction Approach:
先降维,再聚类
典型算法:Spectral clustering,Ncut
下面分别解析~
1. Partitioning approach
1.1.目标:
找出一个分割,使得距离平方和最小
1.2.方法:
Global optimal : 枚举所有partition
Heuristic method:K-Means, K-Medoids
1.3.K-Means算法:
a. 将数据分为k个非空子集
b. 计算每个类中心点(k-means<centroid>中心点是所有点的average),记为seed point
c. 将每个object聚类到最近seed point
d. 返回2,当聚类结果不再变化的时候stop
复杂度:
O(kndt)
-计算两点间距离:d
-指定类:O(kn) ,k是类数
-迭代次数上限:t
1.4.K-Medoids算法:
a. 随机选择k个点作为初始medoid
b.将每个object聚类到最近的medoid
c. 更新每个类的medoid,计算objective function
d. 选择最佳参数
e. 返回b,当各类medoid不再变化的时候stop
复杂度:
O((n^2)d)
-计算各点间两两距离O((n^2)d)
-指定类:O(kn) ,k是类数
1.5.特点:
-聚类结果与初始点有关(因为是做steepest descent from a random initial starting oint)
-是局部最优解
-在实际做的时候,随机选择多组初始点,最后选择拥有最低TSD(Totoal Squared Distance)的那组
1.6. KMeans和KMedoid的实现
2. Model-based——GMM(Gaussian Mixture Model)
1.GMM概念:
-将k个高斯模型混合在一起,每个点出现的概率是几个高斯混合的结果。


-假设有K个高斯分布,每个高斯对data points的影响因子为πk,数据点为x,高斯参数为theta,则

-要估计的模型参数为每个类的影响因子πk,每个类的均值(μk)及协方差矩阵(Σk)
2. GMM的似然函数:
log-likelihood function:
假设N个点的分布符合i.i.d,则有似然函数

问题是,对于这样的一个似然函数,用gradient descent的方法很难进行参数估计(可证明)
所以用前面我们讲过的EM(expectation maximization)算法进行估计:

引入中间latent项z(i),其分布为Q,用EM算法,就有上面的恒等,那么为什么是恒等呢?来看看讲EM的这篇文章,第三张的开头写的,
=constant,也就是说与z(i)无关了,而等于p(x(i);theta),这也就是说可以用混合高斯模型的概率表示了。
3. EM具体应用到GMM参数求解问题:
E-step: 根据已有observed data和现有模型估计missing data:Qi(zk)
M-step: 已经得到了Q,在M-step中进行最大似然函数估计(可以直接用log-likelihood似然函数对参数求偏导)

4. GMM的实现
5. K-Means与GMM的比较:
-KMeans:
-GMM:
3. Dimensionality Reduction Approach: Spectral Clustering
1. Spectral clustering要解决的问题:
上面的KMeans不能能解决一些问题,如图所示:

而这种问题可以通过谱聚类(spectral clustering)解决。将数据展开到两个特征向量空间,即得:

下面我们介绍谱分解的算法~
2.clustering objectives:
将边权赋值为两点之间的similarity,做聚类的目标就是最小化类间connection的weight。

比如对于下面这幅图,分割如下

但是这样有可能会有问题,比如:

由于Graph cut criteria 只考虑了类间差小,而没考虑internal cluster density.所以会有上面分割的问题。这里引入Normalised-cut(Shi & Malik, 97')。
3. 改进版:Ncut
-consider the connection between groups relative to the density of each group:

其中,vol 是每个group的volume,也就是normalize by group volume.

最后的目标是最小化Ncut(A,B).
4. Ncut 的求解:
-Matrix Representation:

-Objective Function of Ncut:

详见wiki上的求解过程,这里不再赘述。
关于Machine Learning更多的学习资料与相关讨论将继续更新,敬请关注本博客和新浪微博Rachel Zhang 。
聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut的更多相关文章
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral cluster ...
- Python聚类算法之基本K均值实例详解
Python聚类算法之基本K均值实例详解 本文实例讲述了Python聚类算法之基本K均值运算技巧.分享给大家供大家参考,具体如下: 基本K均值 :选择 K 个初始质心,其中 K 是用户指定的参数,即所 ...
- ML: 聚类算法R包-K中心点聚类
K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值, ...
- K-Means 聚类算法原理分析与代码实现
前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经 ...
- ML: 聚类算法-概论
聚类分析是一种重要的人类行为,早在孩提时代,一个人就通过不断改进下意识中的聚类模式来学会如何区分猫狗.动物植物.目前在许多领域都得到了广泛的研究和成功的应用,如用于模式识别.数据分析.图像处理.市场研 ...
- PHP处理海量样本相似度聚类算法
catalogue . TF-IDF . 基于空间向量的余弦算法 . 最长公共子序列 . 最小编辑距离算法 . similar_text . local sensitive hash 局部非敏感哈希 ...
- ML: 聚类算法R包-网格聚类
网格聚类算法 optpart::clique optpart::clique CLIQUE(Clustering In QUEst)是一种简单的基于网格的聚类方法,用于发现子空间中基于密度的簇.CLI ...
- ML: 聚类算法-K均值聚类
基于划分方法聚类算法R包: K-均值聚类(K-means) stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
随机推荐
- .net mvc页面UI之Jquery博客日历控件
摘要:最近在做一个博客系统,其他需要用到博客日历控件,网上搜索了很多资料,其中大部分都是javascript的,经过总结使用jquery实现了博客日历效果.代码如下: 原文链接转载请注明:http:/ ...
- JS获取table表格任意单元格值
jsp页面表格布局 <body onload="show()"> <center> <input type="text" valu ...
- iOS多线程的初步研究1
iOS多线程的初步研究(一) 对于多线程的开发,iOS系统提供了多种不同的接口,先谈谈iOS多线程最基础方面的使用.产生线程的方式姑且分两类,一类是显式调用,另一类是隐式调用. 一.显示调用的类为NS ...
- DRP项目总结
DRP项目在6号就已经完工了,总共花费了一个半月的时间,从对java的懵懵懂懂,到现在的略微熟悉,对整个java web开发的认知,清晰了很多.涉及到的web项目开发的必备知识,也都有一次得到锻炼和提 ...
- set 类型
set类型 map 容器是键-值对的集合,好比以人名为键的地址和电话号码. 相反地,set 容器只是单纯的键的集合.map 适用于字典.电话本.商品价目表等类似的模型.set 适用于黑名单.白名单等. ...
- hdu 2444
这道题要先判断图是不是二分图,如果不是的话,就直接输出No,是的话就求最大匹配, 建边是双向的所以要/2 判断二分图:对点进行染色,如果A与B认识,A,B的颜色要不同, 如果出现颜色相同的就矛盾了,就 ...
- 了解JVM加载实例化类的原理
class Singleton { private static Singleton instance = new Singleton(); public static int a; public s ...
- [置顶] (游戏编程-04)JAVA版雷电(奇迹冬瓜)
注:运行环境必须要JDK 先为大家送上游戏截图 接着在最后有代码下载的链接地址 1.游戏开始动画和主界面 关卡与boss 结束画面 代码下载地址 点击打开链接
- sharepoint 使用命令行注册dll文件到gac的方法
使用命令行注册dll文件到gac的方法: gacutil.exe -i D:\SPFormLoginProject.dll 删除gac的dll方法: gacutil /u "SPFormLo ...
- javaPNS进阶-高级推送技巧
1 创建 payloads javaPNS提供了很多简单易用的通知方式(Push类里的alert,badges,sounds等)这些让你不用自己处理payload.但是我们的程序可能需要复杂的推送信息 ...