热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

高维数据的聚类算法

实验室周汇报,刚好轮到讲子空间聚类,上网查了一下,发现文章特别少,于是决定把我这几天查到的资料共享一下。中间部分是我自己的理

      实验室周汇报,刚好轮到讲子空间聚类,上网查了一下,发现文章特别少,于是决定把我这几天查到的资料共享一下。中间部分是我自己的理解,文章后面放了ppt的pdf版本。

下面就开始了.....

      聚类算法是人工智能、数据挖掘等领域的关键技术之一,有着广泛的应用。随着大数据时代的到来,产生了大量不一致数据、混合类型数据和部分值缺失的数据等。典型的聚类算法对这些数据集聚类时遇到难题。例如在高维稀疏数据中,簇类只存在部分属性构成的子空间中,这些数据集从全维空间来讲根本不存在簇类。一般来说,样本之间的差异往往是由若干个关键的特征所引起的,如果能恰当的找出这些重要特征,对建立合理的聚类或分类模型都将起到积极的作用。因此提出了子空间聚类。

      子空间聚类算法是指把数据的原始特征空间分割为不同的特征子集,从不同的子空间角度考察各个数据簇聚类划分的意义,同时在聚类过程中为每个数据簇寻找到相应的特征子空间。总得来说,子空间聚类的任务主要有两个:1)发现可以聚类的子空间(属性子集);2)在相应的子空间上聚类。子空间聚类算法实际上是将传统的特征选择技术和聚类算法进行结合,在对数据样本聚类划分的过程中,得到各个数据簇对应的特征子集或者特征权重。根据目前的研究结果,子空间聚类可以分为硬子空间聚类和软子空间聚类两种形式。两者之间的区别是什么呢,下面进行解释。

       硬子空间聚类算法能识别不同类所在的精确子空间,与硬子空间聚类不同的是,软子空间聚类不需要为每一个类找到精确的子空间,而是给每个类的特征赋予不同的权值,利用这些权值来衡量每维特征在不同类中的贡献,即软子空间聚类为每类找到一个软子空间。简单地说,硬子空间聚类中,一个属性必须且只能属于一个子空间,聚类在这些子空间中进行,属性在每个子空间中的权值要么是0,要么是1。软子空间聚类是在全维空间对整个数据集聚类,每个子空间包含所有属性,但是每个属性被赋予[0,1]不同的权值,属性权值描述了属性与对应子空间之间的关联程度,权值越大说明该属性在这个子空间越重要,与该子空间的关联性也就越强。


      更具体而言,根据搜索方式的不同,硬子空间聚类方法又可分为自底向上的子空间搜索算法和自顶向下的子空间搜索算法;对于软子空间聚类方法而言,根据特征加权系数不确定性表示方式的不同,可以分为模糊加权软子空间聚类和熵加权软子空间聚类。

      首先来介绍一下硬子空间聚类中的自底向上子空间聚类算法。

     自底向上子空间聚类算法一般都是基于网格密度,采用自底向上搜索策略进行的子空间聚类算法。它先将原始特征空间分为若干个网格,再以落到某网格中样本点的概率表示该子空间的密度情况。对于密度超过一定阈值的子空间作为密集单元进行保留,而对非密集子空间进行舍弃。经典的自底向上子空间聚类方法有最早的静态网格聚类算法CLIQUE。CLIQUE算法采用了基于网格和密度的方法。首先对每个属性进行等分,整个数据空间就被分成一个超长方体集合,对每个单元进行数据点计数,大于某个阈值的单元称稠密单元,然后对稠密单元进行连接构成类。算法按如下:

优点:
CLIQUE算法可自动发现最高维的子空间。CLIQUE对元组的输入顺序不敏感,无需假设任何规范的数据分布。算法随输入数据的大小线性地扩展。当数据维数增加时具有良好的可伸缩性。
缺点:

