数据挖掘复习笔记(二)

聚类模型

什么是聚类

聚类,即把数据按照相似性归纳成若干类别,同一类中的数据彼此相似,不同类中的数据相异。聚类分析可以建立宏观的概念,发现数据的分布模式,以及可能的数据属性之间的相互关系。目前常用的聚类算法有基于划分的算法,基于层次的算法,基于密度的算法,基于网格的算法以及基于模型的方法。

从机器学习的角度来看,聚类属于无监督学习,因为它没有事先定义的类别标记。聚类只是从数据的角度,将相似的样本点聚集在一起,将大量的样本聚集成一个一个的簇。

聚类既可以作为单独的数据分析工具使用,如根据城市的各项数据,将城市划分为一线城市、二线城市、三线城市等,并且提取出它们的共同特征。也可以作为其他方法的数据预处理手段,如发现孤立点,进行数据离散化等等。

那什么是高质量的聚类呢?从理论的角度分析,如果聚类之后可以达到“高类内相似性、低类间相似性”,则这样的聚类在理论上具有较高的质量。事实上,聚类的质量不仅依赖于所使用的方法,同时也依赖于具体的实现方式。

虽然我们刚刚提出了一个高质量聚类的判断标准,我们依然很难将其进行量化。最终评价聚类质量高低的,往往是聚类之后相关利益方的满意程度。只要需求方对你的聚类结果比较满意,从中得到了有价值的信息,那么聚类便是有效的,高质量的。

最后,根据聚类的对象不同,聚类又可以分为Q型聚类和R型聚类。其中Q型聚类主要用于对样本进行分类,也是我们最为常见的一种聚类,例如对城市进行聚类分析,将其分为一线、二线等城市簇。

而R型聚类用于对变量,或者说对特征进行聚类分析。例如对城市进行聚类分析时会涉及到许多的指标,GDP、人口、空气质量、耗电量、耗水量、绿化面积等等,那么我们可以通过对这些指标进行聚类分析,找出相关性较强的一簇簇指标,进而归纳出评价城市的几大主要因素:环境因素、人口因素、经济因素等等。

相似性的度量

聚类的一个原则是“高类内相似性,低类间相似性”,那么问题来了,我们如何度量这种相似性呢?

一般来说,我们会使用距离函数d(i,j)来描述两个样本点x_ix_j之间的相似程度。如果两个样本点之间的距离越小,我们就认为这两个样本越相似。极端情况下,两个样本点之间的距离为0,则此时两个样本点是完全一模一样的。

距离函数的性质

一般而言,距离函数d(i,j)必须满足以下几条性质:

  1. d(i,j)\geq 0,非负性
  2. d(i,i)=0
  3. d(i,j)=d(j,i),对称性
  4. d(i,j)\leq d(i,k)+d(k,j),满足三角不等式

常用的距离函数

常用的的距离函数主要有明考夫斯基距离、兰氏距离、马氏距离、斜交距离。

明考夫斯基距离定义如下:
d(i,j)=[\sum_{k=1}^p|x_{ik}-x_{jk}|^q]^{\frac{1}{q}}
其中x_{ik}是样本x_i的第k个特征的取值,p为特征的数量,q则取自然数。

针对q的取值不同,我们可以得到几个常用的距离。

  1. q=1时,d(i,j)=\sum_{k=1}^p|x_{ik}-x_{jk}|,称之为绝对距离
  2. q=2时,d(i,j)=\sqrt{\sum_{k=1}^p(x_{ik}-x_{jk})^2},就是我们常见的欧氏距离。
  3. q=\infty时,d(i,j)=max|x_{ik}-x_{jk}|,k=1,2,...,p,称之为切比雪夫距离。

最为常用的距离当然就是欧式距离啦。

考虑到在实际问题中,不同的特征对于样本的影响是不同的,因此在计算距离的时候,我们有时候会加上相应的权重,此时明考夫斯基距离的计算公式就变成了
d(i,j)=[\sum_{k=1}^pw_k|x_{ik}-x_{jk}|^q]^{\frac{1}{q}}
对于欧氏距离,则变成了
d(i,j)=\sqrt{\sum_{k=1}^pw_k(x_{ik}-x_{jk})^2}

