聚类算法是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.目标:

找出一个分割,使得距离平方和最小

2.方法:

Global optimal : 枚举所有partition

Heuristic method:K-Means, K-Medoids

3.K-Means算法:

1. 将数据分为k个非空子集

2. 计算每个类中心点(k-means<centroid>中心点是所有点的average),记为seed point

3. 将每个object聚类到最近seed point

4. 返回2,当聚类结果不再变化的时候stop

4.K-Medoids算法:

Given k,the k-medoids algorithm is implemented in five steps:

1.partition objects into k nonempty subsets

2.compute the centroids of the clusters of the current partitioning

3.choose the nearest points of the centroids of the clusters as seed points

4.assign each object to the cluster with the nearest seed point

5.go back to step 2,stop when the assignment does not change

5.特点:

-聚类结果与初始点有关(因为是做steepest descent from a random initial starting oint)

-是局部最优解

-在实际做的时候,随机选择多组初始点,最后选择拥有最低TSD(Totoal Squared Distance)的那组

缺点:1、需先确定k的个数 2、对噪声和离群点敏感 3、结果不一定是全局最优,只能保证局部最优 4、结果不稳定 (受输入顺序影响)

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算法进行估计:

3. EM具体应用到GMM参数求解问题:

E-step: 根据已有observed data和现有模型估计missing data:Qi(zk)

M-step: 已经得到了Q,在M-step中进行最大似然函数估计(可以直接用log-likelihood似然函数对参数求偏导)

4. K-Means与GMM的比较:

KMeans:

1. Objective function:§Minimize the TSD
2. Can be optimized by an EM algorithm.
          §E-step: assign points to clusters.
          §M-step: optimize clusters.
          §Performs hard assignment during E-step.
3. Assumes spherical clusters with equal probability of a cluster.

-GMM:

1. Objective function:§Maximize the log-likelihood.
2. EM algorithm:
          §E-step: Compute posterior probability of membership.
          §M-step: Optimize parameters.
          §Perform soft assignment during E-step.
3. Can be used for non-sphericalclusters. Can generate clusterswith different probabilities.

3. Dimensionality Reduction Approach: Spectral Clustering 

1. Spectral clustering要解决的问题:

上面的KMeans不能能解决一些问题,如图所示:

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

下面我们介绍谱分解的算法

  1. 根据数据构造一个 Graph ,Graph 的每一个节点对应一个数据点,将相似的点连接起来,并且边的权重用于表示数据之间的相似度。把这个 Graph 用邻接矩阵的形式表示出来,记为  。一个最偷懒的办法就是:直接用我们前面在 K-medoids 中用的相似度矩阵作为  。
  2. 把  的每一列元素加起来得到  个数,把它们放在对角线上(其他地方都是零),组成一个  的矩阵,记为  。并令  。
  3. 求出  的前  个特征值(在本文中,除非特殊说明,否则“前  个”指按照特征值的大小从小到大的顺序) 以及对应的特征向量  。
  4. 把这  个特征(列)向量排列在一起组成一个  的矩阵,将其中每一行看作 维空间中的一个向量,并使用 K-means 算法进行聚类。聚类的结果中每一行所属的类别就是原来 Graph 中的节点亦即最初的  个数据点分别所属的类别。

http://blog.pluskid.org/?p=287

http://blog.csdn.net/abcjennifer/article/details/8170687

聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut的更多相关文章

  1. 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut

    原文请戳:http://blog.csdn.net/abcjennifer/article/details/8170687 聚类算法是ML中一个重要分支,一般采用unsupervised learni ...

  2. Python聚类算法之基本K均值实例详解

    Python聚类算法之基本K均值实例详解 本文实例讲述了Python聚类算法之基本K均值运算技巧.分享给大家供大家参考,具体如下: 基本K均值 :选择 K 个初始质心,其中 K 是用户指定的参数,即所 ...

  3. ML: 聚类算法R包-K中心点聚类

    K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值, ...

  4. K-Means 聚类算法原理分析与代码实现

    前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经 ...

  5. ML: 聚类算法-概论

    聚类分析是一种重要的人类行为,早在孩提时代,一个人就通过不断改进下意识中的聚类模式来学会如何区分猫狗.动物植物.目前在许多领域都得到了广泛的研究和成功的应用,如用于模式识别.数据分析.图像处理.市场研 ...

  6. PHP处理海量样本相似度聚类算法

    catalogue . TF-IDF . 基于空间向量的余弦算法 . 最长公共子序列 . 最小编辑距离算法 . similar_text . local sensitive hash 局部非敏感哈希 ...

  7. ML: 聚类算法R包-网格聚类

    网格聚类算法 optpart::clique optpart::clique CLIQUE(Clustering In QUEst)是一种简单的基于网格的聚类方法,用于发现子空间中基于密度的簇.CLI ...

  8. ML: 聚类算法-K均值聚类

    基于划分方法聚类算法R包: K-均值聚类(K-means)                   stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...

  9. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

随机推荐

  1. nginx可用来干什么?

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: server { listen80; # 端口号 lo ...

  2. web前端中的一些注释表达法

    1.HTML注释 <!--注释的内容--> 注释的地方(根据个人习惯可能有所不同): 结束标签的后面,这一切都是为了程序在嵌套的时候更加方便.明了,如: <div class=&qu ...

  3. luogu P1462 通往奥格瑞玛的道路--spfa+二分答案

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  4. Linux CentOS 知识和常用命令

    1.常用热键 [Tab]它具有“命令补全”与“文件补全”的功能[Ctrl+C]中断执行中的程序组合键[Ctrl+d]键盘输入结束.也可以用来替代 exit 2.Linux 常用编辑器 vi 和 vim ...

  5. xmind 8 安装后启动失败(未提示错误信息)

      xmind 8 安装后启动失败   前言 家里的计算机也安装了xmind,启动之后界面显示xmind的启动图标,几秒之后启动图标消失(闪退了),然后留我一脸懵逼.想着卸载了安装一个新的应该没有问题 ...

  6. Delete 语句带有子查询的sql优化

    背景: 接到开发通知,应用页面打不开,让我协助... (开发跟我说,表GV_BOOKS一直有锁,锁了有1个多小时了,问我能不能把锁释放掉,我回答他们说,这肯定是sql性能问题,表上有锁是正常现象,不是 ...

  7. 比特币 3角对冲python代码

    3角对冲原理 基础货币 base, 兑换货币 quote, 中间货币 mid. 市场分为3个市场 p3: base_quote p2: quote_mid p1: quote_mid 代码逻辑 1, ...

  8. ASP.NET MVC中如何在客户端进行必要的判断

    背景:在开发网站时,往往需要对用户的输入进行合法性检查,如果验证工作都放在服务器端,势必将影响网页的响应速度,同时给用户不好的体验.本篇随笔即是使用JQuery在客户端进行必要的合法检测. JS代码如 ...

  9. php 链接 mongodb

    1.下载phpmongodb 驱动:https://s3.amazonaws.com/drivers.mongodb.org/php/index.html 2.Precompiled binaries ...

  10. SHELL十三问[转载自CU论坛]

    原文地址:http://bbs.chinaunix.net/thread-218853-1-1.html 一.为什么称作shell? http://bbs.chinaunix.net/viewthr ...