K-Means(K-均值)聚类算法介绍

监督学习和无监督学习

无监督学习和监督学习是机器学习最基本的两种类型。在理解聚类算法前必须了解这两类两种类型直接的差别

监督学习(supervised learning)

在监督学习中最常见的是回归和分类(注意和聚类区分),关于回归,是将输入的数据集按照一个函数(模型参数)进行训练学习,当要对新来的数据进行预测时,便可以通过这个函数来进行回归预测。关于分类,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。
监督学习是训练神经网络和决策树的常见技术。这两种技术高度依赖事先确定的分类系统给出的信息,对于神经网络,分类系统利用信息判断网络的错误,然后不断调整网络参数。对于决策树,分类系统用它来判断哪些属性提供了最多的信息。
常见的有监督学习算法:回归分析和统计分类。最典型的算法是KNN和SVM。

无监督学习(unsupervised learning)

无监督学习与监督学习最大的差别是无监督学习中输入的样本是未知的,样本数据没有被标记,没有确定的类型和结果,无法用确切函数模型进行拟合。而是通过样本之间的相似性对样本集进行分类(聚类clustering)使得类内差距最小化,类间差距最大化从而让计算机自己将数据进行分类(并不是告诉计算机怎么分类)。
无监督学习的方法分为两大类:
(1) 一类为基于概率密度函数估计的直接方法:指设法找到各类别在特征空间的分布参数,再进行分类。
(2) 另一类是称为基于样本间相似性度量的简洁聚类方法:其原理是设法定出不同类别的核心或初始内核,然后依据样本与核心之间的相似性度量将样本聚集成不同的类别。
利用聚类结果,可以提取数据集中隐藏信息,对未来数据进行分类和预测。应用于数据挖掘,模式识别,图像处理等。

聚类

聚类,简单来说,就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。它是一种无监督的学习(Unsupervised Learning)方法,不需要预先标注好的训练集。聚类与分类最大的区别就是分类的目标事先已知,例如猫狗识别,你在分类之前已经预先知道要将它分为猫、狗两个种类;而在你聚类之前,你对你的目标是未知的,同样以动物为例,对于一个动物集来说,你并不清楚这个数据集内部有多少种类的动物,你能做的只是利用聚类方法将它自动按照特征分为多类,然后人为给出这个聚类结果的定义(即簇识别)。例如,你将一个动物集分为了三簇(类),然后通过观察这三类动物的特征,你为每一个簇起一个名字,如大象、狗、猫等,这就是聚类的基本思想。

至于“相似”这一概念,是利用距离这个评价标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。至于距离如何计算,科学家们提出了许多种距离的计算方法,其中欧式距离是最为简单和常用的,除此之外还有曼哈顿距离和余弦相似性距离等。

欧式距离,我想大家再熟悉不过了,但为免有一些基础薄弱的同学,在此再说明一下,它的定义为:
对于x点坐标为(x1,x2,x3,…,xn)和 y点坐标为(y1,y2,y3,…,yn),两者的欧式距离为:

d(x,y)=(x1−y1)2+(x2−y2)2+⋯+(xn−yn)2=∑i=1n(xi−yi)2d(x,y) ={\sqrt{ (x_{1}-y_{1})^{2}+(x_{2}-y_{2})^{2} + \cdots +(x_{n}-y_{n})^{2} }} ={\sqrt{ \sum_{ {i=1} }^{n}(x_{i}-y_{i})^{2} }} d(x,y)=(x1​−y1​)2+(x2​−y2​)2+⋯+(xn​−yn​)2​=i=1∑n​(xi​−yi​)2​

在二维平面,它就是我们初中时就学过的两点距离公式

K-Means 算法

K-Means 是发现给定数据集的 K 个簇的聚类算法, 之所以称之为 K-均值 是因为它可以发现 K 个不同的簇, 且每个簇的中心采用簇中所含值的均值计算而成.
簇个数 K 是用户指定的, 每一个簇通过其质心(centroid), 即簇中所有点的中心来描述.
聚类与分类算法的最大区别在于, 分类的目标类别已知, 而聚类的目标类别是未知的.

优点:

  • 属于无监督学习,无须准备训练集
  • 原理简单,实现起来较为容易
  • 结果可解释性较好

缺点:

  • 需手动设置k值。 在算法开始预测之前,我们需要手动设置k值,即估计数据大概的类别个数,不合理的k值会使结果缺乏解释性
  • 可能收敛到局部最小值, 在大规模数据集上收敛较慢
  • 对于异常点、离群点敏感

使用数据类型 : 数值型数据

K-Means 场景

kmeans,如前所述,用于数据集内种类属性不明晰,希望能够通过数据挖掘出或自动归类出有相似特点的对象的场景。其商业界的应用场景一般为挖掘出具有相似特点的潜在客户群体以便公司能够重点研究、对症下药。

例如,在2000年和2004年的美国总统大选中,候选人的得票数比较接近或者说非常接近。任一候选人得到的普选票数的最大百分比为50.7%而最小百分比为47.9% 如果1%的选民将手中的选票投向另外的候选人,那么选举结果就会截然不同。 实际上,如果妥善加以引导与吸引,少部分选民就会转换立场。尽管这类选举者占的比例较低,但当候选人的选票接近时,这些人的立场无疑会对选举结果产生非常大的影响。如何找出这类选民,以及如何在有限的预算下采取措施来吸引他们? 答案就是聚类(Clustering)。

