机器学习之聚类算法

摘要:
例如,根据身高数据,比较值之间的距离,并对未标记的篮球运动员和体操运动员进行聚类,准确性将更高。其核心思想是将样本分成K个类,这样类之间的样本距离就大,而类内的样本距离则小。目标是使用k-means算法将这些点划分为两个不同的类。以下是身高和体重的散点图。使用k均值算法将散点图分为三类。每一类人都适合穿S、M和L尺寸的T恤。

(一)K-means

提到k-means不得不说的许高建老师,他似乎比较偏爱使用这种聚类方法,在N个不同场合听到他提起过,k-means通过设置重心和移动中心两个简答的步骤,就实现了数据的聚类。下面就来介绍下k-means算法

一、   数值属性距离度量

度量数值属性相似度最简单的方法就是计算不同数值间的“距离”,如果两个数值之间“距离”比较大,就可以认为他们的差异比较大,而相似度较低;换而言之,如果两数值之间“距离”较小,可认为他们的差异比较小,相似度较高。

例如,根据身高数据,比较数值间的距离,对未标签的篮球运动员和体操运动员的进行聚类,准确率会比较高。

 

令两个n维数值分别为:机器学习之聚类算法第1张机器学习之聚类算法第2张,那么这两个数值之间的“距离”可以用如下方法进行度量:

 

曼哈顿距离

曼哈顿距离之所以这么命名,就是其度量的距离类似于城市中两个点的街区距离:

机器学习之聚类算法第3张

欧几里德距离:

欧几里德距离就是我们常用的两点之间的直线距离:

机器学习之聚类算法第4张

 

推广到一般情况:

闵可夫斯基距离:

机器学习之聚类算法第5张

 

闵可夫斯基又称为机器学习之聚类算法第6张范式,可以看出:当h=1时,它表示曼哈顿距离(机器学习之聚类算法第7张范式);当h=2时,它表示欧几里德距离(机器学习之聚类算法第8张范式);当机器学习之聚类算法第9张时的闵可夫斯基距离又称为上确界距离(机器学习之聚类算法第10张范式、切比雪夫距离)。

 

一、   概述

k-means算法从字面上看分两个部分:1、k,这里的k是需要聚类的簇的数量,也就是说将样本分为k类;2、means,顾名思义,利用到求平均值。其核心思想是将样本分为K类,使得类之间的样本距离大,而类之内的样本距离小。

二、   算法

假设有训练集机器学习之聚类算法第11张,因为没有标签,k-means算法是无监督算法。

算法描述

1.     随机初始化k个聚类重心机器学习之聚类算法第12张

2.     将每个数据跟各重心比较,找出离此数据最近的重心,既是其所属的簇;

3.     计算每个簇的重心,并重置机器学习之聚类算法第13张

4.     重复步骤2-4,直至收敛。

伪代码:

1.     Initialize cluster centroids

2.     Repeat until convergence {

For  every  i, set

         机器学习之聚类算法第14张

For  each  j,  set

          机器学习之聚类算法第15张

}

敛散性:

我们定义失真函数(distortion function)为:

机器学习之聚类算法第16张

 

J度量的是训练集机器学习之聚类算法第17张和聚类重心机器学习之聚类算法第18张的距离的平方和。通常,通过重心的不断迭代,J的数值不断减小直至收敛至一常数。然而,由于J是非凸函数,因此,在初始化重心时需要尝试多个初始值,最后选择使J最低的初始值,以防陷入局部收敛。

时间、空间复杂度:

时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为训练样本数,n为维数;

空间复杂度:O((m+K)n),其中,K为簇的数目,m为训练样本数,n为维数。

三、   实例

(1)假设我们的原始数据如图1所示,为没有标注类别的散点。目标是运用k-means算法将这些点划分为两个不同的类。

机器学习之聚类算法第19张

图1

 

(2)随机的初始化两个类的重心(分别利用红蓝亮色的“X”号表示),如图2所示。

机器学习之聚类算法第20张
图2

(3)分别计算所有点和两个重心的距离(一般计算欧几里德距离),每个点和哪个重心最近,就将该点和对应的中心划分到同一个簇中。

机器学习之聚类算法第21张
图3

(4)重新计算每个簇的中心,将原有的中心替换。图4

机器学习之聚类算法第22张

图4

 

(5)不断重复步骤(3)(4)的方法,直到重心收敛,所得到的两个簇就是聚类结果。

机器学习之聚类算法第23张机器学习之聚类算法第24张机器学习之聚类算法第25张

下面是一个身高和体重的散点图,利用k-means算法将散点分为3个类,每个类的人群的分别适合穿着尺寸为S、M、L号的T-shirt。可以看出对于这个问题,k-means算法的聚类效果比较好。

机器学习之聚类算法第26张机器学习之聚类算法第27张
 
 
未完待续......

免责声明:文章转载自《机器学习之聚类算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第144天:PS切图方法总结第15章-解释器及解释器生成器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

常见的加密方式总结

对称加密 DES DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法,加密速度快,但是容易破解安全性低。 3DES(Triple DES) 是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高,加强版DES。 (DES算法比较简单,容易破解已不建议使用) AES(微信用的就是这种加密方式)...

Google的PageRank算法浅析

最近在学习hadoop,对google的pagerank算法先做下了解。搜索到《Google的PageRank算法浅析》一文,受益匪浅。 文章链接:http://blog.codinglabs.org/articles/intro-to-pagerank.html  张洋的博客 文章浅显易懂,思路非常清晰。 第一部分:首先从搜索引擎的难题引入,PageRa...

集束搜索(Beam Search)

简介 部分参考简书文章【Beam Search原理及应用】 和 【Beam_search集束搜索】. 一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。 这样减少了空间消耗,并提高了时间效率,但缺点就是有可能存在潜在的最佳方案被丢弃,因此,Be...

MySQL学习随笔--通过实例理解merge ,temptable算法的差异

实例1 使用视图的两种算法merge和temptable分别统计 表tb_phone中market_price大于4000的手机,然后查询视图查找出小于6000的手机 简单总结最终获取的结果:查询出market_price大于4000且小于6000的手机 表数据: merge合并算法 合并的执行方式,每当执行的时候,先将视图的sql语句与外...

【西瓜书】周志华《机器学习》学习笔记与习题探讨(一)

【第1章 绪论】 1.1 引言 学习算法:机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法”。 学习算法的作用:1.基于提供的经验数据产生模型; 2.面对新情况时,模型可提供相应的判断。 模型:泛指从数据中学得的结果。 学习器:学习算法在给定数据和参数空间上的实例化。                         ...

OpenMP并行编程应用—加速OpenCV图像拼接算法

OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写高效的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和复杂度。也正因为OpenMP的简单易用性,它并不适合于需要复杂的线程间同步和互斥的场合。 OpenCV中使用Sift或者Surf特征进行图像拼接的算法,需要...