2020全国大学生数学建模比赛C题总结
2020全国大学生数学建模比赛C题总结首先瞎逼逼一番,吐槽一下题目和比赛经历,对这部分不感兴趣的可以跳过:
虽然我是周六下午才开始做的… 总的比赛时间不到两天,不过好在一个人,不怕拖队友。至于题目,我第一眼就喜欢上了 C 题。我想,恐怕很多人都喜欢 C 题吧,因为赛后做了一个总结,发现学校选择 C 题的,比选 B、A 题的加起来还要多。
为什么选择 C 题呢?因为有数据处理…
所以无论它多难,我都选它,哈哈哈。
仔细看这一题,它与机器学习好像有区别啊。说起机器学习,我会想到:
分类
回归
拟合
预测
但是,这题… 好像不是一种,用数据拟合,然后再预测的问题啊(机器学习的通俗定义)
好吧,选都选了,只能硬着头皮上了。
问题分析
根据附件1,定制一个量化的信贷风险;
为银行制定一个信贷策略
有突发状况是,上面两个问题应该怎么重新规划?
三个问题,我们分别称之为问题一、问题二、问题三。
数据说明
附件1:sheet1:给出了企业的代号,企业有无违约的情况,信用等级
sheet2/3:给出了企业的大约 2 年的进/销 量的发票数据,
附件2:给出了企业的大约 2 年的进/销 量的发票数据。没有给是否违约、没有给信用等级
附件3:给出了银行的利率,以及相应利率下,不同信用等级的企业,不愿意贷款的概率(原作是比率,我感觉能用比率近似概率)
问题一求解
你们看,附件1 比 附件 2 多了什么?信用等级、以及有无违约记录。而问题二是要我们求附件二中的企业的信用风险的。所以,仔细一想,肯定是在暗示我们,1、用进/销 量数据,来评价企业的信贷风险。2、信贷风险的量化指标,需要建立在企业信用等级、是否违约两个变量上。3、设法建立进/销 量数据与信用等级、是否违约的关系。
好了,第一步咱们清楚了,就是要建立信贷风险与信用等级、是否违约的联系咯~
我查阅了一些文献,虽然说得都很复杂,但概括来说,就是一句话,我银行借钱给你,你还的起吗?这就是信贷风险了(说得比较通俗了,有点对不起学金融的同学们)
于是,我将信贷风险定义为:企业违约(赖账不还)的概率。
而机器学习的知识告诉我们,分类模型除了能够自动判断个体的类别之外,还能够计算出个体,属于该类别的概率。于是,这不就是一个机器学习问题了吗?
这个问题就是:根据进/销 量数据,训练一个分类模型,然后将模型的输出,确切的说,概率输出,作为信贷风险,Over。
但是,进/出 量数据是时序性的呀,如果按照上面的思路,那肯定是要一个企业作为一个样本个体。可是…,这个样本个体也太奇怪了吧,是一个时序数据,哇,都能构成一个表格了。。。
按照上面的说法,这有点接近自然语言处理了,也就是一片文章,对应一个类别。这里是一张时序数据表,对应一个类别。天!麻烦!
有些大佬可能已经豁然开朗,用 NLP 来解决啊!!!
否也,这种跨越对我来说,有如天堑(虽然我是搞 NLP 的)
因此,我决定,转换一下我们的数据集。
数据处理
首先,如果按照上面的思路,用机器学习模型的输出,作为信贷风险。那么就要让数据变得简单一点。
原始数据是这样的:多个企业,一个企业包含了大约 2 年的进/销数据,一个企业对应一个标签(是否违约)。
我们希望的数据是这样的:一个企业,对应一个向量(行列都行),并对应一个标签,这样才能用机器学习模型。
因此,必须将时序数据弄掉!!!
由于数据是按天给出的,首先,为了简化,我们以 30 天为单位,将数据合并!
然后,用一条曲线(我用的是 9 次多项式),拟合时序数据。有了曲线之后,我们不就可以用函数的系数,来替换原始数据了么?
这样,一个企业的数据,就从对对应表格(时序数据表),转换为对应函数的系数(向量)了。
等一等,误差怎么办?用曲线拟合数据,肯定有误差的嘛。
好,误差我们是用什么来度量的? 常用的有 R 方对吧。那就计算出 R 方,然后把 R 方也作为企业的数据之一,不就得了。
可能有人犹豫了,可以吗?
好,拟合的曲线可以一定程度代表企业进/销的基本规律,没问题吧?
R 方计算了误差。换个角度想,可以代表企业的进/销,偏离拟合曲线的程度,对吧?
这不就得了么?
当然,误差是肯定会有的。但至少经过这样的计算,解决了我们的燃眉之急吧。为了方便讲解,我们将这个数据成为 一数据 吧。
有人还会问,信用等级呢?我们不能忽视这个数据吧?da si ka ni。
且看我怎么处理,我们可以像 NLP 的 Word2Vec 那样。我们用一数据为输入、信用等级为输出,训练一个模型,然后用模型的参数,或者其他东西作为 二数据 不就得了么?
之后再用 二数据 为输入,建立一个机器学习模型,用来计算企业是否违约的概率。 Case Close!
问题二 求解
制定银行信贷策略是吧?
怎么制定?无非是利率、期限、额度咯~
期限我们不管,因为没依据。利率和额度紧密相连,都是钱的问题嘛。
让我们想象银行是为了干什么的。商业银行肯定是为了赚钱啊,哈哈哈哈。
于是,问题转换为,求解一个优化问题,即选择合适的利率、额度,使得银行的利润最高。
so easy?ok?
于是,最根本的问题,就要对银行的利润建模咯~~
利润的期望 = (1+利率)^(时间) X(企业不违规的概率)X(企业愿意借钱的概率)
用期望近似利润,case close,say goodbye。
至于优化问题,加上题目约束后,就是一个约束优化问题了,怎么求解?方法实在太多了。我们训练机器学习模型,不就是求解一个优化问题吗?作为弄机器学习的,你不会连求解一个优化问题都不会吧?
有的人会再次反驳:可我们这次求的是一个约束优化问题啊!
我会答:你用罚函数的方法,不就可以将约束优化问题,转化为无约束优化问题了吗?
问题三
突发状况会影响企业的运营状况,所以我们只要将 一数据 的 R 方微调一下,不就得了吗?????
有点简答吧?
最终总结
C 题,似乎是最简单的。但处理数据,比较麻烦,可能很多人卡在这里的吧。最难的一个点就是:如何将一个时序表,对应到一个标签的问题了吧。
好了,最后一次数学建模比赛了,大家江湖再见吧。
————————————————
版权声明:本文为CSDN博主「zhuo木鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42141390/article/details/108580140
页:
[1]