unsupervised learning: K-means 算法
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的衣服那样)
总结
- 先随机选取cluster centroids(聚类中心)
- 对每个样本点进行cluster assignment step(染色)
- move centroid step:根据染色后的结果,再重新计算新的cluster centroids(聚类中心)
- 重复以上2,3步骤,直到收敛(cluster centroids与染色结果不再改变)
unsupervised learning: K-means 算法的更多相关文章
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- K-means算法
K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢? ...
- 机器学习(Machine Learning)算法总结-K临近算法
一.算法详解 1.什么是K临近算法 Cover 和 Hart在1968年提出了最初的临近算法 属于分类(classification)算法 邻近算法,或者说K最近邻(kNN,k-NearestNeig ...
- 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 ...
- Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
8 Unsupervised Learning8.1 Clustering8.1.1 Unsupervised Learning: Introduction集群(聚类)的概念.什么是无监督学习:对于无 ...
- 无监督学习(Unsupervised Learning)
无监督学习(Unsupervised Learning) 聚类无监督学习 特点 只给出了样本, 但是没有提供标签 通过无监督学习算法给出的样本分成几个族(cluster), 分出来的类别不是我们自己规 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
- [机器学习] k近邻算法
算是机器学习中最简单的算法了,顾名思义是看k个近邻的类别,测试点的类别判断为k近邻里某一类点最多的,少数服从多数,要点摘录: 1. 关键参数:k值 && 距离计算方式 &&am ...
- Unsupervised learning无监督学习
Unsupervised learning allows us to approach problems with little or no idea what our results should ...
随机推荐
- LInux学习之路
linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...
- 八、spring生命周期之BeanPostProcessor
BeanPostProcessor我们一般称为Bean的后置处理器,它与我们前面介绍的InitialingBean.init-method等一样,都是在bean的初始化时被调用,具体的用法我们在举例中 ...
- HDU6608-Fansblog(Miller_Rabbin素数判定,威尔逊定理应用,乘法逆元)
Problem Description Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people ...
- js获取日期时间
获取当前时间 function getNowFormatDate() {//获取当前时间 var date = new Date(); var symbol_gang = "-"; ...
- python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)
11.5 jQuery 引入方式: 方式一:本地引入 <script src="jquery-3.3.1.min.js"></script> <scr ...
- 视图集ViewSet
一 .视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update ...
- Spring Cloud Zuul源码
一.Zuul源码分析(初始化流程.请求处理流程)
- Windows MySql增量备份、完整备份采坑之路
1.前言 这周公司交给我一个任务,负责项目Mysql数据库的备份,因为项目上线后数据是一个大问题,出了什么问题数据才是最大的问题,备份这时候就显得尤为重要, 公司项目的思路是:在项目系统设置内可以勾选 ...
- WPF 程序如何跨窗口/跨进程设置控件焦点
原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 U ...
- Arduino 计算机视觉系统概述
计算机视觉系统概述 计算机视觉系统是最近比较热门的研究领域,今天开始给大家介绍下计算机视觉相关的知识. 视觉是人的所有感官中最敏感的一种,人的视觉可以感知环境,而机器的视觉却很难感知环境 为了解决计算 ...