2017-12-31 19:08:37

k-平均算法源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-means的目的是:把样本划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。

这个问题在计算上是困难的(NP困难),不过存在高效的启发式算法。一般情况下,都使用效率比较高的启发式算法,它们能够快速收敛于一个局部最优解。这些算法通常类似于通过迭代优化方法处理高斯混合分布的最大期望算法(EM算法)。

K-means比较适合数据类型是球状的数据,也就是不同的簇的形状是一球一球的。

一、簇评估

聚类问题由于是无监督的问题,可以说是没有什么标准答案的,也就是说怎么分类都是可能的。

另外坐标的变换也是会影响最终的结果的:

那么该如何对聚类的结果进行评判呢?

  • 计算类似聚合度的概念

也就是通过计算每个数据和他到其类均值的距离平方,最后再求和得到最后的数值,显然,数值越低表征聚类效果越好。同样的,这种判断方法也是针对一团一团的数据比较好用。

  • Silhouette

对每个数据点计算s(i)的值,其中b(i)表示其到数据点i到各个其他类的距离的均值的最小值,a(i)则表示数据点i到自身这个类的距离的均值。

对于聚合程度高的类他的S图是比较规整的,对于分散的则是比较参差不齐的。

二、K-Means算法

K-Means顾名思义就是k个均值的意思,K-Means算法本质上也是一种EM算法思想的应用。

该算法非常形象的表述了如何计算收敛到k个类的一个过程:

首先生成k个类(也就是随机生成k个中心);

然后通过k个均值,得到属于他们的数据点;

通过得到的中心点重新计算其k个均值;

loop第二步,第三步直到k个均值保持不变。

因为k-means比较简单,所以得到了非常广泛的使用,其有如下的优点和缺点。

优点:

  1. 收敛迅速,简单高效,适用于一团一团的数据;
  2. 算法复杂度O(tkn),t是迭代次数,k类的个数,n数据点的个数;

缺点:

  1. k值的选择,初始点的选择都会产生迥异的结果;
  2. 对噪点敏感,因为使用的是均值;
  3. 对奇怪的形状适用性较差;

三、Sequential Leader Clustering

Sequential Leader Clustering可以处理流数据。K-Means如果看成是把一群人聚集到教室再进行分类的话,那Sequential Leader Clustering就是对每一个进来的同学进行一个分类,所以Sequential Leader Clustering不需要迭代运算,只需要遍历一遍数据集就可以了,值得一提的是这种算法不需要设定k值。

Sequential Leader Clustering需要手动设置一个阈值。

算法流程:

n {\displaystyle n} 个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。

K-Means & Sequential Leader Clustering的更多相关文章

  1. KNN 与 K - Means 算法比较

    KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...

  2. 软件——机器学习与Python,聚类,K——means

    K-means是一种聚类算法: 这里运用k-means进行31个城市的分类 城市的数据保存在city.txt文件中,内容如下: BJ,2959.19,730.79,749.41,513.34,467. ...

  3. 【CV论文阅读】Unsupervised deep embedding for clustering analysis

    Unsupervised deep embedding for clustering analysis 偶然发现这篇发在ICML2016的论文,它主要的关注点在于unsupervised deep e ...

  4. [C8] 聚类(Clustering)

    聚类(Clustering) 非监督学习:简介(Unsupervised Learning: Introduction) 本章节介绍聚类算法,这是我们学习的第一个非监督学习算法--学习无标签数据,而不 ...

  5. 论文解读SDCN《Structural Deep Clustering Network》

    前言 主体思想:深度聚类需要考虑数据内在信息以及结构信息. 考虑自身信息采用 基础的 Autoencoder ,考虑结构信息采用 GCN. 1.介绍 在现实中,将结构信息集成到深度聚类中通常需要解决以 ...

  6. 论文解读(DFCN)《Deep Fusion Clustering Network》

    Paper information Titile:Deep Fusion Clustering Network Authors:Wenxuan Tu, Sihang Zhou, Xinwang Liu ...

  7. 论文解读(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》

    论文信息 论文标题:CGC: Contrastive Graph Clustering for Community Detection and Tracking论文作者:Namyong Park, R ...

  8. 快速查找无序数组中的第K大数?

    1.题目分析: 查找无序数组中的第K大数,直观感觉便是先排好序再找到下标为K-1的元素,时间复杂度O(NlgN).在此,我们想探索是否存在时间复杂度 < O(NlgN),而且近似等于O(N)的高 ...

  9. 网络费用流-最小k路径覆盖

    多校联赛第一场(hdu4862) Jump Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

随机推荐

  1. linux注意的一些地方

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行 #include <assert.h>void assert( int expr ...

  2. Educational Codeforces Round 28

    A. Curriculum Vitae 题目链接:http://codeforces.com/contest/846/problem/A 题目意思:给你一个只包含0-1的数组,现在要求去可以去掉一些元 ...

  3. K-均值聚类(K-means)算法

    https://www.cnblogs.com/ybjourney/p/4714870.html 最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学pytho ...

  4. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...

  5. Centos 系统Java环境安装

    Java安装 安装SUN的JDK: 官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260. ...

  6. nodejs Async详解之三:集合操作

    Async提供了很多针对集合的函数,可以简化我们对集合进行异步操作时的步骤.如下: forEach:对集合中每个元素进行异步操作 map:对集合中的每个元素通过异步操作得到另一个值,得到新的集合 fi ...

  7. 【开发者笔记】c# 调用java代码

    一.需求阐述 java实现的一个算法,想翻译成c#,翻译代码之后发现有bug,于是不调试了.直接将jar打包成dll拿来用. 二.原理说明 jar可以通过ikvmc工具打包成dll,然后在项目中引入该 ...

  8. java多线程(六)

    使用Runnable接口创建线程 Runnable接口 只有一个run()方法 Thread类实现了Runable接口 便于多个线程共享资源 Java不支持多继承,如果已经继承了某个基类,便要实现Ru ...

  9. jQuery获取属性

    jQuery在获取jQuery对象的属性时,出现attr()获取不到的情况,此时,请使用prop()获取 如下为经常用到的: var oHtml=$(this).prop("outerHTM ...

  10. 028-touch命令

    1.创建空文件.可以创建一个空文件,也可以批量创建空文件. 2.更改文件/目录的访问时间,如果文件存在就更改访问时间,不存在就创建.# touch -a 3.更改文件的访问时间和修改时间.如果文件存在 ...