CLIQUE算法应用了一种剪枝技术来减少密集单元候选集的数目,但可能遗失一些密集。如果一个密集存在于k维空间中,那么它的所有子空间映射都是密集的。在自底向上的算法中,为了发现一个k维的密集所有的子空间都应该被考虑,但如果这些子空间在被剪掉的空间中,那么这个密集就永远不可能发现了。由于算法中的很多步骤都大大简化,以及很多步骤用的是近似算法,所以聚类结果的精准性可能会降低。

      那么接下来就是硬子空间聚类的自顶向下子空间聚类算法。

      自顶向下子空间聚类算法主要是基于数据投影技术,运用迭代搜索策略进行的子空间聚类方法。投影聚类就是将空间数据投影到某若干维上,将高维数据转换为低维子空间,在低维子空间上根据数据间的相似性进行聚类。具体而言,首先将整个样本划分为C个数据簇,对于每个数据簇赋予相同的权值,并为每一类的各个特征赋予不同权重。然后利用迭代策略对这些初始化分不断进行改进和更新,产生新的权重和聚类划分。由于在大规模数据集中,多次迭代所需的计算复杂度相对高,因此,这类算法通常利用采样技术提高其算法的性能。PROCLUS是最早且最经典的自顶向下子空间聚类算法。PROCLUS算法首先选取整个样本集的小部分数据作为初始样本,再从中选取C个聚类中心通过迭代策略对数据簇的质量进行改进。其执行过程分为三个阶段:

a.初始化阶段:对整个数据集进行随机抽样,利用贪心策略得到一个潜在中心点集合的超集M,并且保证每个数据簇至少包含一个样本点在这个超集中;

b.迭代阶段:从超集M中随机选择C个聚类中心,将随机抽取到的新中心替换当前集合中不好的样本点,直到获得更优的中心点集。然后按照上述过程反复迭代,直到所得的聚类中心点的集合达到稳定。同时,以各个子空间包含的样本点到其对应的聚类中心的平均距离作为该数据簇的半径,找到各个数据簇对应的特征子集;

c.改进阶段:对每个数据簇的聚类中心再次进行扫描以确定其对应的特征子集,并在该特征子集上计算样本点到聚类中心的曼哈顿距离,进行新的划分,同时去掉孤立点。

实验结果表明,PROCLUS算法适合发现超球面形状的数据簇,但PROCLUS算法在聚类过程中,需要确定三个参数:簇的数量、簇的平均维数、最小偏差;所以PROCLUS算法对数据集的参数设置比较敏感,但由于PROCLUS算法使用了采样技术,在聚类速度方面要明显由于CLIQUE算法。

      好的,硬子空间聚类算法就讲到这里。下面来介绍软子空间聚类算法。首先先引入一个基本算法模糊c均值聚类算法简称FCM,这个算法是在K-means的基础上进行改进的。如果不太了解k-means的建议先去看一下k-means算法,不难,以后的讲解全都是基于已经掌握了k-means的基础上。

 

FCM其实就是在k-means的基础上加入了模糊这个概念。解释一下模糊这个概念,指的是一个对象可以以不同程度同时属于多个类。举个例子,比如说点A可以既属于簇类1也属于簇类2,但是属于簇类1的概率为0.8,属于簇类2的概率为0.2。这也是软硬子空间聚类的最本质区别。在硬子空间中,点A仅也只能属于一个簇类。那么FCM算法的原理是通过优化目标函数得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到自动对样本数据进行分类的目的。C指的是聚类的数目。模糊的程度用模糊函数   表示。集合X中的元素x对簇A的隶属程度。

      FCM算法的输入:一个待聚类的数据集X,每个数据有p个特征。
                       输出:1)一个c行n列的隶属阵U;c是聚类数目,n是数据集中元素的个数
                                     矩阵U可以表示分类的结果,Uij表示第j个样本点隶属于第i类的概率

                                 2)聚类中心向量V,c行p列

    

下面用例子解释一下。左边的图表示属于为188个数据点,数据有2个属性,需要聚成4个簇。右边的图解释了隶属阵U。横坐标表示这188个点,纵坐标的范围是0-1。对于每一个数据点而言,对于每一个簇的隶属度之和=1。

那么,FCM算法的目标函数是:

                                                  

含义:各个点到各个聚类中心的距离之和。Uij表示隶属度值,元素j对类别i的隶属程度;m是一个模糊化程度的参数,也叫模糊加权指数;dij表示在欧式距离下元素j与中心点i之间的距离,dij=xj-vi。

聚类要达到的最终效果就是类内相似度最小,类间相似度最大,这个时候点和中心的加权距离之和达到最小。那么要成立。