一般来说,为了消除不同特征数据量纲的影响,在计算明考夫斯基距离之前,需要先对数据进行规范化处理,如使用z-score方法。但是一般我们会使用平均绝对偏差代替标准差。即此时的规范化公式为
v'=\frac{v-mean_{A}}{mean\_abs\_dev_{A}},mean\_abs\_dev_{A}=\frac{1}{n}(\sum_{i=1}^n|x_{iA}-mean_{A}|)

使用平均绝对偏差,相对于标准差抗噪声能力更强,且更容易检测到噪声。

明氏距离没有考虑到数据中的协方差模式,马氏距离则考虑了协方差,且不受指标测量单位的影响:
d_{ij}^2=(X_i-X_j)'\Sigma^{-1}(X_i-X_j)

斜交距离:
d(i,j)=[\frac{1}{p^{2}}\sum_{k=1}^{p}\sum_{l=1}^{p}(x_{ik}-x_{jk})(x_{il}-x_{jl})r_{kl}]^{\frac{1}{2}},i=1,2,..,n;j=1,2,..n
仅作了解仅作了解

对于向量对象,如文档中的关键字等等,可以使用cosine measure衡量,也就是夹角的余弦值。
d(\overrightarrow{X},\overrightarrow{Y})=\frac{\overrightarrow{X} \cdot \overrightarrow{Y}}{|\overrightarrow{X}||\overrightarrow{Y}|}

聚类的类型

聚类根据不同的维度可以分为不同的类型。

根据分类对象的不同,可以分为Q型聚类和R型聚类。

根据结果展现形式的不同,可以分为分割聚类和层次聚类。

分割聚类是指将样本分割为不重叠的子集,使得每个样本对象只属于其中一个子集。


层次聚类是将数据对象分割为一系列嵌套的、树状的簇。


根据具体实现方式的不同,又可以分为以下几种不同的类型。

  1. 良分割聚类
    在良分割聚类中,每个点到簇内其他点的距离都小于到簇外其他点的距离。按照字面意思应该很好理解。

  2. 基于中心的聚类
    对于该聚类,每个点与其所在簇中心的距离都小于其他簇中心的距离。依然需要满足距离的限制,只是相对于良分割聚类,使用了“中心”代替一个簇。
    簇的中心可以是质心,即簇内所有点的均值;也可以是medoid,即簇内最具有代表性的点(它到簇内其他所有点的距离之和最小)。

  3. 基于密度的聚类
    在这种实现方式中,簇是密度超过一定阈值的点的集合,簇与簇之间被一些低密度区域分开。主要适用于簇不规则,或者相互纠缠,以及存在噪声或者孤立点的情况。可以打开https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/看一下基于密度的聚类是如何实现的。

  4. 基于目标的函数的聚类
    对于这种聚类的实现方式,往往需要枚举所有可能的把对象点构成簇的方式,并使用目标函数对这些簇进行评价,评价结果最好的作为最终的聚类方式。可以证明,这是一个NP Hard的问题。

  5. K-means聚类
    K-means是典型的基于邻近聚类的方式,也是最常用的聚类手段之一。它是一种分割聚类的方法。开始时,我们给需要定我们希望得到的簇的数目K,K-means会选择K个簇的初始中心点。之后按照根据其他点到中心点的距离,将每个点归属于一个与其距离最近的中心点所决定的簇。之后对簇的中心点进行更新,再次将所有的点归类。不断重复上述步骤直至每个簇的中心点不再发生变化。可以打开https://www.naftaliharris.com/blog/visualizing-k-means-clustering/看一下K-means是如何实现的。

    两个中心点

三个中心点
五个中心点

对于K-means聚类,其中心点一般是簇的均值,相似性一般使用欧几里得距离度量。我们可以使用
SSE=\sum_{i=1}^{K}\sum_{x\in C_{i}}dist^2(m_i,x)
来评价K-means聚类的质量。其中x是簇C_i内所有的样本点,m_i代表簇C_i内的一个代表性点,如中心点(一般是均值点)。在评价时,给定两种不同的聚类方案,取SSE更小的方案作为我们的选择。

最后说一说K-means的优缺点。

