R:聚类——如何预测新病例?
Posted
技术标签:
【中文标题】R:聚类——如何预测新病例?【英文标题】:R: Clustering - how to predict new cases? 【发布时间】:2016-02-10 04:17:46 【问题描述】:我在一组 150 名患者中有 4000 个(连续)预测变量。 首先,应确定与生存相关的变量。因此,我使用多重检验程序函数 (http://svitsrv25.epfl.ch/R-doc/library/multtest/html/MTP.html) 和 t 统计量来检验 Cox 比例风险生存模型中的回归系数,以确定显着的预测因子。该分析确定了与生存显着相关的 60 个参数。然后,我使用 ConensusClusterPlus 包 (https://www.bioconductor.org/packages/release/bioc/html/ConsensusClusterPlus.html) 执行无监督 k 均值聚类,该包根据 CDF 曲线和进展图将 3 个聚类确定为最佳解决方案。然后,如果我执行 Kaplan-Meier 生存分析,我会发现三个集群中的每一个都与不同的生存模式(低/中/长生存)相关联。
我现在的问题如下: 假设我有另一组 50 名患者,我想预测每个患者最有可能属于三个集群中的哪一个。我怎样才能做到这一点?我是否需要训练一个分类器(例如使用插入符号包(topepo.github.io/caret/bytag.html),其中具有 60 个重要参数的 150 名患者在训练集中,并且算法知道分配给哪个患者三个集群中的哪一个)并在 50 名新患者中验证分类器?然后进行 Kaplan-Meier 生存分析,看看验证集 (n=50) 中的预测聚类是否再次与不同的生存模式相关联?
感谢您的帮助。
【问题讨论】:
【参考方案1】:答案要简单得多。你确实有你的 k-means,有 3 个集群。每个集群由其质心(60 维空间中的一个点)标识。为了“分类”新点,您只需测量到这三个质心中每一个的欧几里德距离,然后选择最接近的集群。就这样。它直接来自这样一个事实,即 k-means 为您提供了整个空间的分区,而不仅仅是您的训练集。
【讨论】:
好的,谢谢您的反馈。我刚刚发现了另一个帖子,其中提出了类似的问题:***.com/questions/22300830/… - 您的解决方案很可能对应于其他帖子中的选项 #2。然而,据我所知,选项#3(我在帖子中提到的)也是一个可行的解决方案? 你可以做任何事,简而言之;然而,构建一个分类器来模拟聚类是没有意义的,因为在这个标准下,聚类是一个最佳分类器。【参考方案2】:我的建议是创建一个预测模型,例如随机森林,使用聚类数作为结果。与使用集群中的距离进行预测相比,它会产生更好的结果。
原因有很多,但考虑到预测模型专门用于此类任务,例如,它将保留并考虑可靠的变量(而在集群中每个变量都将考虑相同)。
【讨论】:
以上是关于R:聚类——如何预测新病例?的主要内容,如果未能解决你的问题,请参考以下文章