数学建模社区-数学中国

标题: 2020全国大学生数学建模比赛C题总结 [打印本页]

作者: 杨利霞    时间: 2021-5-24 15:54
标题: 2020全国大学生数学建模比赛C题总结
2020全国大学生数学建模比赛C题总结
8 _+ m& [) G! x* A/ ^6 |6 y3 u
( }& L7 U. c! f! U首先瞎逼逼一番,吐槽一下题目和比赛经历,对这部分不感兴趣的可以跳过:! I- B2 A, @+ N1 M0 J8 z
虽然我是周六下午才开始做的… 总的比赛时间不到两天,不过好在一个人,不怕拖队友。至于题目,我第一眼就喜欢上了 C 题。我想,恐怕很多人都喜欢 C 题吧,因为赛后做了一个总结,发现学校选择 C 题的,比选 B、A 题的加起来还要多。
& k. j; G" f0 f2 V- L1 [2 Y6 `- D9 v7 k' I' f  M& ]; d8 I

; t$ d2 ]8 {  m0 H. [) T- i为什么选择 C 题呢?因为有数据处理…
3 y& u7 V+ W4 O. V9 q2 N" O) p$ m5 l; m7 }: w$ J) l

6 a2 o6 a) y; {2 `4 x; U" g所以无论它多难,我都选它,哈哈哈。2 P% t0 p. x& T0 U/ {$ r& j5 H

2 t* A1 A% ]9 |( Y# A7 n/ V

' `* Z  Q8 J, ~$ q仔细看这一题,它与机器学习好像有区别啊。说起机器学习,我会想到:. f) [7 h! W0 p: M7 i) D, {, J

0 P4 u: v( y! `0 ~

9 n/ b' E6 B% s+ _+ t$ M分类1 D3 j  I6 I3 P( w3 `/ y
回归- w7 z5 I( J6 h- t
拟合: s3 y, I! u( J- r& h
预测
) ^1 T% Y: i; w8 x但是,这题… 好像不是一种,用数据拟合,然后再预测的问题啊(机器学习的通俗定义)" L6 D% S4 H& Y+ J3 P
  F2 b- d, Q& V* H" y
  l5 j; _4 z, ~5 i7 `* ^& U* i
好吧,选都选了,只能硬着头皮上了。( ~- h6 w$ g- b$ k, k$ h

! `$ d4 l" T# ]+ ~; k6 ^
0 m4 B( t) b4 c3 A* Q2 C' b" m) v
问题分析4 o8 H5 j* ?; M4 U5 {8 t+ i
根据附件1,定制一个量化的信贷风险;
- g( y7 z9 P% k9 s为银行制定一个信贷策略/ Q9 k$ G: h7 r3 M+ ]
有突发状况是,上面两个问题应该怎么重新规划?
- {& D, c" O, t& w; e三个问题,我们分别称之为问题一、问题二、问题三。
6 a- s3 K6 J8 ]3 |( L* `1 A; f3 O! W2 z3 A  F# [8 d: R6 S* }9 m
. _- f% C# H  ?. T2 w! Y
数据说明
# b3 g& o. x' ^; }7 S$ t附件1:sheet1:给出了企业的代号,企业有无违约的情况,信用等级1 q4 \( A1 |8 t8 y. n7 f
sheet2/3:给出了企业的大约 2 年的进/销 量的发票数据,, a0 F) X4 B( j8 i- Z1 o6 C: @
附件2:给出了企业的大约 2 年的进/销 量的发票数据。没有给是否违约、没有给信用等级
" F/ _4 t3 h) E( X! w- ]+ h0 t8 X- p附件3:给出了银行的利率,以及相应利率下,不同信用等级的企业,不愿意贷款的概率(原作是比率,我感觉能用比率近似概率)
$ W4 X7 j- _, R$ m5 j2 |6 X! F
; z8 L+ v" i8 b: i+ E! W- f
' l; _1 Q- I  Y+ S0 C. H
问题一求解
5 A  Q6 q' N# L' k你们看,附件1 比 附件 2 多了什么?信用等级、以及有无违约记录。而问题二是要我们求附件二中的企业的信用风险的。所以,仔细一想,肯定是在暗示我们,1、用进/销 量数据,来评价企业的信贷风险。2、信贷风险的量化指标,需要建立在企业信用等级、是否违约两个变量上。3、设法建立进/销 量数据与信用等级、是否违约的关系。
" v  U- {  `& G0 A$ B  t
  M+ Y; g! R9 s2 C4 {! w8 `
' ~; v$ t% a' z. j
好了,第一步咱们清楚了,就是要建立信贷风险与信用等级、是否违约的联系咯~
0 w' u4 E8 f7 f! ?: v" q8 y, i) n- u3 g% ^

& k! ]5 w1 v9 `! y我查阅了一些文献,虽然说得都很复杂,但概括来说,就是一句话,我银行借钱给你,你还的起吗?这就是信贷风险了(说得比较通俗了,有点对不起学金融的同学们)" N, ^8 h. w; [, l5 i( n* v

$ O  I7 ]% N8 g6 p+ S! U! T
4 R- }( D  o* `( U# b
于是,我将信贷风险定义为:企业违约(赖账不还)的概率。
; S: f; D# ^: |+ E+ `( R9 ^" Z7 u! b6 g* d4 h0 v2 D
7 }# ]/ Q/ f( i- q
而机器学习的知识告诉我们,分类模型除了能够自动判断个体的类别之外,还能够计算出个体,属于该类别的概率。于是,这不就是一个机器学习问题了吗?, I5 g% K1 W* B  c

3 ^: `- y! q0 @4 C
7 ~8 m& m; ]0 o. y' x6 w' V: M
这个问题就是:根据进/销 量数据,训练一个分类模型,然后将模型的输出,确切的说,概率输出,作为信贷风险,Over。
* G# S8 D' ?' |
- O6 ]4 }, ~' c

, t% ?3 i  ^& F& U但是,进/出 量数据是时序性的呀,如果按照上面的思路,那肯定是要一个企业作为一个样本个体。可是…,这个样本个体也太奇怪了吧,是一个时序数据,哇,都能构成一个表格了。。。7 C2 p+ C# R5 m: V
& K: x8 e0 _! R: h& V& K- B
8 R% ^. Y& Q+ D) A7 G0 g
按照上面的说法,这有点接近自然语言处理了,也就是一片文章,对应一个类别。这里是一张时序数据表,对应一个类别。天!麻烦!9 ?- w& S: C. y5 J6 ^, M# L1 @  l: C

! U- P4 n/ M: `- H& S) W

) k7 `3 _" o' g; x* A' h有些大佬可能已经豁然开朗,用 NLP 来解决啊!!!
, f- H1 C- T4 S% l8 r) e' @. h) R- ]5 v7 ~$ D# J7 q8 H- U

5 I4 b1 T" v1 T! E5 `# a0 R3 f7 k2 ]否也,这种跨越对我来说,有如天堑(虽然我是搞 NLP 的)- a- A0 M0 M5 l7 G
1 q( F6 q1 v) M. [8 y

( j, c! p1 J" B, U因此,我决定,转换一下我们的数据集。
: y# @; J( S+ g6 x# E( E7 w& \" d/ O# w) l6 i$ c
, t4 `: r1 K; W
数据处理/ u- H# ^! B, v
首先,如果按照上面的思路,用机器学习模型的输出,作为信贷风险。那么就要让数据变得简单一点。
, Y5 r' G, N1 |/ M
& S' ?! V% r5 k9 V- a. j% L

9 o" F) v+ a6 v# F% ]/ B- w  a# `原始数据是这样的:多个企业,一个企业包含了大约 2 年的进/销数据,一个企业对应一个标签(是否违约)。5 \- e! @7 e4 E+ x& @) T
3 E' H! j/ Z) g# w) y

9 w& ?: u+ @+ E0 w, W! v我们希望的数据是这样的:一个企业,对应一个向量(行列都行),并对应一个标签,这样才能用机器学习模型。9 u7 k  y* @' E' |" U6 J4 {$ W2 K

( O1 @  u) S  E. f! N
* K" }' C! K- H9 a- M
因此,必须将时序数据弄掉!!!- h6 O. H( s, I$ L" o# y+ L

/ K( ~: F, W, K: d5 M4 {& V
: |& c% [# T0 l# M5 b
由于数据是按天给出的,首先,为了简化,我们以 30 天为单位,将数据合并!
+ }/ ^; J5 n7 K; @1 k9 J' w$ I! n; V2 Q1 C8 O

* B0 e3 B/ C! l5 L, j6 h% E+ w6 [然后,用一条曲线(我用的是 9 次多项式),拟合时序数据。有了曲线之后,我们不就可以用函数的系数,来替换原始数据了么?
2 E' ~% \$ \  i+ \! V9 q& A. g' z
' p3 N7 m" B% i3 y1 N
+ r6 v) r1 n7 o
这样,一个企业的数据,就从对对应表格(时序数据表),转换为对应函数的系数(向量)了。
2 m1 `. _1 X1 Z; ]1 |, h
5 h: {4 m. ]0 \+ a" m8 [9 F
, c# s: Q9 H) T5 ^
等一等,误差怎么办?用曲线拟合数据,肯定有误差的嘛。( y0 V) U, X2 Z* N: d* U8 S

- r# i- y1 p" m
/ \2 z0 b  q$ i2 @
好,误差我们是用什么来度量的? 常用的有 R 方对吧。那就计算出 R 方,然后把 R 方也作为企业的数据之一,不就得了。
5 l) ]3 K+ Z# u- x2 X) x8 y1 w, z; ~) N9 j. t, X. [$ b
5 z( t- U  c4 c( t
可能有人犹豫了,可以吗?: Y, a9 j  d0 @& ^# D

! l: \; n" G) a

+ S% [5 b5 Z+ X' l1 T/ z好,拟合的曲线可以一定程度代表企业进/销的基本规律,没问题吧?8 L9 v1 J0 Z4 l5 w3 J
4 Q# {: p' Q3 Q: s2 @
$ w1 w0 X% V- s7 z! U% [
R 方计算了误差。换个角度想,可以代表企业的进/销,偏离拟合曲线的程度,对吧?, L, U' V: a% F% ]& b  o4 Z, z
0 Q, q/ c: p# @, {  I: L

2 i- p" s4 |* q7 \  d+ w0 y这不就得了么?" ^/ O! c& k7 X* X; ~4 U
- P! z( g: z/ Y/ M
* |* W% c% Q, k4 f4 Q6 Y) C
当然,误差是肯定会有的。但至少经过这样的计算,解决了我们的燃眉之急吧。为了方便讲解,我们将这个数据成为 一数据 吧。+ S7 J' C! T% J0 W) m1 L7 P% O7 U6 k

* [. H6 N+ U3 D0 o# ]# X) Z4 N

2 ?  i6 d& J1 \+ f: i! H2 a有人还会问,信用等级呢?我们不能忽视这个数据吧?da si ka ni。
) t) Y0 u; P8 O
- w: S3 R$ b: ^$ V( r1 H$ _
. I8 l( z1 t5 U* Z
且看我怎么处理,我们可以像 NLP 的 Word2Vec 那样。我们用一数据为输入、信用等级为输出,训练一个模型,然后用模型的参数,或者其他东西作为 二数据 不就得了么?
; |! R6 y. J  k7 }- {- v
; P* V3 L# r* q( F" m# G2 w+ d! T

+ P& S+ M! p" a6 s0 O之后再用 二数据 为输入,建立一个机器学习模型,用来计算企业是否违约的概率。 Case Close!
2 |/ Q2 C, Q7 |- V  m5 l' ^: q( V) q

# M7 R0 v. b7 K; J, |$ F问题二 求解
6 f8 r  {9 w( y) g0 r制定银行信贷策略是吧?8 J/ o, M) ?# z: c6 a3 |

+ v  c4 k1 _! t4 _" w8 T
/ S( J& Y) H, h& ~' S4 f
怎么制定?无非是利率、期限、额度咯~
8 k# s: R4 ?7 ]0 o, X: ~; S* m6 Z% x' u
) A8 z. {8 A& w- K% s! b- K
期限我们不管,因为没依据。利率和额度紧密相连,都是钱的问题嘛。
7 n. X  L" H" M
) W% o# o1 u3 `8 p

, ?3 v; X/ a3 j) O让我们想象银行是为了干什么的。商业银行肯定是为了赚钱啊,哈哈哈哈。% k7 W' J! ?0 Q" B
" s8 p! ~8 v' I
" n& p) P1 n, F4 z' f
于是,问题转换为,求解一个优化问题,即选择合适的利率、额度,使得银行的利润最高。
& _' P6 |1 ]2 P# o* f8 g" |& ?' Y2 a
, w# D2 t3 p+ {9 y) |! t/ G
so easy?ok?+ g. k+ \# O4 e% o8 W7 j

' J  A" u1 B4 W7 {2 }! ]

6 B; f- w( C, {& H  ]于是,最根本的问题,就要对银行的利润建模咯~~
- P3 W+ y5 Q/ [' j4 I. V) A4 P  E& p! W2 X" u

0 a! v0 y3 t' f利润的期望 = (1+利率)^(时间) X(企业不违规的概率)X(企业愿意借钱的概率)
/ Y5 m3 O) o0 }' X" y& [4 ^, h; q- h# s0 j' i4 i; Q" c  E

# \2 y; D; ~. r* B  B2 ]用期望近似利润,case close,say goodbye。
$ @* ?0 L+ x+ Y5 G# z
4 \9 U% b# }) {' V

7 A5 T2 m" r% g4 t/ H! p+ i) ]6 D至于优化问题,加上题目约束后,就是一个约束优化问题了,怎么求解?方法实在太多了。我们训练机器学习模型,不就是求解一个优化问题吗?作为弄机器学习的,你不会连求解一个优化问题都不会吧?/ _3 y% ~0 X' ~# b% O, ^. r
' f8 ]) K) M* Z
1 s% `8 I9 a2 K
有的人会再次反驳:可我们这次求的是一个约束优化问题啊!
( M7 H8 ^: g/ G5 a' A  K  S% l) w% v+ [2 o  Q
" C, r5 T* I, Q" Z2 \  F
我会答:你用罚函数的方法,不就可以将约束优化问题,转化为无约束优化问题了吗?  S1 i3 L0 D- M0 T6 U
6 m( o) S* r4 o7 ^8 Y

4 `4 u7 G; L6 L6 `+ `问题三
  x8 K9 d) g. `2 ?& U% t1 e" r+ ]突发状况会影响企业的运营状况,所以我们只要将 一数据 的 R 方微调一下,不就得了吗?????
9 e% \1 [5 I  _& I9 J1 O+ D4 R/ h% t0 J2 Q
3 i5 s8 K  A( O- ?0 a+ Q
有点简答吧?% |) |3 C: \. f7 p2 \* f

' }/ g9 s3 \  `5 G
4 S( Z5 o* H3 p* T  u8 X- I, c
最终总结
: h, x5 k$ E- Q9 \+ KC 题,似乎是最简单的。但处理数据,比较麻烦,可能很多人卡在这里的吧。最难的一个点就是:如何将一个时序表,对应到一个标签的问题了吧。
2 A9 R* h. L" q$ p& ~2 H4 V7 W
, g& O7 u0 a! d7 ?

, x( |: w( `- \! |好了,最后一次数学建模比赛了,大家江湖再见吧。* ^3 E8 z' c4 x- }" j
————————————————
! N5 [0 H/ s; v; V6 @' T' ]5 V0 ~! x. I' b版权声明:本文为CSDN博主「zhuo木鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1 x+ y- e. z! z: Q% n% U$ D原文链接:https://blog.csdn.net/weixin_42141390/article/details/108580140: J& p1 P% k) [" X2 N
/ L; G) d) p4 V/ h  E2 r. J" k" b

  ~% @3 t; m  r' E

风控大赛.jpg (209.44 KB, 下载次数: 0)

售价: 1 点体力  [记录]  [购买]






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5