【数据分析师 Level 1 】18.聚类分析

【数据分析师 Level 1 】18.聚类分析

层次聚类法

层次聚类法通常分为自底向上和自顶向下。两种方法的运算原理其实是相同的。只不过实际计算是方向相反

自底向上,又叫做合并法。这种方法是先将每个样本分别作为一个独立的类,然后通过距离计算,将距离相近的两个样本合并为一类,其他样本仍然各自为一类。不断重复这个过程,直到达到聚类或者设定的目标。

而自顶向下的方法,刚好相反。这种方法先把所有样本看成一类,然后通过距离计算,选出距离最远的两个样本,各自为一个类别,其余样本根据距离远近分配到两个类别中,从而形成新的类别划分。不断重复过程,直到达到聚类数或者设定的目标,因此又叫做分解法。

不管是采用哪种层次聚类的方法,一个关键的问题就是距离的定义。

距离的计算

最短距离法

最短距离法(Neatest Neighbor)是指当我们从A中取出一个样本,B中取出一个样本,计算两个样本之间的距离,能够得到的最小值就是A和B两个类的距离。而最长距离法(Furthest Neighbor)则刚好相反。

中间距离法

中间距离法是指最短距离法和最长距离法都是考虑的极端情况,因此也容易受到异常值的影响。我们可以采用一种折中的方式进行计算。加入类别A是由两个小类别A1和A2合并而成的。那么类别A和类别B之间的距离,可以通过公式

[D_{AB} = sqrt{frac{1}{2}D^2_{A_1B}+frac{1}{2}D^2_{A_2B}-frac{1}{4}D^2_{A_1A_2}} ]

来进行计算。它计算出来的长度在最短距离法和最长距离法结果之间,因此得名。

类平均法

类平均法(Between-groups-Linkage)是指把A中的点和B中的点进行连线,所有连线距离平方的平均值,就等于两个类之间的距离平方。

可以用公式

[D_{AB} = sqrt{frac{1}{n_An_B}sum D^2_{ij}} ]

其中 i,j分别输入类A和类B

例如:

[D^2_{12} = frac{1}{6}(d^2_{14}+d^2_{15}+d^2_{24}+d^2_{25}+d^2_{34}+d^2_{35}) ]

重心法

重心法(Centroid Clustering)计算的是观测类各自重心之间的距离。其实重心法和中间距离法是有些类似的,区别在于重心法是用

[frac{n_{A1}}{n_{A1}+n_{A2}} ]

[frac{n_{A2}}{n_{A1}+n_{A2}} ]

来代替原有的系数,所以公式也可以写作:

[sqrt{frac{n_{A1}}{n_{A1}+n_{A2}}D^2_{A_1B}+frac{n_{A2}}{n_{A1}+n_{A2}}D^2_{A_2B}-frac{n_{A_1}n_{A_2}}{n_{A_1}+n_{A_2}}D^2_{A_1A_2}} ]

[D_{centroids}(C_i,C_j) = d(r_i,r_j) ]

其中r表示重心

离差平方和法

离差平方和法,又叫Ward最小方差法(Ward‘s Method):这种方法主要基于方差分析的思想,如果分类合理,则同类样本间离差平方和应当较小,类与类间离差平方和应当较大。每次合并类别时,离差平方和会增大,选择使得增加值最小的两类进行合并。因此,该方法很少受到异常值的影响,在实际应用中的分类效果较好,使用范围广。但该方法要求样品间的距离必须是欧式距离

层次聚类的过程非常清楚,会形成类似树状的聚类图谱,便于理解和检查。聚类的变量可以是连续变量,也可以是分类变量。衡量距离的方法也非常反复。

但是由于需要反复计算距离,限制了层次聚类的速度。因此不适用于数量非常大或者变量非常多的项目。如果计算机的硬件有制约,也会影响层次聚类的可行性。

快速聚类-Kmeans聚类

不同于层次聚类,K-Means聚类是一种快速聚类法,因此也适合应用于大样本量的数据,或者是进行一些前期的数据清洗工作。K-Means聚类方法需要分析师自行指定聚类的数量,也就是其中的K。因此在实际分析过程中,往往需要多次调整K的取值,反复尝试,以便获得最优的聚类结果。

其方法可以总结为:首先选择K个点作为中心点,这些中心点可以是分析者自己指定的,也可以是数据本身结构形成的。或者是随机产生。所有样本与这K个中心点计算距离,按照距离最近的原则归入这些中心点,然后重新计算每个类的中心,再次计算每个样本与类中心的距离,并按照最短距离原则重新划分类,如此迭代直至类不再变化为止。

和层次聚类法相比,快速聚类法计算量非常小,即便在样本数据量较大或者变量较多的情况下,仍然可以快速得出结果,不会耗费太多的空间和时间,对硬件的依赖性也较低。它因此得名快速聚类法。在分析时,用户也可以根据过往经验或计算结果,指定初始中心点位置,也可以进一步增加聚类的效率。

