ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

2020国赛C题一等奖复盘:信贷决策模型与数据处理全流程

2020国赛C题一等奖复盘:信贷决策模型与数据处理全流程 简介一份2020年全国大学生数学建模竞赛C题一等奖获奖论文及完整配套资料适合备战国赛及各类数学建模竞赛的高校学生也适合希望系统提升建模能力的研究者无论是初次参赛还是已有经验都能从中受益。内容紧扣C题完整求解流程从题目分析、模型构建到代码实现与结果处理均有覆盖便于读者对照学习获奖论文的框架和编程实践。压缩包共13个文件包含论文PDF、4个MATLAB脚本、2个Python程序以及6份Excel数据处理表格整体仅1.6MB轻量却覆盖了典型数模工具链。资源发布以来已有15228人学习下载是颇受欢迎的实战案例。其中MATLAB与Python代码涉及关联规则分析、指标权重计算和分题求解等关键环节Excel表格保存了行业分类与规模分类等前期处理结果论文PDF则系统展示建模思路、求解过程与写作范式可作为赛前演练和复盘的高质量参考。 2020年高教社杯全国大学生数学建模竞赛的C题“中小微企业的信贷决策”当年让不少队伍折在了数据处理这一关上——题目给的原始发票数据体量大、字段乱、噪声多很多队伍不是没有建模思路而是连一张能喂给模型的Excel表都整理不出来。这个zip包里装的是当年国赛一等奖的全套产出获奖论文、完整代码、处理好的Excel数据表格从题目原始数据一直铺到最终信贷策略和利率建议整条链路闭环完成没有任何断点。这套素材适合谁我建议这样吃如果你正在备战国赛、美赛尤其是准备选评价类、决策类题目的队伍别把它当资料包存网盘吃灰直接当“真题复盘案例”来啃。三块核心资产对应三类收获论文教你把现实问题翻译成可计算的数学步骤代码教你把纸面模型变成能跑出结果的东西Excel表格教你怎么从发票流水一步步整理出规范的模型输入。下面我按实际复盘顺序把这包内容一层层拆开讲。1. 项目整体概览这个zip里装的到底是什么1.1 2020年C题到底考了什么先说清楚题目本身。2020年国赛C题是典型的评价类加决策优化类问题银行有一批中小微企业的进项、销项发票数据包含123家有信贷记录的企业和302家无信贷记录的企业每个企业的交易记录有几百到几千条不等。题目要求你根据这些数据判断企业的经营实力和信誉状况设计一套信贷策略——哪些企业放贷、放多少、利率定多少。这类题目的坑在于没有标准答案。评阅老师不看你最终数字对不对而是看你整个逻辑链是否自洽数据怎么清洗、指标怎么构建、权重怎么确定、风险怎么分级、贷款策略怎么推导。很多队伍倒在前两步数据没洗干净指标口径不一致后面模型再花哨也白搭。这也是为什么这个一等奖包把Excel数据处理表格单独列出来——数据处理在评价类题目里就是地基地基不稳上面盖什么都塌。1.2 压缩包里的三个核心资产解压这个zip里面是三类文件每一类单独拿出来都能当模板用第一类是论文正文。这里建议重点看它的摘要和问题分析部分一等奖论文的摘要通常会把“用了什么方法、得到什么结论、策略效果如何”三句话说清楚这恰恰是很多队伍写不好的地方。第二类是完整代码。包含了从数据读取、指标计算、熵权法求解、TOPSIS排序到整数规划求解的全套脚本代码注释和分段逻辑都比较清晰基本能直接跑通。第三类是Excel数据处理表格。这是容易被忽略但价值最高的部分里面能看到原始发票数据是怎么一步步变成“企业月均销项金额”“进销项比率”“交易客户数”“交易频次变异系数”这些模型指标的每一张sheet都对应一个处理阶段相当于把数据清洗过程完整摊开在面前。2. 整体设计与思路拆解为什么这条技术路线能拿一等奖2.1 把“信贷决策”翻译成数学语言复盘这套论文时我最深的感受是一等奖队伍的强项不是会用多高级的算法而是能把现实问题精准翻译成可计算的数学问题。银行给企业放贷核心就三个问题企业有没有实力、企业守不守信用、钱怎么分配。“实力”被翻译成了销项金额、进项金额、企业规模等指标“信誉”被翻译成了交易稳定性、退票次数、往来客户质量等指标而“怎么分配”被处理成了一个带约束的优化问题。最关键的一步是把利率和客户流失率的关系引入模型——利率提高能增加单笔收益但可能导致优质客户流失这个动态平衡体现了银行经营的真实逻辑是论文中非常出彩的一个加分点。把现实业务语言翻译成指标和约束条件这才是评阅老师最看重的能力。2.2 为什么是“熵权TOPSIS0-1整数规划”这条路线整体技术路线可以概括为三步熵权法确定指标权重TOPSIS计算企业得分并排序0-1整数规划分配贷款额度和利率。这个组合在当年的参赛方案里不算冷门但胜在用得扎实。先看熵权法。评价类题目赋权一直是争议点很多队伍一上来就用层次分析法专家打分本质上是主观判断论文里很难自圆其说。熵权法的逻辑是指标的数据波动越大说明它携带的信息量越多权重就应该越高。这种客观赋权方式可复现性强而且和C题的数据情境高度匹配——你手里有几百家企业的完整交易数据指标本身就带着信息没必要用主观打分去干预。当年很多一等奖论文都选择熵权法不是因为它高级而是因为它合理且好写。再看TOPSIS。它解决的是排序问题在众多企业中找出“跟理想方案最接近、跟最差方案最远离”的那批企业。相比简单加权求和TOPSIS不要求指标之间完全独立还天然处理了量纲差异实现起来也就十几行代码。最后一步的0-1整数规划把银行的贷款总额约束、单户贷款上限、风险等级与利率档位匹配关系全部写进约束条件用整数线性规划直接求解。这套组合拳的思路非常清晰先评分分级再约束优化每一步都有明确的输入和输出评阅老师顺着论文往下读不会有任何卡顿。2.3 代码、论文、表格三者如何咬合这个包做得好的地方在于三个资产不是孤立的。论文里出现的每个公式代码里都能找到对应实现代码跑出来的每个结果Excel表里都有对应的中间数据。换句话说你完全可以对着论文在代码里逐步加断点检查数据再回Excel核对每一步的中间值是否一致。这种“可追溯性”是很多参赛队忽略的地方。不少队伍的论文和代码是两套逻辑论文写的算法和代码跑的实现根本不是一回事或者代码里换了几组参数论文结论却还是旧数据。一等奖团队的做法是表格是幕后的计算草稿代码是正式的生产工具论文是对外展示的最终成果三者严格同步。我在复盘时特意拿论文里一个指标数值去Excel源头找确实能一路追到最原始的发票记录出处。3. 核心细节解析与实操要点3.1 Excel表格里的数据清洗门道打开数据处理Excel第一张sheet往往就是原始数据概览。这里是整个项目中最见功力的环节也是我认为最值得抄作业的部分。原始发票数据有几个典型问题一是缺值。部分企业的发票记录不完整处理策略不是粗暴删除而是区分情况如果是企业整体数据缺失严重比如记录条数少于某个阈值直接剔除如果只是个别月份缺失就按该企业其他月份的中位数填充。二是异常值。单笔发票金额异常大或异常小都会严重干扰“月均销项”这类统计指标这里用箱线图法识别离群点按1.5倍四分位距做截断处理。三是口径问题。发票金额含不含税、进项和销项的日期口径是否统一这些不处理干净后面所有指标都会偏差。处理后的结果是一张结构化的“企业-指标”宽表每一行是一家企业每一列是一个模型输入指标。这里有个细节值得学习——每一列指标旁边都标注了计算公式和数据来源sheet名相当于给自己留了完整的操作日志。我强烈建议每个参赛队都建立这样的数据跟踪习惯因为最后写论文时你不可能记得每一列数据是怎么来的有这张表能省掉大量返工时间。3.2 熵权法与TOPSIS的关键步骤这里把包里的代码逻辑抽出来说一下重点讲清楚每个步骤为什么这么做。第一步是指标正向化。有的指标是越大越好销项金额、利润有的是越小越好退票率、波动率熵权法计算前必须把所有指标统一成“越大越优”的方向代码里直接做取倒数或取负值处理。第二步是min-max归一化。把每个指标压缩到0到1区间消除量纲影响。第三步是计算每个指标的熵值公式是每个样本在该指标上的占比乘以对数值再求和取负归一化后得到熵权权重之和为1。TOPSIS部分在归一化矩阵基础上构造正理想解所有指标取最大值的虚拟企业和负理想解所有指标取最小值的虚拟企业然后计算每个真实企业到这两个虚拟解的欧氏距离贴近度负理想解距离除以正负理想解距离之和。贴近度越大说明该企业越接近理想状态得分越高。整个流程用Python实现不到五十行但每一步的中间结果都建议导出到Excel里检查一遍确认量级和方向没有错误再往下走。3.3 信贷策略优化怎么落地评分结果出来之后不是简单按分数排序就完事还要落到具体的信贷策略上。包里的做法是先将企业按得分划为ABCD四个档位A档利率最低、额度上限最高D档则不予放贷。然后构造0-1整数规划模型目标函数是银行总收益最大化由利息收入减去预期损失构成。约束条件里值得留意的是“风险等级-利率档位耦合约束”——A档企业享受基准利率上浮10%的优惠B档上浮30%C档上浮50%这个档位和利率的映射关系是结合题目给出的“客户流失率随利率变化”的数据拟合出来的。最终解出的结果是一个“贷款额度分配表”在论文里用一张矩阵热力图呈现横轴是企业档位纵轴是利率档位颜色深浅代表放贷金额。这个图表是整个论文结果部分最直观的亮点一眼就能看出策略的差异化逻辑。4. 实操过程与核心环节实现4.1 从原始发票数据到评分卡的全流程我在本地复现这套方案时把流程拆成了五个环节每完成一个环节就核对一次中间结果环节一数据读取与清洗。用pandas读取原始Excel按企业ID分组合并进销项数据清洗缺值和异常值。环节二指标构建。生成六个核心指标月均销项金额、月均进项金额、进销项比率、交易客户数、交易频次变异系数、近半年销项增长率。环节三熵权法计算权重。用归一化后的指标矩阵计算熵值得到每个指标的客观权重。环节四TOPSIS打分排序。计算每家企业贴近度按得分从高到低排序。环节五信贷策略求解。按得分分档构造整数规划求解贷款额度分配。每个环节的输出都对应包中Excel的一个sheet复现时可以用原表结果交叉验证自己的计算有没有跑偏。第一次跑通全流程大约需要两到三小时代码本身不复杂大部分时间花在核对数据口径上。4.2 核心代码片段解读包里熵权法那段代码非常清爽我把核心逻辑还原出来保留了原始风格加了点注释import pandas as pd import numpy as np # 读取企业-指标宽表index为企业ID df pd.read_excel(企业指标表.xlsx, index_col0) # 1. 正向化处理假设后两列是负向指标取倒数 df_pos df.copy() df_pos.iloc[:, -2:] 1 / (df_pos.iloc[:, -2:] 1e-6) # 2. min-max归一化 df_norm (df_pos - df_pos.min()) / (df_pos.max() - df_pos.min() 1e-8) # 3. 计算p矩阵每个样本指标占比 p df_norm / df_norm.sum(axis0) # 4. 计算熵值 k 1 / np.log(len(df_norm)) e -k * (p * np.log(p 1e-8)).sum(axis0) # 5. 计算信息效用值并归一化得到权重 d 1 - e weights d / d.sum() print(weights)这段代码有两点值得学习一是加了一堆1e-8的小数保护避免除零和对数越界——这种边角问题在正式比赛中非常常见二是每一步都重新赋值成新变量而不是原地覆盖方便中间结果的导出和检查。整数规划部分使用了pulp库目标函数是线性表达式约束条件逐条添加最后调用求解器输出结果。代码风格是典型的“工程化参赛代码”不追求炫技追求稳、准、可改。4.3 结果输出与论文图表制作模型跑完只是完成了一半工作怎么把结果呈现给评阅老师是另外一半。这个包里论文图表制作的思路值得单独说一下。信贷策略结果没有直接用一张大表堆数字而是做了三张图配合使用第一张是企业得分的分布直方图用于展示整体分级情况第二张是不同档位对应的额度利率组合散点图体现策略的差异化第三张是前文提到的放贷额度矩阵热力图直观表达银行资金在各类企业间的分配结构。三张图分别在论文的结果部分、模型分析部分和策略建议部分出现每一张都有明确的叙事作用而不是为了凑图表数量。图表制作上热力图用的是matplotlib的imshow加颜色映射散点图用scatter按档位着色所有图的字体大小、坐标轴标签、颜色风格在整篇论文中完全统一。这是很多队伍忽略的细节——图好看不等于做得好但图丑一定会让评阅老师对你的严谨性打折扣。5. 常见问题与排查技巧实录5.1 解压和编码相关的老坑这个zip包本身是常规压缩包但复现时不少人会踩编码的坑。Windows系统下打开Excel数据表出现乱码大多是读取时编码格式不对。Python的pandas.read_excel用的是openpyxl引擎Excel文件内部编码一般没问题但如果你把中间表另存为csv再读取就必须注意处理encodingutf-8或encodinggbk的问题。另一个坑是文件路径。代码里如果含有中文路径某些老版本的pandas和matplotlib在Windows下会报编码错误。解决方案有两种一种是把整个项目放到纯英文路径下运行另一种是在代码开头加import os; os.chdir(os.path.dirname(os.path.abspath(__file__)))让脚本自己切换工作目录。包里的代码在文件头就做了这样的处理这算是一等奖团队的工程素养体现。5.2 模型结果不合理的排查顺序如果你改了自己的数据后跑出来结果不理想大概率是下面三个环节之一出了问题。先检查数据是否完整归一化。有时候新加一个指标忘了做正向化TOPSIS的贴近度方向就会反掉——原本实力最强的企业反而得分最低这种情况在熵权法阶段就能从权重分布里看出异常。其次检查熵值计算时是否有全零列如果某个指标所有企业取值都相同它的信息量为零、权重也会是零说明这个指标没有区分度应该考虑换掉。最后检查整数规划的约束条件是否写错最常见的是贷款额度上限的单位不一致——原始数据单位是万元约束条件里写成了元结果一跑就是不可行解。排查的时候我建议从头到尾打印中间结果一步步对比包里的Excel中间表不要直接跳到最后的规划结果。定位到哪一步开始和原表不一致问题就出在那一步。5.3 论文写作中的时间管理教训复盘这个包里的论文时我在想他们队伍的时间分配从附录的修改痕迹看大致是前两天啃数据和分析题目第三天定模型框架并跑通初步代码第四天完成主模型和敏感性分析第五天写论文加排版。这里最值得学习的是最后两天不再改模型只调参数和打磨图表。这是我从这份包里得到的最重要的一条教训。很多队伍最后一天还在改模型结果论文里的数据、表格、图全部要重做越改越乱。正确做法是设置一个“模型冻结时间”在这个时间点之前完成所有核心计算和敏感性分析之后只允许调整呈现方式不允许改变模型逻辑。这样论文写作压力会小很多最终产出的质量也更高。复盘完这套国赛一等奖的完整产出我的整体感受是拿奖的核心不是算法多前沿而是把“数据处理—指标构建—评价排序—决策优化—结果呈现”这条链路上的每个环节都做到位。这个zip包的价值就在于它把整条链路完整地示范了一遍每一份代码、每一张表、每一段论文都可以当模板去学。建议拿到这套素材的人别只跑一遍代码就收工试着换一批数据复现全流程再想想每个步骤还能怎么改进。真正把它消化成自己的建模能力才是这份一等奖素材最大的价值所在。本文还有配套的精品资源点击获取
返回列表