聚类算法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版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
随机推荐
- urllib2 源码小剖
urllib2 源码小剖 2013-08-25 23:38 by 捣乱小子, 272 阅读, 0 评论, 收藏, 编辑 两篇小剖已经完成: urllib 源码小剖 urllib2 源码小剖 urlli ...
- C#私房菜[二][提供编程效率的技巧]
AaronYang的C#私房菜[二][提供编程效率的技巧] 前言 我的文章简单易懂,能学到东西.因为复杂的东西,讲起来,好累.阅读者只是膜拜,学不到东西,就是没用的东西,好多文章都是看不下去.我写不出 ...
- Microsoft 电信项目组 Net代码生成器1.1
Microsoft 电信项目组 Net代码生成器1.1 微软电信项目组代码生成器 为什么要使用这个代码生成器: 1.这个代码生成器采用 微软 企业库5.0 版本,目前CAPO所在的项目组都在使用这个 ...
- Ext.ux.form.SuperBoxSelect
Ext.ux.form.SuperBoxSelect 在B/S系统中,下拉列表(select/dropdownlist/combobox)的应用随处可见,为了增强用户体验,开发人员也常常会做一些带联想 ...
- kivy Create an application
http://kivy.org/docs/guide/basic.html#quickstart I followed this tutorial about how to create basic ...
- [Python]根据地址从maps文件中找相应的库名
/proc/PID/maps提供了进程的memory layout,下面脚本根据给定地址找出相应的库名: #!/usr/bin/python from __future__ import print_ ...
- mongodb两次被黑后......
先说说事情的经过...... 2017年1月8号星期天,在家翻头条无意中看到一条新闻说很多用户的mongodb被黑了,数据都被删了.当时想着公司的爬虫用的也是mongodb做存储,应该不会被黑吧,不可 ...
- Codeforces 158 D
题目链接 :http://codeforces.com/contest/158/problem/D D. Ice Sculptures time limit per test 3 seconds me ...
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- 在Xbox和Hololens 上部署、调试UWP App
在Windows 10 Device 上,UWP App可以快速部署进行调试.PC(平板)和Phone就不用多说,网上的文章比较多.今天专门介绍一下怎么在Xbox One和HoloLens上部署调试U ...