机器学习(聚类[一])

来源:互联网 发布:mac怎么关闭窗口 编辑:程序博客网 时间:2024/06/10 12:56

本类博客文章只为自学而写,写错的可以指正,但不要谩骂,本人刚刚开始学习,请见谅。

文章根据于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算法

        

 #装载
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不再发生变化。


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值。