对于有约束条件的求极值问题,一般使用拉格朗日乘子法解决。
基本的拉格朗日乘子法就是求函数f(x1,x2,...)在约束条件g(x1,x2,...)=0下的极值的方法。

构造一个约束条件:

                                   

 

拉格朗日函数:

                     

利用数学方法进行求导计算,这里我就不放计算过程了,不是很难。得到U和V的最优解:

                              

这里已经得到了U与V的最优解,只需要不停地进行迭代就可以了。

 

下面说说FCM中m的取值

当m=1时,目标函数就是类内加权均方误差和函数。m影响目标函数的凹凸性,控制着聚类的模糊性即控制着样本在模糊类间的分享程度。因此m的取值必然会对模糊聚类的性能产生重要的影响。最佳取值范围在[1.5,2.5]之间。

FCM中c的取值

我们都知道聚类的目的就是将数据分类并尽量使类间的距离尽可能的大而类内的数据点距离尽可能的小。
 

总体样本的中心向量为:

                                     

聚类数c的自适应函数:

举个栗子:

好的,趁热打铁,接下来我们就需要引进模糊加权聚类算法(FWSC)。

目标函数:

代表特征模糊加权指数。

与FCM算法比较,多了一个特征加权系数矩阵。对每一个簇类的每一个特征都加了一个系数,扩大了某些重要特征对簇类的影响程度。经过计算可以得到:

算法与FCM的过程一样,只是多了一个模糊特征加权指数。

好的,下面来介绍软子空间聚类算法中的熵加权子空间聚类算法(EWSC)。在介绍这个算法之前,首先介绍一下信息熵这个概念。

         Ent(D)的值越小,则D的纯度越高

对于软子空间的信息熵为:

                                      

目标函数:

是熵加权指数,EWSC表示利用熵表示第k个数据特征对第i个数据簇的不确定程度。

通过计算可以得到:

算法与FCM类似。

那么对于FWSC,EWSC算法,模糊加权指数,特征加权指数,熵加权指数取多少合适呢,这个由于过程太过复杂,而且还涉及一些其他的聚类算法,就不一一介绍,但是给出了一个范围。

                                  

满足这两个条件时,算法效果可以达到最佳。

最后来说一下这两个算法的优缺点。软子空间聚类技术基本思想是,给数据集中的各类别赋予不同的特征权重向量,用来表示聚类过程中各特征对此类别贡献的大小.在聚类过程中,每一维特征对各个类别都有不同的贡献,因此每一类都有不同的特征权重向量,从而在整个特征空间中形成了若干个“软子空间”,聚类过程就是在各个“软子空间”中进行的。与其他子空间聚类算法相比,熵加权软子空间聚类算法EWSC 对于文本和基因等高维数据均可以得到更好的聚类结果。但观察已有的软子空间聚类算法可以发现,FWSC 和EWSC 只有在获得全部数据样本到当前聚类中心的模糊隶属度以后,才迭代更新得到新的聚类中心和特征加权系数。

 


推荐阅读
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 杭州PHP大厂有哪些(2023年最新分享)
    导读:今天编程笔记来给各位分享关于杭州PHP大厂有哪些的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 浙江大学2005–2006学年秋冬季学期《大学计算机基础》课程期末考试试卷开课学院:计算中心,考试形式:闭卷,允许带入场考试 ... [详细]
  • PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)...
    主讲人网神(新浪微博:豆角茄子麻酱凉面)网神(66707180)18:57:18大家好,今天我们讲一下第14章combiningmodel ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 应用场景当遇到数据分类,聚类,预测等场景问题,普通的SQL方法无法解决,需要借助算法这件武器,比如聚类算法,分类算法,预测算法等等,但是手动去研究一个算法比较吃力,有没有那种工具, ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • 设计完成后,将所完成的作品交由老师检查。管理进程接收申请进入的信号,在消息队列中取下申请进入队列的用户进程的信息,针对当前临界区状态,写一个回馈信息 ... [详细]
  • 从事办公文书的朋友们是否有过这样的感触:为了编辑的方便有时需要自己制作好的Word方案转为PDF格式,然后再分享给他人阅读,那么如何将Word完整地转换为PDF呢?这里笔者将自己总 ... [详细]
author-avatar
手机用户2602925875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有