N天后如何计算分数并预测结果

数据挖掘 机器学习 深度学习 分类 回归 生存分析
2022-02-17 09:56:12

假设我有一个具有回顾性和纵向性质的医学数据集/EHR 数据集。这意味着一个人在多个时间点(过去)进行了多次测量。我确实在这里发帖,但没有得到任何回应。所以,发在这里

该数据集包含有关患者诊断、死亡率标志、实验室、入院和药物消耗等信息。

现在,如果我想找出可以影响死亡率的预测因子,我可以使用逻辑回归(患者是否会死亡)。

但我的目标是找出可以帮助我预测一个人是否会在未来 30 天未来 240 天内死亡的预测因子,我如何使用 ML/数据分析技术来做到这一点?

此外,我还想计算一个分数,可以表明此人在未来 30 天内死亡的可能性?如何计算分数?任何关于如何得出这个分数的教程链接?拜托?

您能否让我知道我可以使用哪些不同的分析技术来解决这个问题以及计算分数的不同方法?

我想阅读并尝试解决这样的问题

2个回答

这可以看作是一个“简单的”二元分类问题。我的意思是问题的类型是“简单的”,任务本身当然不是……而且我什至不会提及有关其潜在应用的严重伦理问题!

首先,显然您需要在数据中输入患者死亡的信息。如果你有这些信息,我不是很清楚吗?重要的是,每当患者死亡时,都会在数据中报告这一点,否则您无法区分这两个类别。

所以设计可能是这样的:

  • 一个实例代表一个单一的患者历史t,并且它被标记为活着或死了t+N天。
  • 这需要重构数据。假设数据跨越从 0 到T, 可以取多个时间点tt<TN(例如每个月从 0 到TN)。请注意,理论上我认为不同的时间t只要所有实例一致地表示相同的持续时间并且相应地计算它们的特征和标签,就可以在数据中使用同一患者。
  • 设计特征当然是棘手的部分:当然特征必须具有所有实例的值,因此您不能依赖仅对某些患者进行的特定测试(当然可以,但是这些特征存在偏差)。
    • 老实说,我怀疑这部分能否可靠地完成:要么特征是由标准的同质指标组成,但这些指标通常可能无法预测死亡;或者它们包含针对某些患者的专门诊断测试,但它们在患者之间不是同质的,因此模型将有偏差并且可能过度拟合。

理想情况下,我建议在以这种方式准备数据之前将训练数据和测试数据分开,通常是选择一段时间用于训练数据,另一个时间用于测试数据。

一旦准备好数据,理论上任何二元分类方法都可以应用。当然,概率分类器可以用来预测概率,但这可能会产生误导,所以要非常小心:概率本身就是一个预测,它不能被解释为患者死亡与否的真实机会。例如,众所周知,朴素贝叶斯在经验上总是给出极端概率,即接近 0 或接近 1,而且它的预测通常是完全错误的。这意味着通常预测的概率只是一个猜测,它不能用来表示置信度。


[编辑:示例]

假设我们有:

  • 2000 年至 2005 年的数据
  • N=1,即我们看一个病人明年是否死亡。
  • 一个单一的指标,例如胆固醇水平。当然,在现实中你会有很多其他的功能。
  • 每次t在特征中,我们代表过去 2 年到当前年份的“测试值”t. 这意味着我们可以迭代t从 2002 (2000+2) 到 2004 (2005-N)

让我们想象一下以下数据(为简化起见,我假设时间单位是年):

patientId birthYear year     indicator 
1         1987      2000     26
1         1987      2001     34
1         1987      2002     18
1         1987      2003     43
1         1987      2004     31
1         1987      2005     36
2         1953      2000     47
2         1953      2001     67
2         1953      2002     56
2         1953      2003     69
2         1953      2004     -    DEATH
3         1969      2000     37
3         1969      2001     31
3         1969      2002     25
3         1969      2003     27
3         1969      2004     15
3         1969      2005     -    DEATH
4         1936      2000     41
4         1936      2001     39
4         1936      2002     43
4         1936      2003     43
4         1936      2004     40
4         1936      2005     38

那将变成这样:

patientId yearT age indicatorT-2 indicatorT-1 indicatorT-0   label
1         2002  15  26           34           18             0
1         2003  16  34           18           43             0
1         2004  17  18           43           31             0
2         2002  49  47           67           56             0
2         2003  50  67           56           69             1
3         2002  33  37           31           25             0
3         2003  34  31           25           27             0
3         2004  35  25           27           15             1
4         2002  66  41           39           43             0
4         2003  67  39           43           43             0
4         2004  68  43           43           40             0

请注意,我写前两列只是为了显示数据是如何计算的,这两列不是特征的一部分。

为了澄清用户针对 Erwan 给出的正确解决方案提出的问题 - 该解决方案建议及时回溯以跨一系列时间戳准备数据。

将有多个时间点“t”,其中输入将是患者健康、药物、报告等的所有各种特征。您需要了解如何最好地将它们转换为表示向量。标签将是二进制的,并指示患者是否在 t+N 天后生活......其中 N 可以是 30,60,240 等。“t”本身可以按周或按月进行。

一旦以这种方式准备数据,它就变成了二元分类练习。

唯一可以添加的额外考虑因素是 - 这里可能有 RNN 的元素。训练数据不是相互独立的,并且可能包含同一患者在多个时间戳上的重复数据,并且可能存在捕获此信息以更好地模拟情况的空间。