聚类算法是一类非监督学习算法,在有监督学习中,学习的目标是要在两类样本中找出他们的分界,训练数据是给定标签的,要么属于正类要么属于负类。而非监督学习,它的目的是在一个没有标签的数据集中找出这个数据集的结构把它自动聚成两类或者多类。
本讲主要介绍了最常用了一种聚类算法--K-means聚类算法。如果将数据集分成两类,即k=2,K-means算法过程如下:
1、首先任意选取两个不同的样本作为两类样本的中心

2、K-means算法有两部,第一步cluster assignment step,遍历所有样本点,计算出每个样本点离两个中心的距离(这个距离不一定是欧几里得距离,根据不同需要选取)来判断样本点属于哪一个类别(比如某个样本点离红色的中心比离蓝色的中心近,那么就将这个样本点归类到红色这类中,反之亦然),每个样本归类之后就得到如下:

3、K-means的第二部是move centroid step,这一步是根据前一步的分类结果,计算出他们的新的类的中心(计算方法可以是对所有样本的每一维取平均,得到每类的中心),计算出新的中心结果如下:

4、然后根据新计算出来的两个中心将每个样本点再归类,不断迭代以上两步,直到所有样本点不再改变(即收敛)

K-Means正式定义如下,输入要求有一个整数k和m个样本点,然后按照上面讲到的过程一步一步迭代,直到收敛:

Andrew还讲到了一个例子,给不可分的数据集分类,就是一个T-shirt分类的例子,如下图:

比如现在有这样一系列身高和体重的数据,在生产T-shirt的时候会将T-shirt分成L,M和S三个号,利用K-Means就可以将这三类分出来,这里取k=3。

看了上面,你对K-Means应该有一个直观的概念了,接下去来讲一下关于K-Means的理论,在前面的监督学习中,首先都是建立一个假设,然后用已有的带有标签的数据集来最小化这个cost function,那么,在K-Means中,估值函数可以帮助我们debug,如果估值函数没有预想中的不断减小最后收敛到一个极值,那么算法肯定是写的有问题了。看看我们写的K-means算法有没有正常工作,他的估值函数如下:

解决算法陷入局部最优问题的方案当然是选取不同的初始值,多次运行kmeans算法,选取最小的cost function J作为最终的结果,这样就能取得一个很好的聚类结果。

一般运行K-means算法时,k(分类数)是人为指定的,但是人根本不知道样本数据中真实的类别是多少,比如上面这个例子中,反映在图上,很明显可以看出它可以聚类成三类,如果把k指定成两类或者其他,那么聚类效果会大打折扣。要区分k最常用的方法是elbow method,它的工作原理如下:

随着k增大,J会不断变小,k=m时候,j就变成了0。通常选取的k是拐点最明显的那个值。如果学习曲线如上图右边那个曲线,那就说明数据没有很好的区分性,因此可以将数据分成你所需要的任意类。

Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)的更多相关文章

  1. 如何区分监督学习(supervised learning)和非监督学习(unsupervised learning)

    监督学习:简单来说就是给定一定的训练样本(这里一定要注意,样本是既有数据,也有数据对应的结果),利用这个样本进行训练得到一个模型(可以说是一个函数),然后利用这个模型,将所有的输入映射为相应的输出,之 ...

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

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

  3. 无监督学习(Unsupervised Learning)

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

  4. 机器学习聚类算法之K-means

    一.概念 K-means是一种典型的聚类算法,它是基于距离的,是一种无监督的机器学习算法. K-means需要提前设置聚类数量,我们称之为簇,还要为之设置初始质心. 缺点: 1.循环计算点到质心的距离 ...

  5. 一种新型聚类算法(Clustering by fast search and find of density peaksd)

    最近在学习论文的时候发现了在science上发表的关于新型的基于密度的聚类算法 Kmean算法有很多不足的地方,比如k值的确定,初始结点选择,而且还不能检测费球面类别的数据分布,对于第二个问题,提出了 ...

  6. 机器学习聚类算法之DBSCAN

    一.概念 DBSCAN是一种基于密度的聚类算法,DBSCAN需要两个参数,一个是以P为中心的邻域半径:另一个是以P为中心的邻域内的最低门限点的数量,即密度. 优点: 1.不需要提前设定分类簇数量,分类 ...

  7. 机器学习作业(七)非监督学习——Matlab实现

    题目下载[传送门] 第1题 简述:实现K-means聚类,并应用到图像压缩上. 第1步:实现kMeansInitCentroids函数,初始化聚类中心: function centroids = kM ...

  8. 机器学习-聚类(clustering)算法:K-means算法

    1. 归类: 聚类(clustering):属于非监督学习(unsupervised learning) 无类别标记(class label) 2. 举例: 3. Kmeans算法 3.1 clust ...

  9. 数学模型:3.非监督学习--聚类分析 和K-means聚类

    1. 聚类分析 聚类分析(cluster analysis)是一组将研究对象分为相对同质的群组(clusters)的统计分析技术 ---->> 将观测对象的群体按照相似性和相异性进行不同群 ...

随机推荐

  1. 利用svn自动同步更新到网站服务器 -- 网摘

    首先在服务器上安装VisualSVN Server ,根据提示选好安装的路径,一路确定.安装好后运行VisualSVN Server ,在Repositories上点击右键,选择create New ...

  2. unity多边形uv地图

    我曾经写过一篇文章,不规则图形uv地图.(http://blog.csdn.net/itolfn/article/details/17240131)我用三角算法.但是,这种方法已经不完全,有一个指明: ...

  3. (C语言)共用体union的使用方法举例

    曾经在学校学习C语言的时候一直搞不懂那个共用体union有什么用的.工作之后才发现它的一些妙用,现举比例如以下: 1. 为了方便看懂代码. 比方说想写一个3 * 3的矩阵,能够这样写: [ 注:以下用 ...

  4. 使用AndroidStudio快速开发教程

    关于AndroidStudio的使用 参考:http://www.codes51.com/article/detail_98914.html  1.对于开发环境的通性:编写 调试 视图   一般的开发 ...

  5. Java获取系统相关信息System.getProperty()

    java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...

  6. lua本学习笔记功能

    Lua本学习笔记功能 1.  函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_ ...

  7. changePage() 页面跳转

    jQuery.mobile.changePage( to [, options ] ) 从一个页面跳转到另一个页面,使用$.mobile对象的changePage方法来实现.但要使用此方式的时候,要以 ...

  8. sql点滴42—mysql中的数据结构

    原文:sql点滴42-mysql中的数据结构 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小 ...

  9. C#使用COM搜索本地word文档关键字

    /// <summary> /// 检索根目录下的子目录及其所有文件,并在datagridview中显示文档名称及路径--递归调用 /// </summary> /// < ...

  10. oracle读写文件--利用utl_file包对磁盘文件的读写操作

    oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...