风险评分(risk scores)是利用简单的分类模型使用户能够简单地通加、减、乘少量的数字就能快速地评估风险,这样的模型广泛应用在了医疗保健、金融风险等领域中,在"Optimized Risk Scores"这篇论文中,提出了一个非常重要的方法去学习风险评分,将风险评分问题抽象为了混合整数非线性规划的问题,这种方法最大的好处是得到的评分是整数而不是小数,这就大大降低了在很多领域应用时的可解释性,在我现在复现的双层可加风险模型的论文中就提到了未来的工作,提出了将双层可加风险模型与RiskSlim结合,得到具有更强可解释性的金融风险预测模型,刚好顺着这个思路才找到的RiskSlim这篇论文,这篇论文的作者也实现了论文中的方法并共享到了github:https://github.com/ustunb/risk-slim;但是原作者的开发环境等可能和我有些不同(原作者应该是在linux下开发的),中间遇到了不少的坑才得以将example demo程序跑起来。
1、将代码克隆到本地压缩后,导入Pycharm,同时在目录下创建本项目用到的虚拟环境(venv)
2、在根目录下命令台打开,安装相关依赖包:
3、安装riskslim:
这里在安装riskslim时,windows环境下会提示找不到"m.lib"文件,这时候打开setup.py,删除48行、55行的代码,不用管它,删除后在此执行python setup.py install,riskslim可以正常安装
4、安装完成后现在如果运行demo程序:examples/ex_01_quickstart.py,会提示找不到log_loss.py模块,这个地方到现在我也不明白为什么只知道解决的办法,而且如果在控制台直接通过 python ex_01_quickstart.py执行的话是不会报任何错误的:
这边因为我已经解决了就不再去复现那个错误了,具体报的就是ModuleNotFoundError,找了很多资料论坛还是没有一个正确的解决方案,不管是环境变量、解释器路径都是换了又换,也在不同的电脑上测试过依然不行;
最后发现了一个规律性的敷衍解决办法,就是打开项目的时候,不要打开这个项目文件本身,而是打开项目文件上一级文件,比如你的risk-slim-master项目是存放在父文件夹test中,那么就用pycharm去打开test文件夹不要打开risk-slim-master本身,这样再通过pycharm直接运行,就不会报任何错误,可以运行成功。
5、到第四步其实这个代码的demo示例代码就已经跑起来了,但是其实我们通过pip安装的CPLEX(IBM的一个线性规划求解器)是社区免费版的,对于变量个数等都有限制的,需要用到学术版才能对一些比较复杂的问题求解,在这里给出CPLEX学术版的windows安装包,这是我个人通过校园邮箱下载到的,也有linux安装包,这里就不提供了:
链接:https://pan.baidu.com/s/19Ks05T_RiN5nUQ38bXkhPw
提取码:emb8
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V4的分享
这个安装后会是一个CPLEX的IDE,比较大,不过我们只需要里面的cplex python包,之后可以把IDE删掉,也不用担心占用太大空间
在把项目中的cplex替换为学术版cplex之前,先需要删除掉原本的cplex
pip uninstall cplex
之后开始安装CPLEX IDE,安装目录建议就保留默认值这样好找一些,安装完成后在这个路径下(因为我这里已经把CPLEX IDE删了所以借用别人的一张图):
将这个cplex文件夹直接复制粘贴到虚拟环境下的site-packages中即可,这时候再运行比较大规模的问题时也不会提示社区版变量限制错误了,到此结束。
运行起了这个程序后,下一步要做的事情需要对单个变量分别设置上下界,因为目前程序中对于变量中的上下界设定都是一刀切的,
这样就不太灵活,需要阅读源码后再去做一些修改。