那么,具体如何实施呢?首先,收集用户的信息,可以同时收集用户满意或不满意的信息,这是因为任何对用户重要的内容都可能影响用户的投票结果。然后,将这些信息输入到某个聚类算法中。接着,对聚类结果中的每一个簇(最好选择最大簇 ), 精心构造能够吸引该簇选民的消息。最后, 开展竞选活动并观察上述做法是否有效。

另一个例子就是产品部门的市场调研了。为了更好的了解自己的用户,产品部门可以采用聚类的方法得到不同特征的用户群体,然后针对不同的用户群体可以对症下药,为他们提供更加精准有效的服务。

K-Means 术语

  • 簇: 所有数据的点集合,簇中的对象是相似的。
  • 质心: 簇中所有点的中心(计算所有点的均值而来).
  • SSE: Sum of Sqared Error(误差平方和), 它被用来评估模型的好坏,SSE 值越小,表示越接近它们的质心. 聚类效果越好。由于对误差取了平方,因此更加注重那些远离中心的点(一般为边界点或离群点)。详情见kmeans的评价标准。

K-Means 工作流程

  1. 首先, 随机确定 K 个初始点作为质心(不必是数据中的点)。
  2. 然后将数据集中的每个点分配到一个簇中, 具体来讲, 就是为每个点找到距其最近的质心, 并将其分配该质心所对应的簇. 这一步完成之后, 每个簇的质心更新为该簇所有点的平均值.
    3.重复上述过程直到数据集中的所有点都距离它所对应的质心最近时结束。

上述过程的 伪代码 如下:

  • 创建 k 个点作为起始质心(通常是随机选择)
  • 当任意一个点的簇分配结果发生改变时(不改变时算法结束)
    • 对数据集中的每个数据点

      • 对每个质心

        • 计算质心与数据点之间的距离
      • 将数据点分配到距其最近的簇
    • 对每一个簇, 计算簇中所有点的均值并将均值作为质心

机器学习(九) K-Means(K-均值)聚类算法介绍相关推荐

  1. k-means(k均值聚类)算法介绍及实现(c++)

    基本介绍: k-means 算法接受输入量 k :然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小.聚类相似度是利用各聚类中对象的均 ...

  2. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  3. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

  4. 机器学习实战-61:K均值聚类算法(K-Means)

    K均值聚类算法(K-Means) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是聚类(clust ...

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

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  6. k均值聚类算法python_K均值和其他聚类算法:Python快速入门

    k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...

  7. python(scikit-learn)实现k均值聚类算法

    k均值聚类算法原理详解 示例为链接中的例题 直接调用python机器学习的库scikit-learn中k均值算法的相关方法 from sklearn.cluster import KMeans imp ...

  8. Thinking in SQL系列之五:数据挖掘K均值聚类算法与城市分级

    原创: 牛超   2017-02-21   Mail:10867910@qq.com 引言:前一篇文章开始不再介绍简单算法,而是转到数据挖掘之旅.感谢CSDN将我前一篇机器学习C4.5决策树算法的博文 ...

  9. k均值聚类算法原理和(TensorFlow)实现

    顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...

  10. 计算机视觉面试考点(14)K均值聚类算法(K-Means)

    计算机视觉工程师在面试过程中主要考察三个内容:图像处理.机器学习.深度学习.然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头.为了督促自己学习,也为了方便后人,决 ...

最新文章

  1. 单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...
  2. 一个ant的简单实例
  3. centos 7 中安装 docker和创建 tomcat容器并部署web应用
  4. MFC模态窗口与非模态窗口
  5. LC-BLSTM结构快速解读
  6. 22 省遭受重大洪灾,机器学习未来能预报么?
  7. unix linux windows mac,從 Mac (Unix) 移至 Windows | Microsoft Docs
  8. 金笛邮件之邮件倒入专题
  9. 作为一个程序员需要学多少技能?
  10. 动画图解:十大经典排序算法动画与解析
  11. 在Globalscape EFT FTP服务器上安装SSL证书的方法
  12. 轻巧和实用并存——360安全卫士极速版试用报告
  13. 在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框
  14. 隐藏部分内容,点击按钮显示全部内容
  15. android pin码 经典蓝牙_请问 蓝牙 的自动设置PIN码 功能该怎么实现。
  16. iOS app发布ERROR ITMS-90096
  17. Eclipse开发工具--使用JDT开发java程序
  18. 戴尔硬件服务器参数,戴尔_PowerEdge R540_机架式服务器参数_服务器推荐购买 | Dell 中国大陆...
  19. 10部令人泣不成声的经典电影
  20. 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...

热门文章

  1. 创业点子--wifi anywhere
  2. 10.26如何用C语言计算圆的周长与面积
  3. java set集合元素_Java面试题10(如何取到set集合的第一个元素)
  4. 使用coloc进行QTL数据的共定位分析
  5. android 锁屏画报,小米手机锁屏画报一直换怎么办?小米锁屏画报设置技巧
  6. 结构方程模型(SEM)高阶应用及建模
  7. Linux安装anaconda3,配置jupyter,在jupyter安装tensorflow环境
  8. 12V/30A双管正激设计全过程
  9. 法蒂玛机器人_ZIB智伴儿童机器人《中国新声代5》守护孩子的音乐之梦
  10. 大话Flink之十一Table API 和 Flink SQL