楼主: hongyuanshi
8012 1

MATLAB 聚类 [推广有奖]

  • 0关注
  • 1粉丝

高中生

30%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
1.6178
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
262 点
帖子
47
精华
0
在线时间
1 小时
注册时间
2009-7-22
最后登录
2011-5-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
数据挖掘--聚类方法(1)
[ 2009-5-4 12:43:00 | By: awentang ]
  
聚类就是将数据对象分组成多个类或者簇,划分的原则是在同一个粗中的对象之间具有较高的相似度,而不同簇中的对象差别较大。属于一种无指导的学习方法。
  好的聚类算法应该满足以下几个方面:
(1)       可伸缩型:无论对小数据量还是大数据量应该都是有效的。
(2)       具有处理不同类型属性的能力。
(3)       能够发现任意形状的聚类。
(4)       输入参数对领域知识的弱依赖性
(5)       对于输入记录顺序不敏感
(6)       能够处理很多维度的数据,而不止是对3维左右的数据有效
(7)       处理噪声数据的能力
(8)       基于约束的距离:既能找到满足特定的约束,又具有良好聚类特性的数据分组
(9)       挖掘出来的信息是可理解的和可用的。
聚类分析主要在以下几个方面应用:
(1)       可以作为其他算法的预处理步骤
(2)       可以作为一个独立的工具来获得数据的分布情况
(3)       可以完成孤立点挖掘,用来预示欺诈行为的存在。
基本概念
聚类分析的输入可以用一组有序对(X,s)或(X,d)表示,这里X表示一组样本,s和d分别是度量样本间相似度或相异度(距离)的标准。聚类系统的输出是一个分区C={C1,C2,…,Ck},其中Ci是X的子集,成为类。类的特征可以用如下几种方式表示:
2        通过类的中心或类的边界点表示一个类。
2        使用聚类树中的结点图形化地表示一个类。
2        使用样本属性的逻辑表达式表示类。
聚类分析的方法:
      聚类分析有很多大量的、经典的算法,比如k-平均、k-中心点、PAM、CLARANS, BIRTH,CURE,OPTICS,DBSCAN,STING,CLIQUE,WAVECLUSTER等。
度量标准:
   一个聚类分析过程的质量取决于对度量标准的选择,因此必须仔细选择度量标准。(1)距离函数
2        明可夫斯基距离:
       x, y 是相应的特征,n是特征的维数。则明可夫斯基距离d(x,y)表示如下
              ,r=2为欧式距离。
2        二次型距离:

2        余弦距离

2        二元特征样本的距离
       假定x和y分别是n维特征,xi和yi分别表示每维特征,且xi和yi的取值为二元类型数值{0,1}。则x和y的距离定义的常规方法是先求如下几个参数,然后采用SMC、Jaccard系数或Rao系数。
       a是样本x和y中满足 xi=yi=1的二元类型属性的数量
       b是样本x和y中满足xi=1,yi=0的二元类型属性的数量
       c是样本x和y中满足xi=0,yi=1的二元类型属性的数量
       d是样本x和y中满足xi=yi=0的二元类型属性的数量
       则简单匹配系数(Simple Match Coefficient, SMC)的公式如下:

       Jaccard系数:

       Rao系数:


              (2)类间距离   
       设有两个类Ca和Cb,分别有m和n个元素,他们的中心分别为ra和rb。设元素x属于Ca,y属于Cb,这两个元素之间的距离记为d(x,y),类间距记为D(Ca,Cb)。
2        最短距离法:类中最靠近的两个元素的距离为类间距离:
2        最长距离法:类中最远的两个元素的距离为类间距离
2        重心法:类中两个中心点间的距离为类间距离。因此就需要定义类中心,类中心的定义:

2        类平均法:两个类中任意两个元素之间的距离相加后取平均值。
2        离差平方和:用到了类直径,类直径反应了类中各元素的差异,可以定义为各元素到类中心的欧式距离之和,这样就得到了Ca,Cb,Ca+b的直径分别为ra,rb,ra+b,那么类间距为ra+b – ra - rb。
划分聚类方法
层划分聚类算法的基本思想
       给定一个有n个对象的数据集,划分聚类技术将构造数据k个划分,每一个划分就代表一个簇,k<=n。 这k个划分满足下列条件:
