题
我有一个管理设备的系统。当这些设备有故障时,将为它们提供服务。想象一下我的数据集看起来像这样:
ID
Type
# of times serviced
示例数据:
|ID| Type | #serviced |
|1 | iphone | 1 |
|2 | iphone | 0 |
|3 | android | 1 |
|4 | android | 0 |
|5 | blackberry | 0 |
我想做的是我要预测“所有尚未维修的设备,哪些设备可能会得到服务”? (即)确定“处于危险”设备。
问题是我的培训数据将被#Serviced> 0。任何#服务= 0都不会被冻结,并且似乎没有有效的候选人在培训中包括。 (即)失败时,它将得到维修,因此计数将上升。
这是受监督还是无监督的问题? (受到监督,因为我已经维修且未服务的标签,无监督,因为我想通过识别危险的设备进行服务,并在那里进行服务)
我应该在培训中包括什么数据?
笔记:
该示例显然简化了。实际上,我有更多描述设备的功能。
解决方案
在服务手机以创建生存模型时,您应该包括数据。这些模型通常用于可靠性工程以及治疗功效。对于可靠性工程,将您的数据拟合到Weibull分布非常普遍。甚至飞机制造商都认为该模型在用三到五个数据点进行校准后是可靠的。我可以强烈推荐R包“ FlexSURV”包。
您不能使用典型的线性或逻辑回归,因为您的人口中的某些手机会离开您的观察期,而无需维修。生存模型允许这种缺失的信息(这称为审查)。
通常您会拥有以下数据
|ID| Type | serviced | # months_since_purchase
|1 | iphone | 1 | 12
|2 | iphone | 0 | 15
|3 | android | 1 | 2
|4 | android | 0 | 10
|5 | blackberry | 0 | 5.5
使用该数据,您可以在R中创建以下模型
require(survival)
model <- survfit(Surv(months_since_purchase, serviced) ~ strata(Type) +
cluster(ID), data = phone_repairs)
这 survfit.formula
Surv(months_since_purchase, serviced) ~ strata(Type) + cluster(ID)
表示这 months_since_purchase
是进行观察的时候, serviced
如果手机维修,则是1,否则为0, strata(Type)
将确保您为每部手机创建不同的生存模型,cluster(ID)
将确保与同一ID有关的事件被视为群集。
您可以通过联合模型(例如 JM
.
其他提示
这是监督的学习问题。 Type
是一个预测指标。 #serviced
分类器是目标变量。模型经过了您已经拥有的样品设置的培训。最好的猜测是,任何模型都不会具有实质性的预测能力。 Type
是不足够的。
尝试在模型中加入更多因素(预测因子)。喜欢 years_being_in_usage
, equipment_model
, have_been_in_service_before
等等。您获得的越多,您可以训练的模型越好。