R:聚类——如何预测新病例?

R: Clustering - how to predict new cases?

我在一组 150 名患者中有 4000 个(连续的)预测变量。 首先,应确定与生存相关的变量。因此,我使用多重测试程序函数 (http://svitsrv25.epfl.ch/R-doc/library/multtest/html/MTP.html) with the t-statistic for tests of regression coefficients in Cox proportional hazards survival models to identify significant predictors. This analysis identifies 60 parameters which are significantly associated with survival. I then perform unsupervised k-means clustering with the ConensusClusterPlus package (https://www.bioconductor.org/packages/release/bioc/html/ConsensusClusterPlus.html),它根据 CDF 曲线和级数图将 3 个集群确定为最佳解决方案。如果我随后执行 Kaplan-Meier 生存分析,我会发现三个集群中的每一个都与不同的生存模式(低/中/长生存)相关联。

我现在的问题是: 让我们假设我有另一组 50 名患者,我想预测每个患者最有可能属于三个集群中的哪一个。我怎样才能做到这一点?我是否需要训练分类器(例如使用插入符号包 (topepo.github.io/caret/bytag.html),其中 150 名具有 60 个重要参数的患者在训练集中和算法中知道哪个患者被分配到三个集群中的哪一个)并在 50 名新患者中验证分类器?然后执行 Kaplan-Meier 生存分析以查看验证集 (n=50) 中预测的聚类是否再次与不同的生存模式相关联?

感谢您的帮助。

答案要简单得多。你确实有你的 k-means,有 3 个集群。每个集群都由其质心(60 维 space 中的一个点)标识。为了 "classify" 新点,您只需测量到这三个质心中每一个的欧氏距离,以及最近的 select 簇。就这样。它直接来自于这样一个事实,即 k-means 为您提供了整个 space 的分区,而不仅仅是您的训练集。

我的建议是创建一个预测模型,例如随机森林,使用簇数作为结果。与使用集群中的距离进行预测相比,它会产生更好的结果。

原因是多方面的,但考虑到一个预测模型专门从事这样的任务,例如,它会保留并考虑可靠的变量(而在集群中每个变量都会考虑相同)。