聚类的基本思想
俗话说”物以类聚,人以群分”
聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中。簇内的对象越相似,聚类的效果越好。
定义:给定一个有个对象的数据集,聚类将数据划分为个簇,而且这个划分满足两个条件:(1)每个簇至少包含一个对象;(2)每个对象属于且仅属于一个簇。
基本思想:对给定的,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得每一次改进之后的划分方案都较前一次更好。
监督学习(supervised learning):是对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。【神经 络和决策树】
无监督学习(unsupervised learning):是对没有概念标记(分类)的训练样本进行学习,以发现训练样本集中的结构性知识。【聚类】
K-均值(K-means)聚类算法
聚类分析(cluster analysis)试图将相似对象归入同一簇,将不相似对象归到不同簇。
通过上面的图形可清晰的看到,数据被划分成两部分,所以K至少大于2,尽管左右两边的数据被清晰的分开,但每部分数据是否还可以进一步划分成小聚簇呢,从图上看不出来。回顾一下K-Means的思想,每个簇内间距尽可能小,我们尝试使用不同划分数K进行K-Means聚类,看看不同划分的簇内间距变化情况。
wss
for(i in 1:15) wss[i]
plot(wss)
从图中可以观察到,数据被清晰的划分为4个不同的区域。
r语言中使用dist(x, method = “euclidean”,diag = FALSE, upper = FALSE, p = 2) 来计算距离。其中x是样本矩阵或者数据框。method表示计算哪种距离。method的取值有:
euclidean 欧几里德距离,就是平方再开方。
maximum 切比雪夫距离
manhattan 绝对值距离
canberra Lance 距离
minkowski 明科夫斯基距离,使用时要指定p值
binary 定性变量距离.
定性变量距离: 记m个项目里面的 0:0配对数为m0 ,1:1配对数为m1,不能配对数为m2,距离=m1/(m1+m2);
diag 为TRUE的时候给出对角线上的距离。upper为TURE的时候给出上三角矩阵上的值。
四、更进一步
从上面的内容中,我们知道K-Means通过数据间距远近来进行划分操作,对于数值型数据而言,很容易通过欧几里得距离计算数据间的距离,对于分类等类型的数据则无法通过欧几里得距离计算数据的距离。韩家炜教授所著的《数据挖掘 概念与技术》2.4 度量数据的相似性和相异性章节中给出了计算数据间距的具体方法,需要时可按照书中方法进行数据间距计算。
需要说明的是,R语言中的kmeans函数只能接受数值型数据,如果需要对分类等类型的数据进行聚类计算,只能自己实现K-Means算法了,先计算数据距离,然后在编写K-Means算法进行聚类计算。值得一提的是在R语言中使用edit(kmeans)可以查看kmeans方法的源代码,可以参照源代码实现定制的K-Means算法。
欧几里德距离矩阵
cosine
看一个例子(也许不太恰当):歌手大赛,三个评委给三个歌手打分,第一个评委的打分(10,8,9) 第二个评委的打分(4,3,2),第三个评委的打分(8,9,10)
如果采用余弦相似度来看每个评委的差异,虽然每个评委对同一个选手的评分不一样,但第一、第二两个评委对这四位歌手实力的排序是一样的,只是第二个评委对满分有更高的评判标准,说明第一、第二个评委对音乐的品味上是一致的。
因此,用余弦相似度来看,第一、第二个评委为一类人,第三个评委为另外一类。
如果采用欧氏距离, 第一和第三个评委的欧氏距离更近,就分成一类人了,但其实不太合理,因为他们对于四位选手的排名都是完全颠倒的。
总之,如果注重数值本身的差异,就应该用欧氏距离,如果注重的是上例中的这种的差异(我概括不出来到底是一种什么差异……),就要用余弦相似度来计算。
还有其他的一些计算距离的方法,但是都是欧氏距离和余弦相似度的衍生,简单罗列如下:明可夫斯基距离、切比雪夫距离、曼哈顿距离、马哈拉诺比斯距离、调整后的余弦相似度、Jaccard相似系数……
还有一个重要的问题是,大家的单位要一致!
比如X的单位是米,Y也是米,那么距离算出来的单位还是米,是有意义的
但是如果X是米,Y是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”再开平方,最后算出的东西没有数学意义,这就有问题了。
还有,即使X和Y单位一致,但是如果数据中X整体都比较小,比如都是1到10之间的数,Y很大,比如都是1000以上的数,那么,在计算距离的时候Y起到的作用就比X大很多,X对于距离的影响几乎可以忽略,这也有问题。
因此,如果K-Means聚类中选择欧几里德距离计算距离,数据集又出现了上面所述的情况,就一定要进行数据的标准化(normalization),即将数据按比例缩放,使之落入一个小的特定区间。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行计算和比较。
标准化方法最常用的有两种:
min-max标准化(离差标准化):对原始数据进行线性变换,是结果落到【0,1】区间,转换方法为 X’=(X-min)/(max-min),其中max为样本数据最大值,min为样本数据最小值。
z-score标准化(标准差标准化):处理后的数据符合标准正态分布(均值为0,方差为1),转换公式:X减去均值,再除以标准差
每一轮迭代如何选出新的质心/p>
答:各个维度的算术平均,比如(X1,Y1,Z1)、(X2,Y2,Z2)、(X3,Y3,Z3),那就新质心就是【(X1+X2+X3)/3,(Y1+Y2+Y3)/3,(Z1,Z2,Z3)/3】,这里要注意,新质心不一定是实际的一个数据点。
关于离群值/p>
答:离群值就是远离整体的,非常异常、非常特殊的数据点,在聚类之前应该将这些“极大”“极小”之类的离群数据都去掉,否则会对于聚类的结果有影响。但是,离群值往往自身就很有分析的价值,可以把离群值单独作为一类来分析。
用SPSS作出的K-Means聚类结果,包含ANOVA(单因素方差分析),是什么意思/p>
答:答简单说就是判断用于聚类的变量是否对于聚类结果有贡献,方差分析检验结果越显著的变量,说明对聚类结果越有影响。对于不显著的变量,可以考虑从模型中剔除。
参考:https://my.oschina.net/polaris16/blog/801889
http://blog.csdn.net/yucan1001/article/details/23123043
http://www.jianshu.com/p/fc91fed8c77b
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34059 人正在系统学习中 相关资源:本草纲目下载李时珍本草纲目查询软件版v1.4_本草纲目pdf彩图版…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!