当前位置: 首页 > news >正文

denclue 聚类_六种常用的文本聚类方法介绍

文本聚类算法介绍

分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较,最后将相似度高的归为一类[40]。在分类算法中,训练集为已经标注好的数据集,但是微博文本具有的大数据特性及不确定性决定了标注数据的难度,因此本文选择聚类算法对大量且随机的微博文本进行处理。

大量文本建模后还需要对主题分布进行聚类以得到更精确简洁的话题,因此文本聚类在话题检测技术中具有重要意义。聚类是一种无监督学习方式,目的是把一个数据根据某种规则划分为多个子数据,一个子数据就称为一个聚类。聚类分析在文本分析、商务应用、网页搜索、推荐系统、生物医学等多个领域都有着十分广泛的应用。由于数据应用场合不同,不同的聚类方式侧重点不同,各有优势和缺陷,因此目前没有一个通用的聚类算法。目前聚类主要分为以下几类:基于划分的聚类算法、基于层次的聚类算法、基于密度的聚类算法、基于网格的聚类算法、基于模型的聚类算法以及基于模糊的聚类算法[41]。图2-8为目前主要的聚类算法分类图。

图 2-8 聚类算法分类图

2.4.1 基于划分的聚类算法

基于划分的聚类算法是聚类算法中最为简单的算法,假设有一个数据集 ,其中包含 个子数据,若要将 划分为 个类簇, ,每个类簇中至少含有一个子数据,且类簇之间不会有交集。要达到的要求是簇中的数据之间有较高的相似度,而簇类之间的相似度尽可能地低。经过专家学者的不断研究, K-means算法、Single-Pass增量聚类算法、围绕中心划分(Partitioning Around Mediods,PAM)算法等等都得到了较为广泛的应用。而其中最为经典、应用最多的是K-means算法。

K-means算法又称 均值算法,是一种容易实现且应用广泛的聚类算法,其算法的思想是首先在数据样本集中随机选取 个样本作为簇中心;然后计算样本集中其他样本与这 个簇中心的距离,距离通常利用曼哈顿距离、欧式距离等来度量,再根据设定的阈值将每个样本划分到与其距离最近的簇中心所在的簇中;最后根据新划分的簇重新计算距离,将簇中所含样本的距离均值作为更新簇的中心,再重复计算距离直到达到条件。K-means算法最关键的就是确定 的个数[42]。

基于划分的聚类算法对于大部分数据都有较强的适用性,且计算简单高效,空间复杂度较低,但是在处理大规模样本时结果多数是局部最优,对于类簇中心选取也十分敏感并且无法解决非凸数据。

2.4.2 基于层次的聚类算法

层次聚类算法(Hierarchical Clustering,HC)又称为树聚类算法[43]。主要思想是将样本集合合并或者分裂成凝聚度更高或者更细致的子样本集合,最终样本集合形成一棵层次树。同K-means算法不同,层次聚类算法不需要预先设定聚类数 ,只要样本集合通过不断迭代达到聚类条件或者迭代次数即可。基于层次划分的经典聚类算法有:变色龙算法、AGNES(Agglomerative NE Sting)、CURE(Clustering Using RE Presentatives)等。根据聚类的方向基于层次的聚类算法可以分为凝聚式和分裂式,凝聚式是将簇结合起来,而分裂式则是将大的类簇分为小类。

(1)凝聚式层次聚类算法

凝聚式层次聚类(Hierarchical Agglomerative Clustering,HAC)顾名思义是凝聚数据样本,它的聚类方向是从子数据向上不断合并,该算法经常运用于话题检测中。凝聚式层次聚类首先从底部分散的单个样本开始依次计算与其他样本的距离,然后选择距离最小样本并与其合并成一个新的样本集,再重复上述过程直到形成一个包含所有样本的簇,或者达到迭代次数。凝聚式层次聚类只需要计算样本之间的距离然后合并,该方法计算简单,但是如果数据样本太大则算法复杂度会呈指数级增长,且已合并的操作无法逆转。

(2)分裂式层次聚类算法

分裂式层次聚类与凝聚式层次聚类处理样本数据的方向是相反的,它是将整个数据样本看作一个大类簇,然后根据距离公式或其他原则将大的类簇分为小的类簇,不断迭代直到将所有的样本数据分类到单独的类簇中或者是达到迭代次数。层次聚类被公认为是能够产生较好质量的聚类结果的聚类算法[44]。此算法缺点是已操作不能撤回,对于大量数据样本时间复杂度高。

2.4.3 基于密度的聚类算法

基于密度的聚类算法的主要思想是首先找出密度较高的点,然后把周围相近的密度较高的样本点连成一片,最后形成各类簇。基于密度的聚类比较代表性的三种方法有:Ester等提出的DBSCAN[45]方法、Ankerst 等提出OPTICS[46]方法和 Hinneburg 提出的 DENCLUE[47]技术。此类算法的优点是鲁棒性很强,对于任意形状的聚类都适用,但是结果的精度与参数设置关系密切,实用性不强。

2.4.4 基于网格的聚类算法

