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. openstack keystone 命令详细

    命令使用之前需要  运行命令行“. admin-openrc” 用户(User) 查看用户列表 openstack user list 创建用户 openstack user create [-h] ...

  2. java-统计一段句子中各单词出现的次数

    问题:统计一段句子中各单词出现的次数. 思路: 1.使用split方法将文章进行分割,我们这里以空格.逗号和句点为分隔符,然后存到一个字符串数组中. 2.创建一个hashMap集合,key是字符串类型 ...

  3. [转帖]Linux 下软链接和硬链接的区别

    Linux 下软链接和硬链接的区别 http://os.51cto.com/art/201911/605267.htm 软连接 文件是小的 只是一个链接 删除和其他处理不影响 原始文件的计数 删除源文 ...

  4. INV*账户别名接收发放

    DECLARE --p_old_new_flag OLD 为导出 NEW 为导入 l_iface_rec inv.mtl_transactions_interface%ROWTYPE; l_iface ...

  5. Mitsubishi (三菱) Fanuc(发那科),CNC,网口数据采集,NC程序下发(其它品牌CNC,哈斯 马扎克 兄弟等,正在开发中)

    1.话不多说,先看效果 三菱CNC Fanuc CNC 2.能采集的数据有如下: 产量,状态,轴负载,坐标,主轴转速,三个倍率(主轴倍率 进给倍率 快速倍率),进给速度,当前加工程序名/程序号,当前程 ...

  6. git比较本地仓库和远程仓库的差异(转)

    转自:https://www.jianshu.com/p/6078a49900a4

  7. 关于base64的一个小细节

    Base64出现\r\n的问题 前段时间遇到这么一个小问题: 后台接口返回一个图片的base64串,同事拿着这个字符串,找了一个在线图片和Base64字符串互转的工具网站,想将字符串转成图片,死活转不 ...

  8. Part_six:Redis-cluster 实现集群

    redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令 假如业务需要每秒100万的命令执行呢? 2.客户端分片 redis3.0集群采用P2P模式,完 ...

  9. 常见SVN图标的含义

    转自:https://www.cnblogs.com/genhaosan/articles/5129791.html 灰色向右箭头:本地修改过 蓝色向左箭头:SVN上修改过 灰色向右且中间有个加号的箭 ...

  10. vue页面跳转

    一.在template中的常见写法: <router-link to="/recommend"> <button class="button" ...