问题域 我正在开展一个项目,该项目涉及建立一个模型,为人类主管提出收入保护索赔的下一个最佳步骤提供建议。
收入保护是一个保险领域,涉及在被保险人生病或无法工作时为其提供一定比例的收入。这是一个安全网,旨在在您生病或在困难时期跌倒时为您提供帮助。我们的许多客户都患有癌症、抑郁症、骨折等,并利用通常由他们的公司提供的保险服务。
在我们这边,我们有许多人工主管来管理正在进行的索赔。这意味着安排医生的预约、获取最新的医疗记录和评估/诊断、安排康复、与客户交谈等(所有这些费用也在他们的保险范围内)。这些管理项目是有限的、分类的并被描述为行动。
主管的工作是帮助客户尽快重返工作岗位 (RTW),既可以帮助客户康复/重新站起来,又可以减少处理企业索赔所产生的成本。
我有描述过去 20 年中每位主管对每项索赔采取的行动的数据集(时间序列/顺序数据),以及描述索赔进展的文本数据,最后是描述索赔和客户的分类数据(类型疾病、年龄、职业等)
我正在尝试构建的是一个推荐系统,它利用数据来推荐哪些操作可以最大限度地提高给定客户在正在进行的索赔中重返工作岗位的可能性。
我试过的
使用上述数据,我建立了一个神经网络来预测封闭索赔的结果。NN 是 LSTM 和 Dense 层的组合——LSTM 用于顺序动作数据,Dense 用于分类数据,Dense 用于文本数据的 TfIdf 转换。有 39 种可能的结果,其中之一是重返工作岗位,网络表现相对较好,准确率约为 70%。
我曾计划像这样使用完成的模型:遍历所有可能的动作,并将每个动作附加到相关声明中,以生成一个新的“假设”动作序列。对于每个假设的序列,通过训练的模型进行前馈,并查看哪个动作在对应于返回工作的输出向量的索引处最大化“分数”。使这个分数最大化的动作就是推荐。下面显示了一个包含 10 个操作的正在进行的索赔的简单玩具示例:
scores = []
# ongoing_claim.shape = (10, 30)
for action in potential_actions:
hypothesis = ongoing_claim.append(action)
# ongoing_claim.shape = (11, 30)
hypothesis = pad_sequence(hypothesis)
output = model.predict(hypothesis)
scores[action] = output[index_for_return_to_work]
推荐将是与 中的最高值对应的键scores。
不幸的是,这不起作用。无论哪个动作,当我在模型中前馈新动作序列时,返回工作的分数保持不变——没有任何变化。我认为这是因为考虑到用于训练模型的数据量,简单地添加一个微小的新数据点并不会增加足够的方差来扰乱输出。我尝试在最后一层同时使用 sigmoid 和 softmax 激活函数,但这也不起作用。
问题
我应该使用什么样的模型来利用所有数据,然后检查正在进行的索赔并推荐使特定结果的概率最大化的行动(在这种情况下是重返工作岗位)?