与其他聚类算法相比较,基于网格的聚类算法出发点不再是平面而是空间。在该空间中,有限个网格代表数据,聚类就是按一定的规则将网格合并。Wang等人提出的STING算法[48]及其改进算法、Agrawa等人提出的CLIQUE算法l[49]等都是较为经典的基于网格的算法。基于网格的聚类算法由于处理数据时是独立的,仅仅依赖网格结构中每一维的单位数,因此处理速度很快。但是此算法对参数十分敏感,速度快的代价是精确度不高,通常需要与其他聚类算法结合使用。

2.4.5 基于模型的聚类算法

基于模型的聚类算法的思路是假设每个类簇为一个模型,然后再寻找与该模型拟合最好的数据,通常有基于概率和基于神经网络两种方法。概率模型即概率生成模型,是假设数据是由潜在的概率分布产生的,典型的算法是高斯混合模型(Gaussian Mixture Models,GMM)[50];而来自芬兰的神经网络专家提出的自组织映射(Self Organized Maps,SOM)是典型的神经网络模型[51]。对类簇而言,基于模型的聚类算法是用概率形式呈现,每个类的特征也可以直接用参数表示,但是与其他聚类方法相比,这类聚类方法在样本数据量大的时候执行率较低,不适合大规模聚类场合。

2.4.6 基于模糊的聚类算法

基于模糊的聚类算法主要是为了克服非此即彼的分类缺陷,它的主要思想是以模糊集合论作为数学基础,用模糊数学的方法进行聚类分析。此方法的优点在于对于满足正态分布的样本数据来说它的效果会很好,但是此算法过于依赖初始聚类中心,为确定初始聚类中心需要多次迭代以寻找最佳点,对于大规模数据样本来说会大大增加时间复杂度。

上述的聚类方法各有千秋,在面对不同的数据集时能起到不同的作用,在参考韩威等[52]的文献之后列出表2-2直观展示几种主要算法在性能方面的差异。

表2-2 几种常用聚类算法对比

聚类算法
处理大规模数据能力
处理高维数据能力
发现任意形状簇的能力
数据顺序敏感度
处理噪声能力
基于层次的方法

较强

不敏感
较弱
基于划分的方法
较弱

较强
不敏感

基于密度的方法
较强


不敏感

Single-pass算法


较强
敏感

从表2-2可以直观地看出,对于初始无法确定主题个数且大规模的微博短文本来说,Single-Pass增量算法更适合。但是Single-Pass增量算法对于数据输入时的顺序十分敏感,并且计算复杂度随着数据的增大而增多,因此本文采用改进的Single-Pass增量算法对话题进行检测。经过改进的Single-Pass增量算法处理后的文本凝聚度相对较高,维度相对较低,再采用适合处理这类文本的凝聚式层次聚类进行话题合并以得到热点话题。通过结合Single-Pass增量算法与凝聚式层次聚类算法,对大量微博短文本进行处理提取出热点话题,能有效提高效率,同时得到更精确的热点话题。

相关文章:

  • python函数操作逻辑_python(五)逻辑运算,函数
  • daoi php_php 广告加载类
  • 参考文献起止页码怎么写_会议论文的参考文献格式
  • css 右上角 翻开动画_「冷知识」为什么不要随意操作 CSS?
  • 熊出没机器人光头强_《熊出没》五大兵器,天才威与光头强的战斗机器人谁更厉害?...
  • 北邮 复习 软件工程_重磅!厦大、北邮改考408!反向抄底厦大,面朝大海?
  • ambari hdfs 启动报错_HDFS这些问题你会处理吗?
  • cvc 降噪_耳机降噪技术-ANC、ENC、DSP、CVC
  • 怎么看mmdetection版本_kaggle notebook运行mmdetection并提交结果采坑记
  • matlab hsi图像分割_图像分割之阈值分割(matlab)
  • imx6 配置串口波特率_STM32F103 串口的使用方法
  • 十天征服单片机百度云_单片机学习「1」 初始51单片机
  • jpa删除数据后数据库无修改_Java编程第46讲——强大、奇妙的数据库操作工具JPA...
  • 有赞小程序源码_有赞小程序商城怎么开通,如何收费?
  • docker pycharm 连接_七、连Pycharm都不知道怎么用,学什么Python
  • 分享一款快速APP功能测试工具
  • 2019.2.20 c++ 知识梳理
  • create-react-app做的留言板
  • JavaScript对象详解
  • JS字符串转数字方法总结
  • ng6--错误信息小结(持续更新)
  • Python学习笔记 字符串拼接
  • tab.js分享及浏览器兼容性问题汇总
  • VUE es6技巧写法(持续更新中~~~)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 百度小程序遇到的问题
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 关于extract.autodesk.io的一些说明
  • 记一次用 NodeJs 实现模拟登录的思路
  • 离散点最小(凸)包围边界查找
  • 前嗅ForeSpider采集配置界面介绍
  • 网络应用优化——时延与带宽
  • 温故知新之javascript面向对象
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​​​​​​​​​​​​​​Γ函数
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 透过事物看本质的能力怎么培养?
  • #NOIP 2014# day.1 T2 联合权值
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (南京观海微电子)——I3C协议介绍
  • (三)终结任务
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)Android布局类型(线性布局LinearLayout)
  • (已解决)什么是vue导航守卫
  • (转) Face-Resources
  • (转)C#调用WebService 基础
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在