2        每个簇至少包含一个对象
2        每个对象属于且仅属于一个簇
     对于给定的k,算法首先给出一个初始的划分方法,以后通过迭代来改变划分,是得每一次改进之后的划分方案都较前一次更好。所谓更好的标准时是:同一个簇中的对象越接近越好,不同簇之间的对象越远越好。目标是最小化所有对象与其参考点之间的相异度之和。这里的远近或者相异度/相似度实际上是聚类的评价函数。

评价函数:
     评价函数应该考虑里两个方面:每个簇应该是紧凑的,每个簇间的距离应该尽可能地远。这就需要观察两个值:类内差异和类间差异。类内差异可以采用多种距离函数来定义,最简单的就是计算类内的每一个点到类中心的距离的平方和,一般用w(C)表示。类间差异定义为类中心之间的距离,一般用b(C)表示。
K-means算法
     首先随机地选择k个对象,每个对象处划地代表了一个簇的平均值或中心。对剩余的每个对象根据其与各个簇中心的距离,将它赋给最近的簇。然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。准则如下:

     准则函数其实就是所有对象的平法误差的总和,这个准则试图试生成的结果簇尽可能地紧凑和独立。

算法描述:
     输入:簇的数目k和包含n个对象的数据库
     输出:k个簇,是平方误差准则最小
(1)       任意选择k个对象作为初始的簇中心
(2)       Repeat
(3)           根据簇中对象的平均值,将每个对象赋给最类似的簇
(4)           更新簇的平均值,即计算每个对象簇中对象的平均值
(5)           计算准则函数
(6)       Until E不再明显地发生变化

算法性能:
优点:
(1)       简单、快速
(2)       对大数据集,是可伸缩和高效率的。
(3)       算法尝试找出使平方误差函数值最小的k个划分。当结果簇是密集的,而簇与簇之间区别明显的时候,效果较好。
缺点:
(1)       不适合分类属性的数据
(2)       必须给定k,对初始值k比较敏感
(3)       不适合发现非凸面形状的簇,对噪声和孤立点数据是敏感的。

改进措施:
(1)k-模算法,可以对离散属性计算
(2)不采用簇中的平均值作为参考点,而选用簇中位置最靠近中心的对象。这样可以避免孤立点的影响。
PAM算法(也称k-中心点算法)
       PAM算法需用簇中位置最靠近中心的对象作为代表对象,然后反复地用非代表对象来代替代表对象,试图找出更好的中心点,在反复迭代的过程中,所有可能的“对象对”被分析,每个对中的一个对象是中心点,另一个是非代表对象。一个对象代表可以被最大平方-误差值减少的对象代替。
       一个非代表对象Oh是否是当前一个代表对象Oi的一个好的替代,对于每个非中心点对象Oj,有以下四种情况需要考虑:
(1)       Oj当前隶属于Oi,如果Oi被Oh替换,且Oj离另一个Om最近,i!=m,那么Oj被分配给Om,则替换代价为Cjih=d(j,m)-d(j,i)。
(2)       Oj当前隶属于Oi,如果Oi被Oh替换,且Oj离Oh最近,那么Oj被分配给Oh,则替换代价为Cjih=d(j,h)-d(j,i)。
(3)       Oj当前隶属于Om,m!=i,如果Oi被Oh替换,且Oj仍然离Om最近,那么Oj被分配给Om,则替换代价为Cjih=0。
(4)       Oj当前隶属于Om,m!=i,如果Oi被Oh替换,且Oj离Oh最近,那么Oj被分配给Oh,则替换代价为Cjih=d(j,h)-d(j,m)。
然后计算

       如果 为负,则可以替换。
算法描述:
输入:簇的数目k和包含n个对象的数据库
输出:k个簇,使得所有对象与其最近中心点的相异度总和最小
(1)       任意选择k个对象作为初始的簇中心点
(2)       Repeat
(3)          指派每个剩余对象给离他最近的中心点所表示的簇
(4)          Repeat
(5)            选择一个未被选择的中心点Oi
(6)            Repeat
(7)              选择一个未被选择过的非中心点对象Oh
(8)              计算用Oh代替Oi的总代价并记录在S中
(9)                Until 所有非中心点都被选择过
(10)     Until 所有的中心点都被选择过
(11)   If 在S中的所有非中心点代替所有中心点后的计算出总代价有小于0的存在,then找出S中的用非中心点替代中心点后代价最小的一个,并用该非中心点替代对应的中心点,形成一个新的k个中心点的集合;
(12)   Until 没有再发生簇的重新分配,即所有的S都大于0.

