Clustering

聚类K-means

  聚类是机器学习和数据挖掘领域的主要研究方向之一,它是一种无监督学习算法,小编研究生时期的主要研究方向是“数据流自适应聚类算法”,所以对聚类算法有比较深刻的理解,于是决定开一个专题来写聚类算法,希望可以为入门及研究聚类相关算法的读者带来帮助。聚类可以作为一个单独的任务,用于寻找数据内在分布结构,也经常作为其他学习任务的前驱过程,应用十分广泛。今天,小编就带你探索聚类算法的奥秘,并介绍第一个聚类算法Kmeans。

Q:什么是聚类?

A:聚类是按照某一种特定的标准(相似性度量,如欧式距离等),把一个数据集分割成不同的类,使得同一个类中的数据对象的相似性尽可能大,不同类之间的差异性也尽可能大,如下图是一个聚类结果的可视化:

聚类有非常广泛的应用,比如根据消费记录发现不同的客户群,对基因表达进行聚类可以研究不同种群中的基因特征,对文本进行聚类可以快速找出相关主题的文章等。

Q:如何度量相似性?

A:常用的相似性度量方式主要有以下几种:

  • 欧式距离:

  • Minkowoski距离:

  • 曼哈顿距离:

  • 余弦距离:

  • Jaccard相似系数:

  • 相关系数:

Q:常用的聚类算法有哪些?

A:

  • 基于划分的聚类:k-means,mean shift

  • 层次聚类:BIRCH

  • 密度聚类:DBSCAN

  • 基于模型的聚类:GMM

  • Affinity propagation

  • 谱聚类

上面的这些算法只是简单的引入聚类的概念,在接下来的专题中,我们将具体探讨经典的聚类算法,研究它们的原理,分析优缺点,应用场景等。今天,我们就来学习最经典的一个聚类算法Kmeans

K-means

Kmeans聚类原理

Kmeans算法的思想很简单,根据给定样本集中样本间距离的大小将样本集划分为k个簇(类),使得每个点都属于距离它最近的那个聚类中心(即均值means)对应的类。之所以叫kmenas是因为它可以发现k(用户指定)个簇且簇中心用属于该簇的数据的均值来表示。

Kmeans聚类算法

数据集合X={x1,...xn}中每个样本都是d维无标签数据,kmeans聚类的目标是将这n个点分到k个簇使得簇内点到簇中心点(均值)的距离平方和最小,即求下列目标函数的最优解

  其中μi就是簇Si中点的均值。

然而解上式并不是一个简单的问题,因为它是一个NP难问题,所以kmeans算法采用一种启发式的迭代求解方法:

首先随机选择k个对象作为初始的聚类中心,然后计算每个样本到各个聚类中心的距离,并分配给距离它最近的聚类中心。一旦对象全都被分配了,重新计算每个簇的中心(均值)作为下一次迭代的新的中心点。这一过程将重复进行直到满足下列任一条件:

  • 没有对象被重新分配给新的类;

  • 聚类中心不再发生变化;

  • 误差平方和局部最小。

Tips:

  • k值的选择:一般来说我们可以根据数据的先验选择一个合适的k,如果不行,则可以通过交叉验证选择合适的k;

  • 初始化k个中心点:可以随机选择,也可以每次选择距离其他中心点尽可能远的点作为中心;

Kmeans++算法

前面我们也提到了K个初始化中心的选择对聚类算法的运行结果和时间有很大影响,Kmeans++算法提出了对随机化初始化聚类中心的优化:

  1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心μ1;

  2. 对于数据集中的每一个点xi,计算它与已选择的聚类中心最近的一个的距离D(xi);

  3. 选择D(xi)较大的点作为新的聚类中心;

  4. 重复b,c直到找出k个聚类中心;

Kmeans算法小结

优点:

  • 原理简单,实现简单,收敛速度快;

  • 聚类效果比较好;

  • 可解释性强,直观;

  • 只有一个参数k;

缺点:

  • k的选择对聚类效果影响较大;

  • 对于不是凸的数据集比较难收敛;

  • 类别不均衡数据集聚类效果不好;

  • 结果局部最优;

  • 对噪声点敏感;

  • 聚类结果是球形。

小结:

