我对AI/ML空间比较陌生,但来自编程背景。
问题是:我有一个用户交易数据集,他们从单个贷款提供者那里获得短期贷款,我需要将贷款偿还与特定的贷款收据相匹配。
样本数据集如下:
transactionDate __x_
2017-09-01 x 500信贷
2017-09-08 \ 250 x借方
2017-09-17 x 294
2017-12-11 \x{ 300 }信贷
2017-12-15 x 150
2018-01-07
2018-01-12 \x{e76f} 398.8
2018-01-19 x- 200
2018-02-02
在这里,“creditDebit”列的“信用”值表示已收到的贷款,“借方”表示以前收到的贷款的偿还。
正如你所看到的,前3行很容易匹配,因为有一个信用额(金额500),其次是两个借方(金额250和294)。
从第四排到第四排,我不知道怎样才是最好的匹配。
我已经能够手动确定哪一笔还款对哪笔贷款最有意义,但试图把它写成if-否则的函数在我看来是非常困难的,而不是最好的。例如,最困难的部分是确定2018-01-12年的借方,这是两个先前收到的贷款的合并还款交易。我已经手工计算了这一借方的合理比例,即2017年收到的贷款为170英镑,2018-01-11年度贷款为228英镑。
我是否可以使用某种模型/算法来匹配哪些借方交易最有可能是哪个信用交易的偿还?如果还款交易看起来像是多个先前贷款的复合偿还--那么,如何合理分割借方以满足信贷交易?
我不知道这对你是否有意义..。
我试着考虑如何使用聚类算法,但我不使用,因为集群不会显示信贷和借方交易的匹配,特别是复合还款借方。
任何关于如何解决这个问题的想法都是非常感谢的!
发布于 2020-01-14 15:37:54
我不认为机器学习是正确的工具。这很难(至少对我来说)是一个学习问题。
你可以考虑将遗传算法作为另一种方法。根据您对如何手工进行匹配的描述,以下假设似乎有效:
如果上述情况属实,您可能希望将遗传算法视为一种方法。对于GAs,需要指定表示、目标函数和变异/交叉操作。我认为以下几点是可行的:
群体中的个体(即候选解)被表示为长度N的向量,其中N是借方总数。这个向量中的每一项都将借方分配给一个信用证。例如,单个[1, 1, 2, 3, 2, 3]意味着前两个借方与第一个信用相关联,第三个借方与第二个信用相关联,第四个借方与第三个信用相关联,依此类推。
您希望最小化的目标函数由上面的两个要点描述。我认为以编程方式计算这个函数应该是相当容易的。对于每个信用,计算(原则+利息)和\sum debits之间的差额的大小。将这些差异相加,然后对信用和还款之间的时间间隔增加一个惩罚。实现惩罚的一种简单方法是在解决方案V和排序对应的sort(V)之间添加编辑距离。你会想玩的时间惩罚的重量,这样的信用和借方之间的一些延迟是允许的,但你仍然赞成快速偿还。
你需要选择合适的变异和交叉操作。对于这种表示形式,传统的两点交叉可能工作得很好,而均匀突变可能工作得很好。
顺便说一句,我当然希望这不是一种现实世界的贷款偿还方式。当借方不可避免地被分配给不正确的信用时,你会和一些愤怒的客户一起结束。
https://datascience.stackexchange.com/questions/66453
复制相似问题