其主要优点是使用起来简单、快速、高效,对于大数据也能在较快的时间内获得一个不错的解;其缺点也很明显,首先,K-means要求用户必须事先给定K值,这本身就不太好确定。其次,K-means对于初值很敏感,选取不同的初值作为中心点,其结果往往是不同的。而且,K-means对于噪声和孤立点也很敏感,对于簇的划分有较大的影响。

此外,还有一种称之为K-Medoids的方法,他与K-means的区别在于,其聚类中心不再是簇内数据的均值,而是簇内最中心的实际数据点。即此时的聚类中心必须是一个真实的样本点。

但无论是K-means还是K-Medoids,初始点的选取都是至关重要的。一般,我们采用“最远初始点法”选取聚类中心。简单描述如下:首先选择第一个样本点作为第一个聚类中心,之后选择距离第一个点最远的点作为第二个聚类中心,再之后选择的点,需要满足到最近的聚类中心的距离最远。直至选到所有的聚类中心,之后开始进行迭代。

通过这种选取方式,初始聚类中心彼此之间距离较远,可以较快地得到较为稳定的聚类结果,并且有效的处理了孤立点、噪声点等。

当然,为了更好地实现聚类,我们也可以使用一些前处理和后处理的手段。

常见的前处理手段包括对数据进行规范化、消除孤立点等等;常见的后处理手段包括

  1. 消除有可能是孤立点的较小的簇
  2. 分割“松散”的簇,即SSE高的簇
  3. 合并紧凑的簇,即距离进且SSE小的簇

通过这些处理的手法,可以让我们的聚类结果更加高质量。

关联模型

关联规则

描述两个或两个以上变量的取值之间存在的某种规律性,就称之为关联。关联分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。一般使用支持度和置信度两个阈值来度量关联规则的相关性。

关联规则的挖掘就是在事务数据库中找出具有用户给定的最小支持度minsup和最小置信度minconf的关联规则。

  • 最小支持度minsup:用户规定的关联规则必须满足的最小支持度,它表示了一组物品集在统计意义上需满足的最低程度。
  • 最小置信度minconf:用户规定的关联规则必须满足的最小置信度,它反映了关联规则的最低可靠度。

啤酒和尿布的例子

一个经典的关联规则挖掘的例子,就是啤酒和尿布。为什么超市要把啤酒和尿布的位置放得比较近呢?毕竟这两个完全不是一类生活物品。

首先我们给出一个简单的事务数据库,这里表示一些人购物篮中的物品。


对于每一个物品,如面包、牛奶等,我们可以称之为一项。而一项或几项物品组成的集合,我们称之为项集。如{牛奶}是一个项集,{牛奶,面包}也是一个项集。

之后,我们可以定义项集的支持度这一概念。所谓支持度,就是事务数据库中包含某一项集的比例。例如对于{面包,牛奶}这一项集,上面的五条事务中,1,4,5都包含有{面包,牛奶},因此该项集相对于上述事务数据库的支持度就是\frac{3}{5} =0.6

那在事务数据库中,什么是关联规则呢?

形如X \rightarrow Y的表达式,其中XY是不相交的项集。例如\{牛奶,尿布\} \rightarrow \{啤酒\}。该规则表达的意思是,如果购物篮里有牛奶和尿布,那么里面也会存在啤酒。

对于这个规则,我们可以使用“支持度(s)”和“置信度(c)”来对其强度,或者说正确性进行衡量。此时,所谓的支持度就是项集\{X,Y\}\{牛奶,尿布,啤酒\}的支持度,为\frac{2}{5} =0.4

置信度则为所有包含项集X的事务中,也包含项集\{X,Y\}的比例。对于项集\{牛奶,尿布\},包含它的事务有3,4,5这三条。其中包含\{牛奶,尿布,啤酒\}的事务有3,4这两条。因此,关联规则\{牛奶,尿布\} \rightarrow \{啤酒\}的置信度则为\frac{2}{3} \approx 0.67

从概率的角度去理解,支持度就是事件XY相对于事务数据库同时发生的概率,而置信度就是在事件X发生的情况下,Y也发生的概率,也就是条件概率。这样看,当同时发生的概率和条件概率都比较大的时候,我们有理由认为,在一定程度上,X的发生就会带来Y的发生。

以上只是关联规则的一个简单例子,实际中的应用往往要更加复杂,有兴趣可以自行搜索。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容