今天是聚类算法学习的第一部分,内容虽然简单但是很重要,kmeans算法常常作为其他算法的基础,如之前的半监督学习以及之后会讲的谱聚类算法都会用到。相信今天的学习你一定也有了收获,聚类专题的下一篇内容是谱聚类,敬请期待!

扫码关注

获取有趣的算法知识

聚类(一)——Kmeans的更多相关文章

  1. [聚类算法] K-means 算法

    聚类 和 k-means简单概括. 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起. k-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据它们的属性分为 ...

  2. 机器学习(二)——K-均值聚类(K-means)算法

    最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习,在写这篇文章之前对FCM有过一定的了解,所以对K均值算 ...

  3. R与数据分析旧笔记(十四) 动态聚类:K-means

    动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans ...

  4. 聚类:层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类

    一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一 ...

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

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

  6. 【数据挖掘】聚类之k-means(转载)

    [数据挖掘]聚类之k-means 1.算法简述 分类是指分类器(classifier)根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习(supervised learn ...

  7. ML.NET技术研究系列-2聚类算法KMeans

    上一篇博文我们介绍了ML.NET 的入门: ML.NET技术研究系列1-入门篇 本文我们继续,研究分享一下聚类算法k-means. 一.k-means算法简介 k-means算法是一种聚类算法,所谓聚 ...

  8. 【机器学习】聚类算法:层次聚类、K-means聚类

    聚类算法实践(一)--层次聚类.K-means聚类 摘要: 所谓聚类,就是将相似的事物聚集在一 起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段.比如古典生物学之中,人们通 ...

  9. 【机器学习】机器学习入门08 - 聚类与聚类算法K-Means

    时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数 ...

  10. 机器学习——详解经典聚类算法Kmeans

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第12篇文章,我们一起来看下Kmeans聚类算法. 在上一篇文章当中我们讨论了KNN算法,KNN算法非常形象,通过距离公 ...

随机推荐

  1. 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识

    作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...

  2. Javascript中Promise的简单使用

    // 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数:如果是偶数则做一件事情,如果是奇数则做另一件事情 function doSomthing() { var promise = ...

  3. Javascript设计模式——建造者模式

    建造者模式是相对比较简单的一种设计模式,属于创建型模式的一种: 定义:将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与表现层分离,使相同的构建过程可以创建不同的表示模式:    优点: ...

  4. 大神都在用的yum源

    本文原创首发于公众号:编程三分钟 yum 命令的使用 yum命令天天都在用,都快用烂了,但是很多人不知道为什么只要联网,yum命令就能像老奶奶手中的魔法棒一样,随心所欲的下载到想到的包. 比如你想装个 ...

  5. B-概率论-贝叶斯决策

    目录 贝叶斯决策 一.贝叶斯决策理论 二.贝叶斯公式 2.1 从条件概率公式推导贝叶斯公式 2.2 从全概率公式推导贝叶斯公式 三.贝叶斯公式应用 更新.更全的<机器学习>的更新网站,更有 ...

  6. github仓库添加MIT许可

    俩种方法 1.新建仓库 直接在选择添加即可如下图: 2.为已创建仓库后添加MIT协议 直接在给工程根目录添加LICENSE文件提交即可,内容是 MIT License Copyright (c) 年份 ...

  7. windows服务器多端口Redis安装步骤

    1.从官网获取最新稳定版redis文件.按端口号复制多个文件,比如6379和6380端口的文件包, 修改各自Conf文件的port号,分别为6379和6380.然后重命名为redis6379.conf ...

  8. OSX 10.14.2 安装Cocoapods 出现问题的解决方法

    今天尝试用 Cocoapods安装个第三方库.. 输入pod install, 发现 command not find. WTF! 估计是升级10.11后Cocoapods被干掉了. 我输入 sudo ...

  9. C语言I作业004

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业 我在这个课程的目标是 掌握使用for循环语句实现指定次数的循环程序设计 这个作业在那个具体方面帮助我实现目标 pta运用for循环语 ...

  10. PTA 7-3 编辑距离问题 (30 分)

    一.实践题目 设A和B是2个字符串.要用最少的字符操作将字符串A转换为字符串B.这里所说的字符操作包括: ()删除一个字符: ()插入一个字符: ()将一个字符改为另一个字符. 将字符串A变换为字符串 ...