聚类(一)——Kmeans

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算法常常作为其他算法的基础,如之前的半监督学习以及之后会讲的谱聚类算法都会用到。相信今天的学习你一定也有了收获,聚类专题的下一篇内容是谱聚类,敬请期待!

扫码关注

获取有趣的算法知识

原文地址:https://www.cnblogs.com/jwcz/p/11826705.html

时间: 2024-08-26 04:12:47

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

学习笔记:聚类算法Kmeans

前记 Kmeans是最简单的聚类算法之一,但是运用十分广泛,最近看到别人找实习笔试时有考到Kmeans,故复习一下顺手整理成一篇笔记.Kmeans的目标是:把n 个样本点划分到k 个类簇中,使得每个点都属于离它最近的质心对应的类簇,以之作为聚类的标准.质心,是指一个类簇内部所有样本点的均值. 算法描述 Step 1. 从数据集中随机选取K个点作为初始质心         将每个点指派到最近的质心,形成k个类簇 Step 2. repeat             重新计算各个类簇的质心(即类内部

K均值聚类--利用k-means算法分析NBA近四年球队实力

分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法.聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例.本文首先介绍聚类的基础--距离与相异度,然后介绍一种常见的聚类算法--k-means算法,并利用k-means算法分析NBA近四年球队实力.因为本人比较喜欢观看NBA比赛,所以用这

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

动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans()函数 > X=iris[,1:4]> km=kmeans(X,3)> kmK-means clustering with 3 clusters of sizes 62, 50, 38 Cluster means: Sepal.Length Sepal.Width Petal.Length

[聚类算法]K-means优缺点及其改进

[聚类算法]K-means优缺点及其改进 [转]:http://blog.csdn.net/u010536377/article/details/50884416 K-means聚类小述 大家接触的第一个聚类方法,十有八九都是K-means聚类啦.该算法十分容易理解,也很容易实现.其实几乎所有的机器学习和数据挖掘算法都有其优点和缺点.那么K-means的缺点是什么呢? 总结为下: (1)对于离群点和孤立点敏感: (2)k值选择; (3)初始聚类中心的选择: (4)只能发现球状簇. 对于这4点呢的

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

一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一个大类.不停的合并,直到合成了一个类.其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等.比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离. 层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerat

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

最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习,在写这篇文章之前对FCM有过一定的了解,所以对K均值算法有一种莫名的亲切感,言归正传,今天我和大家一起来学习K-均值聚类算法. 一 K-均值聚类(K-means)概述 1. 聚类 “类”指的是具有相似性的集合.聚类是指将数据集划分为若干类,使得类内之间的数据最为相似,各类之间的数据相似度差别尽可能大.聚类分析就是以相似性为基础,对数据集进行聚类划分,属于无监督学

[聚类算法] K-means 算法

聚类 和 k-means简单概括. 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起. k-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据它们的属性分为k个聚类,以便使得所获得的聚类满足: 同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小. k - means的算法原理:

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

[数据挖掘]聚类之k-means 1.算法简述 分类是指分类器(classifier)根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习(supervised learning).如果训练集的样本没有标注类别,那么就需要用到聚类.聚类是把相似的样本聚成一类,这种相似性通常以距离来度量.聚类被称为无监督学习(unspervised learning). k-means是聚类算法中常用的一种,其中k的含义是指有k个cluster.由聚类的定义可知,一个样本应距离其所属c

转:机器学习sklearn19.0聚类算法——Kmeans算法

https://blog.csdn.net/loveliuzz/article/details/78783773 机器学习sklearn19.0聚类算法--Kmeans算法 原文地址:https://www.cnblogs.com/ruogu2019/p/10291656.html

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

时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数,以及一些简单的算法--kNN算法.决策树算法等. 那么,今天就用聚类和K-Means算法来结束我们这段机器学习之旅. 1. 聚类 1.1 什么是聚类 将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他