序列数据的监督学习

数据挖掘 神经网络 分类 深度学习 顺序模式挖掘
2022-02-26 18:15:45

我正在对客户交易数据进行信用风险建模,其中一部分如下所示:

str(x)
'data.frame':   412516 obs. of  26 variables:
 $ Tenure           : num  1.26 1.25 1.26 1.31 1.32 ...
 $ Product          : Factor w/ 24 levels "BACKHOE LOADER",..: 4 4 4 9 9 9 9 9 9 9 ...
 $ Net.Exposure     : num  333339 528049 327335 350000 460000 ...
 $ OD.On.31.01.2017 : num  0 90386 0 0 1099692 ...
 $ LM.Bucket        : Ord.factor w/ 11 levels "0"<"1 TO  30"<..: 1 1 1 1 11 11 11 11 11 11 ...
 $ Bucket           : Ord.factor w/ 11 levels "0"<"1 TO  30"<..: 1 3 1 1 11 11 11 11 11 11 ...
 $ Billing          : num  65380 0 8800 6339 8331 ...
 $ Fin.IRR          : num  13.5 14.6 14.6 18.1 23.3 ...
 $ NPA.Flag         : Factor w/ 2 levels "No","Yes": 1 1 1 1 2 2 2 2 2 2 ...
 $ Inst.Due         : num  0 0.85 0 0 3 3 3 3 3 3 ...
 $ FR.On.31.01.2017 : num  65380 0 38940 35043 499860 ...
 $ POS.On.31.01.2017: num  56453 0 32920 33368 293943 ...
 $ Del.String       : int  2 1 1 1 53720 53720 53720 53720 53720 53720 ...
 $ Territory        : Factor w/ 43 levels "AGRA","AHMEDABAD",..: 41 41 41 41 41 41 41 41 41 41 ...

像 OD(逾期)和 LM.Bucket(直到上个月他的贷款还款到期的月份)这样的变量每个月都会发生变化。我有 2 个任务:预测桶和 NPA 标志(非执行资产)

我仅基于 Jan 数据(x)为此建立了一个模型。但我的问题是,由于这些变量每个月都在变化,我是否应该将其视为顺序数据并在其上构建深度学习模型(HMM/NN)?如果我应该如何处理产品类型等静态变量?

我问过我的老板,他说不应该这样做,因为外部经济因素会随着时间而变化。这是担心的理由吗?

2个回答

这基本上需要一个循环网络,比如LSTM但是,如果您只有 2 个动态属性,我认为您不会有那么幸运,因为它们可能会像您的老板所说的那样受到外部因素的影响。但是,无论您使用哪种型号,都会发生这种情况。

您不应该丢弃静态属性,除非它们对于每个测试用例都是相同的。例如,应始终包括农民/政治家/面包师类别,但您称其为“静态”,但它并非完全静态,因为它对于您的测试用例中的每个样本都不相同。

监督学习的目标是尝试创建一个数据模型,帮助您预测未来的价值。你可以通过选择features你的数据集——你称之为变量——你认为很好地代表问题来做到这一点。

我不是专家,但我知道经济受到大量变量的影响,因此即使您根据其中一些变量创建一个适合您当前拥有的数据的模型,它也可能会在您没有考虑的时刻变得过时开始影响最终结果。这就是我相信你老板所说的。

现在,如果您决定训练一个神经网络来预测 Bucket 和 NPA,那么您的第一步就是选择您将在模型中考虑哪些变量。保留“静态”变量可能会使您的网络对不同的产品类型(例如,不同的产品类型)有不同的预测,但这取决于数据在这些静态变量中的分布方式。如果您选择不使用静态变量,您的模型将在进行预测时完全忽略它们,这可能不是您想要的。