预测事件何时发生

时间:2019-06-18 17:39:02

标签: r machine-learning prediction cox-regression survival

我是机器学习和r的新手,所以我的问题似乎不清楚,或者需要更多信息。我已经尽力解释了。如果我使用了错误的术语或短语,请纠正我。任何帮助,将不胜感激。

上下文-我正在尝试建立一个模型来预测事件“何时”发生。

我有一个具有以下结构的数据集。这不是实际数据。它是为解释场景而创建的虚拟数据。由于机密性,无法共享实际数据。

enter image description here

关于数据-

  • 客户购买了允许使用x $的订阅 提供的服务数量。
  • 一个客户可以有多个订阅。订阅可能在时间上重叠或可以按时间序列化
  • 每个订阅的使用限制为x $
  • 每个订阅都有一个开始日期和结束日期。
  • 截止日期后将不再使用订阅。
  • 客户在使用服务时有自己的行为/模式。这由其他衍生变量每月使用率,平均每月使用率等描述。
  • 客户可以使用$ x以上的服务。这由列指示 上表中的“ ExceedanceMonth”。价值1表示客户 在订阅的第一个月就超过了$ x,价值5说 客户在订阅的第5个月内超过了$ x。的价值 NULL表示尚未达到限制$ x。可能是
    要么是因为

     subscription ended and customer didn't overuse
      or 
     subscription is yet to end and customer might overuse in future
    
  • 上述情况或条件之后的第二种情况是我想要的 预测。在尚未结束的订阅和客户中 尚未过度使用,何时会达到限制。即预测 上表中的ExceedanceMonth列。
  • 在达到此模型之前-我有一个使用决策树构建的分类模型,该模型可以预测客户是否要超过限额,即可以预测接下来2个月内LimitReached = 1或0。我不确定是否应该使用所有数据训练此处讨论的模型(预测事件发生的时间)并在Limitreached = 1的客户/订阅上测试/使用该模型,还是仅对将达到Limitreached的客户/订阅进行训练= 1

我研究了生存模型。我知道可以使用像Cox这样的生存模型来了解危害函数,并了解每个变量如何影响事件发生时间。我尝试将预测函数与cox一起使用,但我不知道是否可以将传递给“ type”参数的任何值用于预测实际时间。即我不明白如何预测“何时”超出限制的实际值

在这种情况下,生存模型可能不是正确的方法。因此,请告诉我解决该问题的最佳方法。

#define survival object 
recsurv <- Surv(time=df$ExceedanceMonth, event=df$LimitReached) 

#only for testing the code
train = subset(df,df$SubStartDate>="20150301" & df$SubEndDate<="20180401") 
test = subset(df,df$SubStartDate>"20180401") #only for testing the code

fit <- coxph(Surv(df$ExceedanceMonth, df$LimitReached) ~ df$SubDurationInMonths+df$`#subs`+df$LimitAmount+df$Monthlyutitlization+df$AvgMonthlyUtilization, train, model = TRUE)
predicted <- predict(fit, newdata = test)
head(predicted)

 1           2           3           4           5           6 
 0.75347328  0.23516619 -0.05535162 -0.03759123 -0.65658488 -0.54233043

先谢谢您!

1 个答案:

答案 0 :(得分:1)

生存模型适合您要尝试做的事情。 (我假设您从现在开始已经正确估计了模型。)

关键是要了解模型的内容。对于Cox,predict()中的默认数量是线性组合(b0 + b1x1 + b2x2 ...,尽管Cox不会估计b0)。仅此一项不会告诉您任何时间。

type="expected"指定为predict()会在预期的持续时间上为您提供-平均时间,直到客户达到其数据限制为止,以及后续时间(持续时间)您观察到客户)设置为等于客户的实际工期(从coxph模型对象检索)。

coxed软件包还将为您提供预期的持续时间,可以使用不同的方法来计算,而无需担心后续时间。在输入newdata参数时,它也要宽容一些,特别是如果您考虑到特定的协变量特性。请参阅小插图here包。

有关coxph.predict()的更多信息,另请参见this线程。