本类博客文章只为自学而写,写错的可以指正,但不要谩骂,本人刚刚开始学习,请见谅。
文章根据于http://blog.csdn.net/suipingsp/article/details/42495317,万分感谢非常好的文章
一、什么是聚类
算法起源于分类学,物以类聚,人以群分。人们在以前都是靠经验来分类,但是当东西一多,就很难再进行靠经验和知识进行分类而且分类的不准,所以利用数学进行定量的分类。
二、聚类的作用
数据挖掘,我们可以通过聚类来分别出不同的人群,概括出每一类消费者的消费模式。
三、聚类的分类
1、划分法:
K-MEANS算法、K-MEDOIDS算法、CLARANS算法
2、层次法:
凝聚型层次聚类算法[8]、基于模型方法中的神经网络[9]聚类算法
3、密度算法:
DBSCAN算法、OPTICS算法、DENCLUE算法
我们要了解的基本的的聚类方法有 k-Means算法、期望最大化算法(Expectation Maximization,EM)、谱聚类算法以及人工神经网络算法。
四、k-means算法
![](https://i-blog.csdnimg.cn/blog_migrate/0ab3e1770291ebdde5cfaf295d085f37.gif)
#装载
1、首先,随机地 选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛。
2、mean有平均数的意思,k-means算法根据其文字上的意思就是把一组数据平均的分成k分,但更严谨的讲并不是这样:k-均值(k-means)聚类算法之所以称之为k-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含子数据集样本特征的均值计算而成。
3、K-均值聚类算法需要数值型数据来进行相似性度量,也可以将标称型数据映射为二值型数据再用于度量相似性,其优点是容易实现,缺点是可能收敛到局部最小值,在大规模数据集上收敛较慢。
4、输入n个对象(我们实际中的对象可不只是int这样1,2,3这样的数据,所以我们说是一个一个的对象)、要分类的簇的数目k。
输出k个簇---->这些簇的要求是:使他们平方的误差最小(SSE)
5、步骤:
(1) 任意选择k个对象作为初始的簇中心;
(2) repeat;
(3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
(4) 更新簇的平均值,即计算每个簇中对象的平均值;
(5) until不再发生变化。
(2) repeat;
(3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
(4) 更新簇的平均值,即计算每个簇中对象的平均值;
(5) until不再发生变化。
6、算法过程:
1、特征值处理:
K-均值聚类算法需要数值型数据来进行相似性度量,也可以将标称型数据映射为二值型数据再用于度量相似性。
另外,样本会有多个特征,每一个特征都有自己的定义域和取值范围,他们对distance计算的影响也就不一样,如取值较大的影响力会盖过取值较小的参数。为了公平,样本特征取值必须做一些scale处理,最简单的方式就是所有特征的数值都采取归一化处置,把每一维的数据都转化到0,1区间内,从而减少迭代次数,提高算法的收敛速度。
2、k值的选定
当k的数目低于真实的簇的数目时,SSE(或者平均直径等其他分散度指标)会快速上升。所以可以采用多次聚类,然后比较的方式确定最佳k值。多次聚类,一般是采用 k=1, 2, 4, 8... 这种二分数列的方式,通过交叉验证找到一个k在 v/2, v 时获取较好聚类效果的v值,然后继续使用二分法,在 [v/2, v] 之间找到最佳的k值。