【发布时间】:2021-05-20 20:16:22
【问题描述】:
我的 pandas 数据框由 3 列组成,其中包含有关贷款的信息:
LoanKey ProbOfDefault EL(expected loss)
1 100% 546
2 90% 102
3. 92% 1009
. . .
. . .
. . .
303 13% 68
我需要找到具有最高累积EL 值的贷款组合,其违约概率在0.9%-1%. 之间
例如,一个组合可以包含 3 笔贷款:
loan1 - PD=30%; EL=372
loan2 - PD=10%; EL=1792
loan3 - PD=3%; EL=123
cummulative EL=372+1792+123=2287
cummulative PD = 30%*10%*3%=0.9%
我尝试将我的 pandas 列转换为列表并使用 itertools.combinations 查找所有可能的贷款组合并计算每个组合的 PD 和 EL,选择一个使用 0.9%<=PD<=1% 和最大值的组合。 EL,但我的解决方案计算时间太长,因为可能的组合数量非常多。
有没有更聪明的方法来解决这个问题?
【问题讨论】:
-
不知道你的数据集有多大或你想要达到的最优值有多接近,但这是一种贪婪的启发式方法,按 PD 排序并取走所有贷款,直到累计超过 1%可能会产生相当好的结果。
-
感谢您的回答,兰迪。我的数据集包含 310 个观察结果,所以它不是太大。你有一个贪心启发式算法的例子吗?或者我将如何按 PD 进行排序?会是降序吗?
标签: python pandas algorithm numpy