算法性能:
(1)    消除了k-平均算法对于孤立点的敏感性。
(2)    K-中心点方法比k-平均算法的代价要高
(3)    必须指定k
(4)    PAM对小的数据集非常有效,对大数据集效率不高。特别是n和k都很大的时候。
****************************************************************************
数据挖掘——聚类算法(2)
[ 2009-5-4 12:46:00 | By: awentang ]
  
其他算法
1.       CLARA(Cluster Larger Application)是基于k-中心点类型的算法,能处理更大的数据集合。CLARA先抽取数据集合的多个样本,然后用PAM方法在抽样的样本中寻找最佳的k中心点,返回最好的聚类结果作为输出。但不然k-中心点准确,CLARA准确度取决于抽样算法。
2.       CLArANS(Cluster Larger Application baed upon RANdomized search,随机搜索聚类算法),另一种k-中心点的算法,与CLARA类似采用抽样方法,但也有不同:CLArANS在搜索的每一步都带一定随机性地选取一个样本。
层次聚类方法
层次聚类分为两种:
(1)       凝聚的层次聚类:自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为更大的簇,直到所有的对象都在同一个簇中,或者满足终止条件。
(2)       分类的层次聚类:自顶向下的策略。
AGNES算法
       AGNES(Agglomerative Nesting) 是凝聚的层次聚类算法,如果簇C1中的一个对象和簇C2中的一个对象之间的距离是所有属于不同簇的对象间欧式距离中最小的,C1和C2可能被合并。这是一种单连接方法,其每个簇可以被簇中的所有对象代表,两个簇之间的相似度由这两个簇中距离最近的数据点对的相似度来确定。

       算法描述:
              输入:包含n个对象的数据库,终止条件簇的数目k
              输出:k个簇
(1)       将每个对象当成一个初始簇
(2)       Repeat
(3)                根据两个簇中最近的数据点找到最近的两个簇
(4)                合并两个簇,生成新的簇的集合
(5)       Until达到定义的簇的数目
       算法性能:
(1)       简单,但遇到合并点选择困难的情况。
(2)       一旦一组对象被合并,不能撤销
(3)       算法的复杂度为O(n的平方),不适合大数据集计算DIANA算法
       DIANA(Divisive Analysis)算法属于分裂的层次聚类,首先将所有的对象初始化到一个簇中,然后根据一些原则(比如最邻近的最大欧式距离),将该簇分类。直到到达用户指定的簇数目或者两个簇之间的距离超过了某个阈值。
       DIANA用到如下两个定义:
(1)       簇的直径:在一个簇中的任意两个数据点都有一个欧氏距离,这些距离中的最大值是簇的直径
(2)       平均相异度(平均距离):

       算法描述:
              输入:包含n个对象的数据库,终止条件簇的数目k
              输出:k个簇,达到终止条件规定簇数目
(1)       将所有对象整个当成一个初始簇
(2)       For ( i=1;i!=k;i++) Do Begin
(3)         在所有簇中挑选出具有最大直径的簇;
(4)           找出所挑出簇里与其他点平均相异度最大的一个点放入splinter group,剩余的放入old party中。
(5)           Repeat
(6)             在old party里找出到splinter group中点的最近距离不大于old party中点的最近距离的点,并将该点加入splinter group
(7)           Until 没有新的old party的点被分配给splinter group;
(8)       Splinter group 和old party为被选中的簇分裂成的两个簇,与其他簇一起组成新的簇集合
(9)       END
       算法性能:
              缺点是已做的分裂操作不能撤销,类之间不能交换对象。如果在某步没有选择好分裂点,可能会导致低质量的聚类结果。大数据集不太适用。

其他算法
       层次聚类方法比较简单,但是经常遇到的一个问题,就是在合并或分裂点选择困难的问题。一个有希望的改进方向是将层级聚类和其他聚类技术进行集成,形成多阶段聚类。
(1)       BIRCH算法
       BIRCH(利用层次方法的平衡迭代规约和聚类)是一个总和的层次聚类方法,
(2)       CURE算法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab Atl Lab MATLAB

云青青兮欲雨,水澹澹兮生烟
沙发
zh102102 发表于 2009-8-23 20:19:21 |只看作者 |坛友微信交流群
多谢小强!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 05:42