聚类分析之迭代聚类——“K-Means聚类…

鲁棒是Robust,英 [rə(ʊ)'bʌst]的音译,也就是健壮、强壮、坚定、粗野的意思。鲁棒性(robustness)就是系统的健壮性。常使用如:算法的鲁棒性。

算法杂货铺转载学习

http://www.cnblogs.com/leoo2sk/archive/2010/09/20/k-means.html

算法杂货铺——k均值聚类(K-means)

 http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

算法杂货铺——分类算法之决策树(Decision tree)

 

http://www.dataguru.cn/article-3408-1.html

聚类算法实践(一)——层次聚类、K-means聚类

 

聚类之——“软硬”之别

分类标准可以进行不同的分类。就好像人按照性别可以分成男人和女人,按照年龄可以分为老中青一样。

聚类分析如果按照隶属度的取值范围可以分为两类,一类叫硬聚类算法,另一类就是模糊聚类算法隶属度的概念是从模糊集理论里引申出来的。

传统硬聚类算法隶属度只有两个值 0 和 1。也就是说一个样本只能完全属于某一个类或者完全不属于某一个类。举个例子,把温度分为两类,大于10度为热,小于或者等于10度为冷,这就是典型的“硬隶属度”概念。那么不论是5度还是负100度都属于冷这个类,而不属于热这个类的。

模糊集里的隶属度是一个取值在[0 1]区间内的数。一个样本同时属于所有的类,但是通过隶属度的大小来区分其差异。比如5度,可能属于冷这类的隶属度值为0.7,而属于热这个类的值为0.3。这样做就比较合理,硬聚类也可以看做模糊聚类的一个特例。

一些仅为个人倾向的分析(不严谨或不尽规范):所谓的动态模糊分析法我在文献里很少见到好像并不主流,似乎没有专门的这样一种典型聚类算法,可能是个别人根据自己需要设计并命名的一种针对模糊聚类的改进方法。有把每个不同样本加权的,权值自己确定,这样就冠以“动态"二字,这都是作者自己起的。也有别的也叫”动态“的,可能也不一样,似乎都是个别人自己提出的。

 

 

概念:聚类与分类(Classification)有别

 聚类(Clustering,属无监督学习): ['klʌstərɪŋ],聚集,收集;分类归并。
聚类是指根据“物以类聚”的原理,将本身 没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做 ,并且对每一个这样的簇进行描述的过程。
它的目的是使得属于 同一个簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似
与分类规则不同,进行聚类前并不知道将要划分成几个组和什么样的组,也不知道根据哪些空间区分规则来定义组。
其目的旨在发现空间实体的属性间的函数关系,挖掘的知识用以属性名为变量的数学方程来表示。
当前,聚类技术正在蓬勃发展,涉及范围包括数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等领域,聚类分析已经成为数据挖掘研究领域中一个非常活跃的研究课题。
常见的聚类算法包括:K-均值(K-Means)聚类算法、K-中心点聚类算法、CLARANS、BIRCH、CLIQUE、DBSCAN
 
就是把相似的东西分到一组。我们并不关心某一类是什么,实现的目标只是把相似的东西聚到一起。
因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,因此 clustering 通常并不需要使用训练数据进行学习,这在 Machine Learning 中被称作 unsupervised learning ( 无监督学习)。
 
分类 ( Classification   ),则不同,对于一个 classifier ,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 supervised learning (监督学习)。
例:拿来一个新水果,我们按着他的特征,把他分到橘子或者香蕉那类中,叫做分类?

监督学习(supervised learning):简单的说就是有输入和输出学习。
unsupervised :[,ʌn'sju:pəvaizd]无人监督的;无人管理的。

无监督学习(unsupervised learning):简单的说就是有输入没有输出的学习。
 
3.训练集和测试集?
一般就是把数据分成10份,9:1
9份作为训练数据,来学习一个模型;
1份作为测试数据,来测试这个模型。
  1. 聚类
    我们经常接触到的聚类分析,一般都是数值聚类,一种常见的做法是同时提取 N 种特征,将它们放在一起组成一个 N 维向量,从而得到一个从原始数据集合到 N 维向量空间的映射——你总是需要显式地或者隐式地完成这样一个过程,然后基于某种规则进行分类,在该规则下,同组分类具有最大的相似性。
      假设我们提取到原始数据的集合为(x1, x2, …, xn),并且每个xi为d维的向量,K-means聚类的目的就是,在给定分类组数k(k ≤ n)值的条件下,将原始数据分成k类
    S = {S1, S2, …, Sk},在数值模型上,即对以下表达式求最小值:
     
    这里μi 表示分类Si 的平均值。
      那么在计算机编程中,其又是如何实现的呢?其算法步骤一般如下:
    1、从D中随机取k个元素,作为k个簇的各自的中心。
    2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
    3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
    4、将D中全部元素按照新的中心重新聚类。
    5、重复第4步,直到聚类结果不再变化。
    6、将结果输出。
      用数学表达式来说,
    设我们一共有 N 个数据点需要分为 K 个 cluster ,k-means 要做的就是最小化

 

————————————————————————————————

K-Means聚类算法

原文地址:http://blog.sina.com.cn/s/blog_62186b46010145ne.html

四种聚类方法之比较:http://www.cnblogs.com/William_Fire/archive/2013/02/09/2909499.html

深入浅出K-Means算法:http://www.csdn.net/article/2012-07-03/2807073-k-means

K-Means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。
 
K-Means聚类算法主要分为三个步骤:
(1)第一步是为待聚类的点寻找聚类中心
(2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去
(3)第三步是计算每个聚类所有点的坐标平均值,并将这个平均值作为新的聚类中心
(4)反复执行(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止
 
下图展示了对n个样本点进行K-means聚类的效果,这里k取2:
(a)未聚类的初始点集
(b)随机选取两个点作为聚类中心
(c)计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(d)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
(e)重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(f)重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心

 

聚类分析之迭代聚类——“K-Means聚类分析”

 Matlab实现:
详见:http://www.oschina.net/code/snippet_176897_10239



 

 

你可能感兴趣的:(统计分析)