聚类系列-概述

         本系列要讲解一下本人这一段时间工作中 使用聚类来做的一些事情,第一次写博客大家不喜勿喷,有错误请及时指出,本人一定改正。

         聚类,在百度百科中的介绍是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程,其实在我们NLP领域所说的聚类跟这个如出一辙。聚类是一种无监督(unsupervised)的机器学习方法,何为无监督,最简单的理解就是不需要你标注训练的语料,直接将你要做聚类的语料丢到计算机里面,让计算机帮你去选择每个实体应该聚集到那个类下。说起来简单,其实做起来其中包含了好多的步骤,包括语料的分词、每一个实体的表示(一般是向量表示),实体之间的相似度的计算等等。。。。在NLP领域,实体所指的可以是一篇文章、一个句子,也可以是一个词语或者单词,但是所有的上述的这些实体在落实到你的输入语料中时,都必须表示成数学模型,因为计算机在机器学习的过程中用到的逻辑都是一个一个的数学公式,聚类中的最重要的相似度也是通过数学公式来计算的,在此我们不禁要感叹数学之伟大了。

         NLP中的聚类就是在没有任何的指导数据的情况下,将相似的实体聚集到一个类别中,将不相似的聚集到不同的类别中去。但是这里相似或者不相似用什么去衡量呢?又是怎么计算出来的相似度呢?之前我们讲过实体在落实到输入语料中时,都必须表示成数学模型,所以我们选择用数学中的概念来衡量相似性,有了这个前提我们就可以用数学公式去计算相似度了。打个比方,有A、B、C三个人,A是山东的,B是河北的,而C呢是云南人,现在我们要求将这三个人分成两个类别,我们可能将AB分到一块,将C分类一块。为什么呢?因为AB两个人的距离比较近,而且生活习性也都相近,但是C距离他们两个比较远,生活习性也有一些差距。其实在这个过程中我们不自觉的使用了数学上的距离来表示了三个实体之间的相似性,其实在NLP中也是这样的一种思路去度量相似度。再举一个在我们NLP中经常遇到的例子,假设有三个句子:

        句子A:我有一个苹果。

      句子B:我有一个梨。

      句子C:我今天吃了一个苹果。

然后对上边的三个句子进行聚类,首先我们需要将上述的三个句子分词,然后将它们表示数学模型,最后再来对上述句子聚类。分词结果如下:

        句子A:我 有 一个 苹果。

      句子B:我 有 一个 梨。

      句子C:我 今天 吃 了 一个 苹果。

然后将上述句子表示成数学模型在NLP中一般使用的是向量空间模型,所以我们将上述句子表示成向量空间模型语料中一共有八个词(去掉标点),我们将选择八维的向量来表示每一个句子,每一维的特征就是词语,有表示1,没有表示0。得到如下向量:

              我         有       一个       苹果        梨         今天      吃         了

A            1            1           1           1             0             0         0          0

B           1            1           1            0             1             0         0         0

C           1            0           1           1             0            1         1           1

之后我们就是将相似度的句子聚到一个类里,不相似的聚到不同的类中。在数学上一般距离小的我们就说相近,在这个地方我们同样可以利用距离来表示两个句子之间的相似度,当然这只是其中的一种度量,像余弦夹角等等也是不错的相似度的度量标准。

聚类的算法我们大致可以分为以下几类:

       基于划分聚类算法(partition clustering):首先创建k个划分,k为要创建的划分个数;然后利用一个循环定位技术通过将对象从一个划分移到另一个划分来帮助改善划分质量。典型的划分方法包括: k-means,k-medoids等。

     层次方法(hierarchical method) : 创建一个层次以分解给定的数据集。该方法可以分为自上而下(分解)和自下而上(合并)两种操作方式。为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。典型的这类方法包括:BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies) 方法,CURE(Clustering Using REprisentatives) 方法等。

     基于密度方法:根据密度完成对象的聚类。它根据对象周围的密度(如DBSCAN)不断增长聚类。典型的基于密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise)。

     基于网格方法:首先将对象空间划分为有限个单元以构成网格结构;然后利用网格结构完成聚类。例如STING(STatistical INformation Grid)
     基于模型方法:它假设每个聚类的模型并发现适合相应模型的数据,典型的基于模型方法如COBWEB。

      图论聚类方法:图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。典型的代表算法有AP(Affinity Propagation Clustering Algorithm)聚类算法。

     当然还有一些其他的比较的好的聚类方法,如谱聚类等等。我在后续的序列中会选择一些比较常用的聚类算法进行专门的讲解。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值