聚类算法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版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
随机推荐
- 【译】TensorFlow Python Docs 之 overview
Overview 综述 TensorFlow has APIs available in several languages both for constructing and executing a ...
- node.js系列笔记之node.js初识《一》
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...
- C# 根据路线点集合动态分段
/// <summary> /// 将数据根据起.止点分段,返回结果点集合 /// </summary> public Obse ...
- 在Linux Mint13下编译安装mono运行时
最近一直想体验下mono在web开发上到底进展到什么程度,挑战一下它对web开发的极限.因为asp.net mvc本身依赖windows平台的东西不太多,所以这些assembly移植到mono/lin ...
- 编程利用利用curses库编程开始
时间紧张,先记一笔,后续优化与完善. curses库常用函数: 注意编译时要用这样的格式:gcc xxx.c -l curses -o xxx 第一个小例子: include <stdio.h& ...
- 结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)
最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件.思路:定义一个代码块,手动加载到页面,然后手动删除. ...
- Javascript设计模式之装饰者模式详解篇
一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...
- EF 下的code fist 模式编程
EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库) 和 database fist (数据已经设计好了) 首先打开vs 新建一个项目 创建一个控制台程序 然后 新建一个Tea ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
- [CSS3备忘] transform animation 等
一些CSS不经常用就会忘记,好吧,现在整理再学习一下,也留做备忘,方便以后查看... perspective的理解: 1.数值越小,用户与3D空间Z平面距离越近,视觉效果更令人印象深刻(比如看电影,越 ...