聚类问题的特征选择

机器算法验证 r 聚类 特征选择 无监督学习
2022-01-27 10:37:59

我正在尝试使用无监督算法(聚类)将不同的数据集组合在一起。问题是我有很多功能(~500)和少量案例(200-300)。

到目前为止,我过去只做分类问题,我总是将数据标记为训练集。在那里,我使用了一些标准(即 random.forest.importance 或 information.gain)来预选特征,然后我对不同的学习者使用顺序前向选择来找到相关的特征。

现在我看到,在无监督学习的情况下,我既没有任何预选标准,也不能使用顺序前向选择(至少不在 mlr 包中)。

我想知道是否可以在之前进行主成分分析以找到少量特征来提供给我的聚类算法。或者你有什么别的想法吗?

谢谢

编辑:

好的,所以经过一些在线研究后,我可以稍微更新一下我的问题:首先,由于两个原因,我读过一些不鼓励在聚类算法之前使用 PCA 的文章:

  • PC 是所有特征的函数,因此很难将结果与初始数据集联系起来,因此更难解释

  • 此外,如果您的问题实际上只有很小一部分特征有助于进行聚类,那么并不是说这些特征也描述了样本之间的最大方差(这是 PC 所做的)

所以 PCA 不在讨论范围内......

现在我回到我最初的想法,为聚类进行顺序前向选择。

你会推荐什么性能指标?(我想到了 Dunn-Index)哪种聚类算法会导致大小或多或少相同的聚类?(对于层次聚类,我通常会得到一个具有单个异常值的集群,而另一个具有所有其他异常值的集群 -> 所以我需要一些能够以某种方式防止异常值的东西)

希望大家能帮帮我...

2个回答

关于无监督学习问题中的降维,我有一些想法要分享。在回答时,我假设您的兴趣在于“高接触”,人类参与 wrt 集群解释,而不是自动、交钥匙、黑盒和“低接触”机器学习方法,其中有意不强调解释. 如果是后者,你为什么还要问这个问题?另外,请注意,多年来,我在各种业务环境中运行集群解决方案方面拥有丰富的经验,包括战略 B2C 营销、B2B 技术领域和教育政策(集群学生和学校)。

不过,首先,我确实对您关于“对不同数据集进行分组”的评论有疑问。我不知道你的意思是什么,也不知道它会如何影响这种方法,希望你能详细说明。

我想挑战您在上面#1 中的假设,即基于 PCA 的解决方案“难以解释”。甚至将 PCA 作为聚类的初步步骤运行的原因主要与生成的解决方案的卫生有关,因为许多聚类算法对特征冗余很敏感。PCA 将这种冗余分解为可管理的少数组件,从而最大限度地减少您注意到的有关特征选择的挑战和困难。虽然从 PCA 输出的组件确实模糊了各个特征的粒度和特异性,但如果您完全依赖,这是一个问题在分析结果的那些组件上。换句话说,您不会以任何方式只使用组件进行集群解释。不仅如此,您甚至不必关心因子维度的“含义”。它们只是促进可行解决方案的中间和(最终)一次性手段。但在提出这一点时,我与许多从业者不同,因为团队可以、将会并且确实会花费数周时间仔细构建一个“有意义的”因素解决方案。对我来说,这是对客户时间和金钱的低效浪费。

在这一点上,将有大量的技术考虑需要解决。一方面,如果您的 PCA 算法不是尺度不变的(例如,OLS 与 ML),那么任何得到的 PCA 解决方案都将被扭曲,从而在高方差特征上加载更多。在这些情况下,您的特征需要以某种方式进行预处理或转换,以消除这种差异。这里有大量的可能性,包括均值标准化、范围或 IQR 标准化、ipsative 缩放等。利用这种转变提供最佳、最具解释性的解决方案。

一旦生成了集群解决方案,最好的解释是(根据我的经验)忽略组件并折叠原始功能以及解决方案中未直接使用的任何其他描述性信息。在这一点上,一些启发式方法是定性洞察的最佳指南。这可以像生成一个电子表格一样简单,该电子表格根据每个特征(工作表的行)、每个集群(列)的平均值或中位数以及代表总样本总平均值的附加列来描述集群. 然后,通过将每个特征的聚类平均值与总平均值(并乘以 100)进行索引,创建一个类似于 IQ 分数的启发式算法,只要“100”左右是“正常”智商或平均行为,120+ 的索引表明特征对于集群的行为“真实”的可能性很高,而 80 或更少的索引表明特征对于集群的“不真实”。这些 120+ 和 80 或更少的索引就像代理 t 检验,用于测试给定特征在驱动解决方案中的重要性。当然,您可以在组间进行显着性检验,并且根据样本量,得到的答案会围绕这些快速而肮脏的经验法则而有所不同。

好的...毕竟,假设您仍然反对使用 PCA 作为聚类算法的直接输入,那么问题仍然存在于如何选择一组减少的特征。PCA 在这里仍然很有用,因为 PCA 就像在没有因变量的情况下运行回归一样。每个组件上的顶部加载特征可以成为聚类算法的输入。

对于您关于数据的大量特征和相对较小的样本量的观点,许多“完整信息”多变量分析中的典型经验法则是每个特征至少有大约 10 个观察值。有一些专门的方法可以用来解决这个挑战。例如,偏最小二乘法 (PLS) 最初是由 Herman Wold 在其 1990 年出版的《理论经验主义》一书中开发的,用于面临这个精确问题的化学计量学等领域。它本质上是因子分析的,但在需要较大的 n 来生成维度时要宽松得多。其他解决方案包括使用大量信息的类似随机森林的“分而治之”机器学习方法。这些方法在此pdf中进行了回顾http://www.wisdom.weizmann.ac.il/~harel/papers/Divide%20and%20Conquer.pdf

但是假设你已经决定你仍然不想与因子分析有任何关系,并且死心于运行某种有监督的“顺序”选择过程。在我看来,最重要的问题不是找到一个事后性能指标(邓恩指数),而是更多关于确定一个合适的代理——一个因变量——甚至使这种方法成为可能。这个决定完全取决于您的判断和您的数据中的 SME 状态。没有“最佳实践”,更不用说简单的答案了,考虑到您描述数据的方式,这是不小的挑战。

一旦做出决定,那么实际上有数百种可能的变量选择解决方案可供选择。变量选择是每个统计学家和他们的兄弟都发表过论文的主题领域。您首选的方法似乎是“顺序前向选择”很好。

值得注意的是,存在监督学习模型,它们作为算法的一部分折叠在集群解决方案中。这方面的示例包括称为潜在类模型的大型且高度灵活的方法。LC 模型的本质是它们分为两个阶段:在第一阶段定义 DV 并建立回归模型。在第二阶段,模型剩余输出中的任何异质性——单个潜在向量——被划分为潜在的“类”。在此 CV 讨论中有 LC 建模的概述 ...潜在类多项式 logit 模型怀疑

希望这可以帮助。

您所需要的只是聚类质量的标准。想法是这样的:你在训练和测试上拆分数据,在训练部分建立聚类;使用此聚类对测试集的每个元素进行聚类(按最近的聚类);在测试集上建立一个单独的聚类;找出测试中的聚类与预测聚类的相似性。这种相似性是聚类质量的标准。现在,如何衡量这种相似性取决于您。一旦你得到它,你就可以选择特征子集来最大化这种相似性。