K-均值聚类算法通俗讲解
本章开始讲无监督学习,与有监督学习最大的区别是目标变量事前不存在。
本章是K-均值聚类算法。聚类是一种无监督的学习,它将相似的对象归到同一个簇中,将不相似对象归到不同簇。有点像全自动分类。聚类有时也被称为无监督分类,其产生的结果与分类相同,只是类别没有预先定义。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。
K-均值聚类(K-means)算法是指将数据集分成k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。
一、K-均值算法
1)首先,用户确定簇个数k(计划将数据划分为k个类);
2)随机确定k个初始点作为质心(在数据边界范围之内随机选取);
3)对每个数据实例依次计算到k个质心的距离,选择最小距离的质心,并将其分配给该质心所对应的簇,直到数据集中的所有数据全都分配给k个簇,更新k个簇的质心为该簇所有点的平均值;
4)循环上述步骤3),重新分配每个数据实例到新的质心,直到所有数据的分配结果不再发生改变为止。
二、使用后处理来提高聚类性能
K-均值算法的缺点:K-均值聚类中,簇的数目k是用户预先定义的参数,但是用户并不知道如何选择k才是正确的,生成的簇才是最好的。K-均值算法有时候的簇分配结果值没有那么准确,K-均值算法收敛但聚类效果较差的原因是,K-均值算法收敛到了局部最小值,而非全局最小值(局部最小值指结果还可以但并非最好结果,全局最小值是可能的最好结果)。
度量聚类效果指标:一种度量聚类效果的指标是SSE(Sum of Squared Error,误差平方和)。SSE值越小表示数据点越接近于它们的质心,聚类效果也越好。因为对误差取了平方,因此更重视那些远离中心的点。一种肯定可以降低SSE值的方法是增加簇的个数,但是这违背了聚类的目标。聚类的目标是在保持簇数目不变的情况下提高簇的质量。
K-均值的改进:对生成的簇进行后处理。一种方法是将具有最大SSE值的簇划分为两个簇。具体实现可以是将最大簇包含的点过滤出来并在这些点上运行K=2的K-均值算法。为了保持簇的总数不变,另一种后处理方法是可以再将某两个簇进行合并。具体实现可以合并最近的质心;或者合并两个使得SSE增幅最小的质心。
三、二分K-均值算法
二分K-均值算法是对K-均值算法的改进,针对K-均值算法收敛于局部最小值而非全局最小值的问题,提出了二分K-均值算法(bisecting K-means)。
该算法思想是:首先将所有点看作一个簇,然后将该簇一分为二;之后再选择一个划分后可以降低SSE值的簇进行划分;直到划分的簇数目达到指定数k为止。
算法步骤:
1)确定簇数目k;
2)将所有数据点看作一个簇;
3)当簇数目小于k时,进入循环,对每一个簇尝试k=2的K-Means聚类;
4)具体循环:首先设置SSE为无穷大,对当前所有簇进行K-均值聚类(k=2),计算每个簇一分为二划分后的总体误差(包含划分的簇和未划分簇的总SSE)。每一轮循环结束后,选择总体误差最小的那个簇进行K-均值聚类(k=2)。
5)调整所有簇的编号和质心。一分为二的簇变成两个新的簇,其中一个编号占用原来的,另一个编号变为簇个数(len(簇),末尾加了一个)。质心也由原来的一个变成两个,一个替换被划分的原来的簇的质心,另一个质心追加到列表最后。
6)重复步骤3)4)5),直到簇数目大于等于k为止。
四、小结
聚类是一种无监督学习方法,所谓无监督学习是指事先并不知道要寻找的内容,即没有目标变量。聚类将数据点归到多个簇中,其中相似数据点处于同一簇,而不相似数据点处于不同簇中。聚类中可以使用多种不同的方法来计算相似度。
K-均值算法是一种广泛使用的聚类算法,K-均值算法简单有效但是也容易受到初始簇质心的影响。为了获得更好的聚类效果,可以使用二分K-均值的聚类算法,其聚类效果要好于K-均值算法。
除了K-均值算法及变形的K-均值算法外,被称为层次聚类的方法也被广泛使用。
K-均值聚类算法通俗讲解相关推荐
- K均值聚类算法(Kmeans)讲解及源码实现
K均值聚类算法(Kmeans)讲解及源码实现 算法核心 K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应的簇中心点.算法的具体步骤描述如下. 数据预处理,如归一化.离群点处理等. ...
- K-means(K均值聚类算法)算法笔记
K-means(K均值聚类算法)算法笔记 K-means 算法,是比较简单的无监督的算法,通过设定好初始的类别k,然后不断循环迭代,将给定的数据自动分为K个类别.事实上,大家都知道K-means是怎么 ...
- 计算机视觉面试考点(14)K均值聚类算法(K-Means)
计算机视觉工程师在面试过程中主要考察三个内容:图像处理.机器学习.深度学习.然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头.为了督促自己学习,也为了方便后人,决 ...
- 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真
一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...
- k均值聚类算法优缺点_Grasshopper实现K均值聚类算法
本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...
- K-Means(K均值聚类算法)
K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...
- K均值聚类算法(HCM,K-Means)
K均值聚类核心思想如下: 算法把n个向量分为个组,并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小.当选择欧几里德距离为组j中向量与相应聚类中心间的非相似性指标时,价值函 ...
- k均值聚类算法python_K均值和其他聚类算法:Python快速入门
k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...
- python(scikit-learn)实现k均值聚类算法
k均值聚类算法原理详解 示例为链接中的例题 直接调用python机器学习的库scikit-learn中k均值算法的相关方法 from sklearn.cluster import KMeans imp ...
- 机器学习之无监督学习-K均值聚类算法
机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...
最新文章
- 基于PyGame的乒乓球和滑雪小游戏
- java中缀表达式转后缀表达式_数据结构Java实现06----中缀表达式转换为后缀表达式...
- PPC中检查某程序是否运行
- php程序中用户名含特殊字符怎么办,php中包含ñ等特殊字符
- unity and MySql
- 在CodeBlocks上配置OpenGL问题
- Spring和Junit整合
- Linux利用PROMPT_COMMAND实现审计功能
- 企业税银数据深度分析(上)
- spark安装以及hive on spark和spark on hive 的配置
- 杜邦线改成焊线_做杜邦线(假)教程
- 论文阅读笔记:Neural Belief Tracker: Data-Driven Dialogue State Tracking
- u8转完看不到菜单_用友U8软件菜单和导航有功能不能正常显示,如何解决?
- Chrome浏览器谷歌翻译 失效/用不了的解决方法idea-翻译插件失败(TKK: 更新 TKK 失败,请检查网络连接)
- vmbox 导入虚拟电脑之后无法上网
- 2014,微信是糖,甜到忧伤
- 微信公众号图灵机器人开发php,使用图灵api创建微信聊天机器人
- 写一个矩阵相乘的函数
- 微信语音转文字的体验报告
- intel服务器芯片排行,【2021Intel服务器CPU排行榜】Intel服务器CPU哪款好_热门Intel服务器CPU推荐-太平洋产品报价...