有问题的 ML 模型的鲁棒性

数据挖掘 机器学习 聚类 无监督学习 自动编码器
2021-09-30 07:51:26

在尝试模拟类似于本文中描述的 ML 模型时经过一些调整,我似乎最终在一些样本数据上获得了良好的聚类结果。通过“好”的结果,我的意思是

  1. 每个观察都以高概率放入一个集群(而不是在两个集群之间有 50/50 或类似的东西)
  2. 大部分的观察结果都放在了正确的集群中,这表明该模型确实有效。

例如,如果我们有观察一个属于集群的一个, 和观察b属于集群,那么模型可能会输出(0.99, 0.01)观察一个(其中0.99表示高概率一个属于一个并且0.01表示属于的概率低) 和(0.02, 0.98)观察b. (这些特定的数字是随机选择的,但通常好的结果给出的概率接近 0 和 1。)但是,每隔几次我训练模型,我都会得到一个奇怪的结果;在某种意义上似乎仍然“聚集”数据,但在技术上是错误的。一个不好的结果会给一些(0.99, 0.01)观察性质的东西一个(这很好),但随后给出类似(0.65, 0.35)观察的东西b. 这样,当我查看数据时,我可以知道它已被“聚类”为属于一个给出与观测值不同的聚类概率分布,但模型在实际分配集群时并没有实现上述两个目标中的任何一个。

我想让我的模型更健壮,以便更频繁地获得“好”结果,但我不知道我能做些什么来做到这一点。肯定有助于避免这个问题的一件事是多次进行集群训练并取平均结果;这样做的问题是每次训练都需要几个小时的时间,这意味着多次进行可能需要几天的时间,我想避免这种情况。

如果有任何(希望是快速的)修复我可以做以避免得到这些奇怪的结果,我很想听听关于这个话题的任何建议。如果您需要更多信息,我也应该能够回答问题,但我链接的论文应该包含大部分相关信息。

1个回答

聚类是一种无监督方法,其中与监督学习不同,它不知道类标签或响应或因变量。在聚类中,想法是确定数据中的模式,以便可以将其分组为有凝聚力的集群。这样的组将具有彼此相似但与其他组中的其他数据点不同的数据点。现在,聚类算法可以大致分为两种类型,即分区和分层。文献中一些著名的分区聚类算法是 k-means(仅适用于数值数据)、k-modes(仅适用于分类数据)和 k-prototypes(适用于混合数据(即数字和分类数据))。

与基于分区的聚类算法相关的一个基本问题是不知道组的初始数量。因此,使用此类算法的研究人员经常因未能解决这个基本问题而落入这个陷阱。因此,他们的结果是不可重复的。

在文献中,已经提出了几种方法来解决估计可能的簇数的问题。一种著名的方法是研究人员提出的肘部方法(Kaufman & Rousseeuw, 2009)。事实上,一组研究人员开发了一个名为NbClust的 R 包,可用于使用肘法估计聚类的数量。该软件包包含约 30 种用于确定集群数量的算法。

构建基于分区的聚类模型时的建议

我会推荐以下步骤以实现结果可重复性

  • 设置随机种子值
  • 选择一种方法来确定集群的数量
  • 至少运行 5 到 10 次实验,记下每次运行的结果,然后取平均值。报告平均值作为最终结果。

参考

Kaufman, L. 和 Rousseeuw, PJ (2009)。在数据中寻找组:聚类分析简介(第 344 卷):John Wiley & Sons