但是这个方法应用范围也比较有限,因为需要事先指定聚类数,因此需要分析师有一定的经验积累,或者可能需要多次反复尝试。对初始点位置也很敏感,容易导致聚类结果与数据真实分类出现差异,对异常值也比较敏感。同时聚类的变量也必须是连续变量,对变量的“标准度”要求也相对较高,否则可能产生无意义的结果。而且K-Means聚类方法并不能对变量进行聚类,也是它使用上的一个比较大的缺点。

两步聚类法

两步聚类法结合了K-Means和系统聚类法,先选择较大的类数量对于样本进行快速聚类,然后对每个聚类的中心点进行系统聚类,选择合适的分类数量,然后将聚类结果合并为较理想的数量

在进行聚类时,要结合业务理解对数据进行适当变换,并且需要对变量进行维度分析,聚类结果可以使用类中心之间的比较,结合业务进行解读。

聚类的实际应用

在实际使用聚类方法时,我们一般多用于客户画像、离群点检验、营销套餐设计等领域,我们需要注意选取合适的聚类方法。对于数据量较大或变量较多的样本,优先考虑K-Means聚类法。样本数据量适中或者变量类型比较复杂的情况,则可以考虑使用层次聚类法。特别综合的项目,也可以采用两步聚类法,结合两种聚类方法各自的优势,高效解决问题。

再聚类之前,数据清洗也是非常重要的。标准化可以帮助我们消除不同变量之间的量纲的差异,但是需要注意的是,在有些场景,比如欺诈分析时,我们希望通过聚类去发现异常值,那么前期的数据清洗就要注意不能改变原有的分布情况,避免造成结果偏差。因此分箱法、小数定标法等清洗方法在聚类问题中需要谨慎使用。另外,通过主成分分析或者因子分析等方法对变量进行降维,或者先进行变量聚类,也可以帮助减少冗余变量,更有效地完成聚类。

在一些场景下,直接的业务字段并不能很好的进行量化和数学分析,那么我们需要通过函数或者其他的方式,将其进行转换,灵活应用才能更好地解决问题。

聚类本身是一种数据算法,聚类的结果并不是总是有实际的使用意义。因此对于聚类结果,我们需要谨慎地解读,适当地对其进行修正和调整,从而更加贴近业务的使用。

最后,需要注意的是,聚类是一种无监督学习的算法,因此也并没有统一的评判标准。因此在实际使用过程中,我们可以把聚类结果和认为选择或随机选择的结果放在一起进行比较,这个时候,我们可以通过观察聚类是否对整体的分类或者研究有提升作用来评判聚类的好坏。

当然,我们一般也可以近似地用组间平方和BSS(Between Sum of Squares)和组内平方和WSS(Within Sum of Squares)来作为评价指标判断聚类的类别数是否合适。显然BSS越大,WSS越小,聚类的效果就越好。

另外,只有两个变量的时候,我们也可以通过画图的方法来进行观察和评估。

例题精讲

1.以下哪种聚类方法可以提供聚类树形图()?

A.层次聚类

B.K均值聚类

C.基于密度的聚类

D.基于网格的聚类

答案:A

解析:层次聚类指的是形成类相似度层次图谱,便于直观地确定类之间的划分,聚类过程可做成聚类谱系图。聚类谱系图的基本思路就在于按照两点之间的距离,按照由小到大的顺序依次进行连接。

2.以下哪个是K均值聚类法的缺陷()?

A.对初始点位置敏感,导致聚类结果与数据真实分类出现差异

B.无法通过分析方法确定聚类个数

C.容易受到异常值的影响

D.容易受到变量量纲的影响

答案:ABC

解析:这部分试题主要考核层次聚类和K均值快速聚类的优缺点和适用范围。当样本量超过50个时,一般采用K均值聚类法,其优点是计算速度快,但是缺点是ABC答案列出的那样。

3.某电商分析人员希望通过聚类方法定位代商家刷信用级别的违规者,以下哪些操作不应该进行?

A.对变量进行标准化

B.对变量进行百分位秩转换

C.对变量进行因子分析或变量聚类

D.对变量进行分箱处理

答案:BD

解析:刷信用级别的违规者的行为会与正常消费行为在消费频次、平均消费金额等方面差异比较大,对其进行定位相当于发现异常点,因此要求对变量的转换不能改变其原有分布形态。常用的标准化方法如中心标准化、极差标准化不会改变分布形态,而且在聚类前往往需要使用标准化来消除变量的量纲,因此A不是答案;取百分位秩会将原变量变化为均匀分布,进行分箱处理也会改变原变量的分布,因此BD是答案;因子分析、变量聚类用于数据降维,可以使聚类结果更合理。

原文地址:https://www.cnblogs.com/pandaboy1123/p/14331738.html