k-means算法是目前最流行的,用得最多的一种clustering算法

K-means算法

如果我们想要将上图中的绿色的点分为两类,首先随机的选取两个cluster centroids(聚类中心),然后迭代(循环)地做两件事:cluster assignment和move centroids(图1)

cluster assignment: 然后将训练集中的每个样本,根据是距离红色的cluster centroid近还是蓝色的cluster centroid近来进行分配cluster.(图2)

move centroids:然后将所有红色的点的位置计算出平均值做为新的cluster centroid,同样所有的蓝色的点的位置计算出平均值做为新的cluster centroid.(图3)

cluster assignment:根据新的cluster centroids来重新分配(根据距离远近)每个样本的cluster,即对每个样本重新进行染色(图4)

move centroids:重新分配clusters后,再计算每个cluster的平均值做为新的cluster centroids.(图5)

我们继续进行迭代,发现cluster centroids和分配的cluster不再变化了,意味着k-means算法收敛了,即在这个数据中发现两个cluster这个工作结束了

K-means算法formally

输入:K为我们希望将数据集分为K个clusters(以后会讲如何选择K),现在K做为输入为需要将data分为的cluster的个数。

training set(没有y值,因为为非监督学习)

x(i)为n维,而不是n+1维,不用加上x0=1

cluster assignment step: 对于training data中的第一个点,计算c(i)(对每个样本进行染色)为距离最近的那个cluster centroid的下标值(1-K),注意uk中的k为小写,指的是centroid的下标,Kcluster centroids为大写,表示总共有K个cluster.通常我们喜欢用距离的平方来求最小值.

move centroid step: 重新计算每个cluster的cluster centroid(根据染色后的平均值)

如果某个cluster centroid没有一个点分配给它,那么怎么办呢?通常情况下,我们是将这个cluster centroid给移除掉,这样就会得到K-1个clusters;如果就是要K个clusters,怎么办呢?办法是重新找一个cluster centroid.但是将这个cluster centroid给移除掉这种方法更常使用。

K-means在不能明显区分的clusters上的应用

左边图为k-means在明显分为三个clusters上的数据集上的应用。

K-means也可以应用在如右图所示的那样,数据集看上去是没有明显的cluster的区分的。这是一个T-shirt size的例子,如你想要设计三种大小(S,M,L)的T-shirt,但是不知道每种大小应设计为多大,这时我们将要穿我们T-shirt的人的身高体重(这些是影响T-shirt大小的主要因素)做个统计,如左图所示,然后应用K-means算法将这些数据分为三个cluster,然后分别针对每个cluster来设计不同size的衣服的大小。=>市场细分的例子,使用K-means将我的市场划分为三部分,这样就能区别对待三类不同的顾客群体,更好地适应他们不同的需求(如S,M,L不同size的衣服那样)

总结

  1. 先随机选取cluster centroids(聚类中心)
  2. 对每个样本点进行cluster assignment step(染色)
  3. move centroid step:根据染色后的结果,再重新计算新的cluster centroids(聚类中心)
  4. 重复以上2,3步骤,直到收敛(cluster centroids与染色结果不再改变)

unsupervised learning: K-means 算法的更多相关文章

  1. KNN 与 K - Means 算法比较

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

  2. K-means算法

    K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢?  ...

  3. 机器学习(Machine Learning)算法总结-K临近算法

    一.算法详解 1.什么是K临近算法 Cover 和 Hart在1968年提出了最初的临近算法 属于分类(classification)算法 邻近算法,或者说K最近邻(kNN,k-NearestNeig ...

  4. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

    1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1 ...

  5. Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记

    8 Unsupervised Learning8.1 Clustering8.1.1 Unsupervised Learning: Introduction集群(聚类)的概念.什么是无监督学习:对于无 ...

  6. 无监督学习(Unsupervised Learning)

    无监督学习(Unsupervised Learning) 聚类无监督学习 特点 只给出了样本, 但是没有提供标签 通过无监督学习算法给出的样本分成几个族(cluster), 分出来的类别不是我们自己规 ...

  7. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  8. [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  9. [机器学习] k近邻算法

    算是机器学习中最简单的算法了,顾名思义是看k个近邻的类别,测试点的类别判断为k近邻里某一类点最多的,少数服从多数,要点摘录: 1. 关键参数:k值 && 距离计算方式 &&am ...

  10. Unsupervised learning无监督学习

    Unsupervised learning allows us to approach problems with little or no idea what our results should ...

随机推荐

  1. LInux学习之路

    linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...

  2. 八、spring生命周期之BeanPostProcessor

    BeanPostProcessor我们一般称为Bean的后置处理器,它与我们前面介绍的InitialingBean.init-method等一样,都是在bean的初始化时被调用,具体的用法我们在举例中 ...

  3. HDU6608-Fansblog(Miller_Rabbin素数判定,威尔逊定理应用,乘法逆元)

    Problem Description Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people ...

  4. js获取日期时间

    获取当前时间 function getNowFormatDate() {//获取当前时间 var date = new Date(); var symbol_gang = "-"; ...

  5. python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)

    11.5 jQuery 引入方式: 方式一:本地引入 <script src="jquery-3.3.1.min.js"></script> <scr ...

  6. 视图集ViewSet

    一 .视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update ...

  7. Spring Cloud Zuul源码

    一.Zuul源码分析(初始化流程.请求处理流程)

  8. Windows MySql增量备份、完整备份采坑之路

    1.前言 这周公司交给我一个任务,负责项目Mysql数据库的备份,因为项目上线后数据是一个大问题,出了什么问题数据才是最大的问题,备份这时候就显得尤为重要, 公司项目的思路是:在项目系统设置内可以勾选 ...

  9. WPF 程序如何跨窗口/跨进程设置控件焦点

    原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 U ...

  10. Arduino 计算机视觉系统概述

    计算机视觉系统概述 计算机视觉系统是最近比较热门的研究领域,今天开始给大家介绍下计算机视觉相关的知识. 视觉是人的所有感官中最敏感的一种,人的视觉可以感知环境,而机器的视觉却很难感知环境 为了解决计算 ...