聚类分析和生长混合模型比较

在论文中使用纵向数据作轨迹,体现异质性。
以往有种方法为 “生长混合模型”(GMM)。本文是使用聚类分析对轨迹聚类,分cluster。
讨论部分需讨论这两种方法的比较、优缺点(统计不是自己做的),希望能侧重于对 处理“纵向数据、轨迹”方面。在网上查阅资料发现专业性太强无法自己归纳理解,烦请各位指点

k均值聚类
假设每个 cluster 存在一个中心点,该 cluster 内的所有数据项到这个中心点的欧式距离(勾股定理的扩展:各维度差的平方求和再开方)都小于到其他 cluster 中心点的距离。算法的任务就是找出这些 cluster 的中心点。K-means 算法先随机选取 K (唯一的算法参数) 个点作为中心点,然后通过计算欧式距离来给所有数据项归类。归类之后使用平均值算法(mean)重新计算每个类的中心点,继续计算距离归类,直到中心点不再变化,此时视为收敛完成。
算法简单,容易理解。计算量不大,收敛快。可以很方便的进行分布式计算。默认所有属性对距离的影响是相同的,默认所有数据均匀分布在聚类中。如果数据是三维空间中的圆柱体,模型就失效了。
高斯混合模型(GMM)
假设每个聚类的数据都是符合高斯分布(又叫常态分布或者正态分布)的,当前数据呈现的分布就是各个聚类的分布叠加在一起。使用 EM 算法求解,具体没搞太明白。大概就是两个参数先随机指定一个,然后算另外一个,最后跟结果比较。
不容易理解,需要翻翻统计学的教材。假设各个特征的权重不同,假设各个聚类中的数据分布不均匀。理论上可以拟合任何连续函数。计算量较大。如果其中一个聚类的数据并不服从正态分布、偏态分布,聚类算法会出现偏差。
GMM,学习的过程就是训练出几个概率分布,所谓混合高斯模型就是指对样本的概率密度分布进行估计,而估计的模型是几个高斯模型加权之和(具体是几个要在模型训练前建立好)。每个高斯模型就代表了一个类(一个Cluster)。对样本中的数据分别在几个高斯模型上投影,就会分别得到在各个类上的概率。然后我们可以选取概率最大的类所为判决结果。
理论上可以通过增加Model的个数,用GMM近似任何概率分布

在绝大多数情况下,何时该用潜在剖面分析及潜在类别分析应该是相对清晰的。当进行聚类分析依据的变量都是分类变量的时候(注意只有几点的Likert量表也应该被视作分类变量),我们需要进行潜在类别分析;而当聚类分析依据的是连续变量的时候,我们需要进行潜在剖面分析。然而,当我们同时有分类和连续变量(混合类型数据集)的时候,我们需要怎么办呢?把视野放宽,暂时脱离这些有着全面模型假设的混合模型,去往令人神往的其他聚类分析的乐园--哇,这里居然也有这么多有意思的方法。除了上述混合模型之外,最著名的模型应当是K-means了:这是一种特别针对连续变量的分类方法,目标是寻找到几个“中心点”(中心点可以不是样本中的数据),而每个样本都将会被分配到离自己最近的中心点所代表的聚类中。下图是个很好的例子,样本中所有点被非常清晰地分成了红蓝绿三个类别。

img


很遗憾,K-means并不足够处理针对混合类型数据集的聚类分析。这时候它的近亲出现了,k-medoids;在这一方法下,“中心点”不再能够是样本之外的点,而被局限为样本之中“最具有代表性的点”(当然,和上述它的近亲一样,这些“中心点”和“最有代表性的点”都是数据驱动的结果,而不是自己(根据爱好)任意选定的),相对应的,分类的依据不再是距离中心点的距离,而是和“最具代表性的点”的相似度。限于篇幅,本文不再对这一方法做更详细的介绍(还有其他精彩内容),有兴趣的读者可以参考Kohn, Steinley& Brusco (2010)(发表在顶刊哦)。在统计软件R的“cluster”包里面有专门的“pam”程序可以一步进行分析。
还有一个k-means的近亲非常值得介绍,那就是k-median,以聚类中的中位数(而不是平均数)作为“中心点”。不要看这里的变化是聚类分析发展的一小步,却是数据处理中的一大步——在Brusco, Shireman& Steinley (2017)中,作者用非常详细的模拟数据证明了这一方法在处理二分变量所形成的数据集中有着最好的表现,当然超过了孪生兄弟k-means,甚至还超过了被屡屡神话的潜在类别分析。一句话总结,有很多炫酷的聚类分析方法;k-means保证了你的速度,k-medoids特别适合混合类型的数据,k-median是处理二分变量数据的最佳方法,总有一款适合你!
在使用混合模型的过程中,有一些研究者往往忽视的问题事实上确实无比重要的。首先,如何确定聚类的数量?两篇社会科学领域正在撰写的文章(抱歉因为是最新的结果所以无法引用)强调了(1)使用不同的模型拟合指数(例如AIC和BIC)会导致完全不同的结果,(2)当样本量较小的时候(n<300),最为推荐的方法是经过修正的AIC(AICc, Hurvich,& Tsai, 1993);而当样本量较大的时候,最为推荐的方式却是BIC(Schwarz, 1978)。
其次,既然混合模型对误差的分布有着一定的假设,那么它具体的实施步骤在理想情况下应该是怎样的呢?Vermunt(2011)在他的回应(非常推荐他和Steinley在三篇系列文章中针对混合模型和k-means的讨论,极其有意思和具有启发性)中,建议先假设在确定类别的情况下,变量之间的局部独立性成立;如果实证数据不能满足这一个假设,那么再增加变量之间的局部相关或者选择增加聚类的数量。这样做的最重要的目的,就是能够避免对于当前数据的过度拟合,从而错失发现真模型。

最后,一个与之前的论述有些相关与此同时非常重要的点是研究者们必须了解通过混合模型所得到的聚类未必是稳定的——在很多情况下,增加或者减少某几个变量能够带来完全不同的结果;与此同时增加被试数量很有可能使得你能够多发现聚类的数量。换句话说,你当然需要对自己的结果有信心,但是更重要的是混合模型是一个高度数据驱动的模型,在没有特别好的先验理论的前提下,在没有其他相关研究交叉验证的情况下,一定要特别小心不能过度推广得到的实验结果。
出于习惯,研究者往往会收集很多变量——犹如大海捞针,我们总是习惯于错杀一万而不放过一个;而这带来的结果,就是研究中往往会存在多余的噪音变量——这些变量并不会对实际的聚类产生任何实质上的影响。在这种情况下,用一些“高端”方法通过统计手段自动筛选出有用的变量既显得高级(从而增大你文章录用的可能性),更重要的是往往能带来更为准确的聚类分析结果。本文显然无法完成对于这些方法的完全讲述,但是我们在这里推荐几个非常有用但是又易操作的R包:对于潜在剖面分析,可以使用clustervarsel和SelvarMix;而对于潜在类别分析,可以使用reglca。就是这些!

随便搞几层神经网络就搞定了,理解他么用,要非要理解建议去b站搜一下,看能理解不推荐东大的视频