【风控】如何构建一款智能风控模型

在信贷风控领域,“模型”是用于风险预测的具体实现,通常表现为数学函数或结构,而“算法”则是构建模型所用的方法,如逻辑回归或决策树。模型是算法应用后的产物,因此可将算法类比为“类”,模型则是由其生成的“对象”。

一、建模流程

在风控建模中,尽管使用的机器学习算法多种多样,但建模流程大致相同,通常包括十个主要步骤:明确问题定义、选择并划分样本、设计模型架构、进行数据准备与描述性分析、完成数据清洗、进行特征选择、进行模型训练与效果评估、部署上线、开展模型监控,以及后续的模型调优。这一系统化流程有助于保障模型的稳定性和预测能力,是构建高质量风控模型的关键。

二、模型开发方法论

2.1 问题定义

下面是对原文内容的优化整理,总结了信贷风控建模中三个关键维度:

1. 预测对象粒度

在实际业务中,由于客户可能存在多笔借款,不同的业务场景下预测对象的定义也不同。常见的粒度有:

  • 渠道粒度:同一来源渠道下的借款申请可以聚合成一条记录,用以预测渠道风险。
  • 客户粒度:以借款人整体作为一条记录,只要任一借款出现逾期,即视为风险事件。
  • 还款粒度:针对每笔借款的每个还款期,单独作为记录,用于预测每次还款是否违约。
    预测对象的粒度直接影响标签定义和特征计算,需根据业务模式和应用策略(如一次性借款、循环额度、催收还款预估等)选择合适的建模粒度。

2. 标签定义

风控模型预测未来风险,因此属于有监督学习。标签是模型需要预测的结果,可以是二元分类(好/坏)或连续变量(如收益、损失)。

  • 标签的定义应明确:在何时(观测点)预测未来多长时间内,何种风险事件的发生。
  • 观察窗口:用于收集客户行为数据的时间区间,如近3、6、9或12个月内的各项业务数据;
  • 表现窗口:用于评估客户表现和确定风险事件的时间段,如6个月的逾期状况。
    在这里插入图片描述

在风险标签定义中,对于如何确定好坏程度和表现窗口的长度,我们需要结合滚动率分析(roll rate analysis)和账龄分析(vintage analysis)

滚动率分析

我们可以采用滚动率分析来衡量客户信用的好坏。滚动率指的是客户在某个观测点之前一段时间内的逾期状态,向该观测点之后一定时期的逾期状态转变的比例。例如,以2020年7月1日为观测点,从中抽取1万名客户,统计他们上一个月的逾期状态,并与当月的逾期状态进行比对,从而计算出状态转化的比例,这一指标能直观反映出客户信用风险的变化趋势。
在这里插入图片描述

  • (1) 上个月逾期状态为M0的客户,当月有其中97%的客户会继续保持正常状态,保持率为97%,
  • 其他3%的客户会恶化为M1,恶化率为3%。
  • (2) 上个月逾期状态为M1的客户,当月有其中82%的客户会回到M0状态,即好转率为82%,保持率为12%,恶化率为6%。
  • (3) 上个月逾期状态为M2的客户,好转率为75%,恶化率为10%。
  • (4) 上个月逾期状态为M3的客户,好转率仅为24%,恶化率为65%。
  • (5) 上个月逾期状态为M4的客户,好转率仅为19%,恶化率为72%。
    上个月逾期状态为M3及M3+的客户,好转率已经比较低了,因此,我们可以认为逾期状态为M2+的客户已经足够“坏”,用M2+(逾期天数大于60)来定义“坏”客户较为合适。
账龄分析

在信贷行业,Vintage曲线常用于分析账户的成熟期和风险变化规律。以一个12期还款的信贷产品为例,客户需经历完整的12期还款后,才能准确判断其信用“好坏”;在此之前,只能基于当前还款情况作出初步判断。因此,该产品的完整表现期为12个月。表现期的选择需权衡利弊:表现期越长,风险暴露越充分,但样本距离当前时间较远,数据更陈旧,建模样本与未来数据差异更大;若表现期较短,风险尚未完全显现,但样本更新更及时。为了提升模型预测能力,需要在风险暴露充分性与数据时效性之间取得平衡,选择最合适的表现期。
在这里插入图片描述

  • (1)在相同MOB的情况下,每个放款月份对应的逾期率逐渐降低,说明客群质量提升,可 能是因为金融机构收紧了风险敞口,或者使用了效果更好的预测模型或反欺诈规则。
  • (2)不同月份放款的逾期率在经过MOB6后,上升趋势开始平缓。
    我们以2019年1月为例, 设定表现期为6个月,即可覆盖90%的“坏”客户。 因此,通过分析Vintage曲线,我们可以寻找逾期率开始趋于稳定的时间点,辅助确定表现期长度。

1. Vintage曲线分析的作用

  • 在相同MOB(月账龄)下,若不同放款月份的逾期率逐渐降低,说明客群质量在提升,可能是风控策略或模型优化的结果。
  • 逾期率在MOB6后趋于稳定,说明以6个月为表现期已能覆盖大部分“坏”客户。通过Vintage曲线可辅助确定合理的表现期长度。

2. 滚动率与账龄分析的结合

  • 滚动率分析用于定义客户“好坏”;账龄分析(Vintage)用于判断合适的表现期。结合两者可更全面地覆盖“坏”客户。

3. 样本标签定义示例(以6个月表现期为例)

  • 标签为1(坏客户):6期内发生M2+(逾期60天以上)。
  • 标签为0(好客户):6期已满且无逾期。
  • 灰度样本:6期内有逾期但未达M2+,可剔除或纳入“好”客户,依据模型效果决定。
  • 不定样本:不足6期且无逾期,不纳入建模。

4. 表现窗口策略

  • 硬表现窗口:严格按照6个月表现期取样。
  • 软表现窗口:允许样本超过6个月后发生逾期,关注模型排序能力而非严格定义的时间段风险。

3. 细分客群

当整体客户样本存在显著差异时,可将客群进行细分,以提高模型的针对性。细分可基于产品类型、进件渠道、借款期数、区域或借款金额等变量,甚至采用聚类等无监督学习方法。
细分客群的优势在于模型更能捕捉各群体独特的风险模式,应用策略更加灵活;但也存在如下问题:

  • 模型数量增加,时间和资源投入随之上升,维护成本提高;
  • 各客群内样本量减少,特别是部分客群中的“坏”样本不足可能影响模型准确性。

2.2 样本的选择和划分

1. 样本选择原则

样本选择是模型开发的基础,目的是从历史业务数据中挑选出具有代表性的一部分样本用于建模。在数据量较大的情况下,我们通常不使用全量历史样本,而是依据一定规则筛选具备代表性和时效性的样本,以提升模型的泛化能力与预测准确性。
模型能否在未来场景中有效预测,关键取决于:

建模样本是否能代表未来实际应用中的客户群体。

样本选择四大核心原则:
  1. 代表性
    • 样本应能反映未来业务中的主要客群结构。
    • 若产品类型多样,应优先选择未来主推产品相关样本。
    • 对于多子类客群,可采用分层采样确保关键类别覆盖充分。
  2. 充分性
    • 样本量应足够大,尤其“坏样本”数量需达到统计显著性(一般需上千条)。
    • 若坏样本比例低,可通过上采样扩充其数量。
    • 建议信用评分模型使用样本量不少于数万条。
    • 注意样本量“并非越多越好”,在信息充分的前提下,过多样本反而增加计算成本而收益有限。
  3. 时效性
    • 满足样本充分性后,尽量选用时间接近当前的样本
    • 客群变化较大的平台(如互联网信贷)对时效性要求更高;银行等稳定业务相对宽松。
  4. 排除性
    • 排除因政策调整或异常事件导致行为突变的样本(如某工厂因特殊事件导致逾期异常)。
    • 应将异常时间段作为排除样本或单独实验方案,避免误导模型学习。

⚠️ 注意:建模数据一般来源于历史放款客户,但未来模型使用时是在申请客户中,这就引出了“部分样本估计总体”的问题,后续可通过拒绝推断(Reject Inference)方法解决。

实践建议:
  • 在具备条件时,多尝试不同样本组合进行实验对比。
  • 样本量与样本质量之间往往存在权衡,理论上最优并不代表实际效果最好。

2. 样本集划分策略

在模型训练过程中,为了合理评估模型效果,需将样本集划分为不同用途:

样本集类型:
  1. 训练集(Training Set):用于模型学习和参数拟合。
  2. 验证集(Validation Set):用于调参和选择最优模型结构。
  3. 测试集 / 时间外样本(Test Set / OOT):用于评估模型最终性能,OOT样本应来自于与训练集时间不重叠的区间。

在风控领域,通常将最新时间段样本作为 OOT 样本,确保真实模拟模型上线后的效果。
在这里插入图片描述

样本比例推荐:
  • 常规划分比例为:训练集 : 验证集 : OOT = 70% : 20% : 10%
  • OOT 样本需关注坏样本数,建议不少于 100 条,否则难以有效评估模型性能。
特殊场景处理:
  • 样本量较少时:可省略验证集,采用交叉验证方法在训练集中完成调参。
  • 样本极少时:先在少量样本上构建初代模型,再用全部样本(训练 + OOT)重新训练,用于上线测试或做陪跑模型(不参与实际决策)。

2.3 模型架构设计

1. 从数据源角度划分模型架构

模型可分为两类架构形式:

  1. 单一模型架构

    • 所有数据源的特征合并后统一建模,直接输出最终模型结果。
    • 优点:结构简单、易部署、数据融合充分。
    • 缺点:对数据预处理要求高,易受不一致特征干扰。
  2. 多子模型融合架构

    • 按数据源维度将特征分组,分别建立多个子模型,再通过二次融合(如模型融合器、加权平均、堆叠等)生成最终模型。
    • 适用于数据源维度差异大、时间不一致、特征属性差异明显的情况。
    • 优点:灵活、可扩展,便于模型解释与管理。
      在这里插入图片描述

2. 从其他视角设计子模型策略

  1. 按标签定义维度建模

    • 建立多个目标不同的模型(如 DPD10、DPD60 逾期模型,短期/长期表现期模型),分别预测不同维度风险。
  2. 按客群细分建模

    • 针对不同用户群体(如新户、老户、白名单客户等)分别建模,再融合结果。
    • 可提升模型在异质客群中的预测精准度。
  3. 按建模算法差异建模

    • 使用不同模型算法(如 XGBoost、LightGBM、神经网络等)分别建模,通过模型融合提升整体性能和鲁棒性。

3. 模型架构选择建议

在实践中,不存在唯一最优的模型架构。原因在于:

  • 不同业务场景面临的数据质量、特征类型、样本量级、资源条件都存在差异;
  • 实验中表现较优的模型结构,在实际环境中可能因数据变化而失效。
    因此,我们建议遵循以下两项原则:
  • 奥卡姆剃刀原则

    “如无必要,勿增实体。”
    如果简单架构能满足业务目标,优先考虑单一模型结构,减少复杂度。

  • 实验对比驱动选择
    在资源允许的情况下,建议多架构并行试验,选择效果最优的方案。
    特别是在以下场景下,子模型融合架构值得优先考虑:
    • 数据源起始时间不一致;
    • 不同特征维度难以统一预处理;
    • 多标签或多任务并存。

2.4 数据准备和数据描述

1. 数据准备:构建可用、可靠的建模数据集

数据准备是指将原始数据加工为完整的建模数据集,其核心目标是为每个建模样本生成可回溯、可解释的特征变量。
1. 特征构建原则
风控模型的特征通常基于预测目标的粒度(如以“申请”为单位),通过对底层数据进行聚合、汇总等方式加工而成。由于原始数据类型多样,特征通常按照来源或业务模块进行分组。
在生成建模数据时,应确保:

  • 所有特征的计算均基于样本对应的观测点
  • 每个特征值必须是在观测点当时即可获取的状态,不得包含未来信息。

这种方式被称为数据回溯(Backtracking),是风控模型构建的基本前提。

2. 避免“特征穿越”(信息泄露)
特征穿越指的是特征中包含了观测点之后的信息,导致模型在训练阶段效果很好,但上线后效果大幅下降。
常见的特征穿越情形包括:

  • 只保留了最新信息,无法还原历史状态(如只保存了最新收入信息);
  • 使用了事后才能获取的数据(如还款结果、系统评分等);
  • 特征加工时错误使用了样本标签或未来状态。

3. 穿越问题的排查方法

  • 一致性校验:对比回溯计算与线上实时计算的特征值,检查是否一致;
  • 效果异常分析:分析特征对标签的预测能力,若某变量 IV 值远高(如 >0.5),可能存在穿越;
  • 逻辑回溯分析:逐条检查样本特征的计算逻辑,确保未调用未来信息。

一旦发现不可回溯的特征,需剔除或改为在线实时计算并保存,待积累到足够数据后再纳入建模使用。

2. 数据描述:探索性数据分析(EDA)

数据描述即探索性数据分析(Exploratory Data Analysis, EDA),主要目的是了解特征分布,发现数据问题,辅助后续的数据清洗与特征选择。
1. 常见分析维度

  • 缺失率、唯一值个数
  • 最大值、最小值、均值、中位数
  • 分布形态与趋势性变化
  • 与业务逻辑的符合程度

2. 数据质量判断原则
在EDA阶段,重点并非立刻清洗数据,而是判断数据是否合理。例如:

  • 缺失率异常:是否为系统问题(如字段升级导致缺失);
  • 数值异常:极端值是否为真实异常或业务设定所致;
  • 分布偏移:是否因业务调整、产品改版而导致特征分布发生突变。

2.5 数据预处理

1. 异常值处理

异常值可能源自设备故障、数据采集错误或极端情况,会干扰模型学习规律。常见处理方式如下:

检测方法:
  • 箱型图法(IQR)
    定义上下边界为:
    上边界 = Q3 + 1.5 * IQR  
    下边界 = Q1 - 1.5 * IQR
    
  • 3σ原则(适用于近似正态分布数据):
    异常值范围:均值 ± 3 * 标准差
    
处理方式:
  • 替换为边界值(保留信息同时控制影响)
  • 替换为均值、中位数或众数(适用于连续型变量)
  • 删除(仅在少量异常、对业务影响小的前提下)

2. 缺失值处理

检测方式:
  • isnull()sum() 快速查看缺失分布
处理策略:
缺失比例处理建议
<30%均值、中位数、众数填补
30%~60%建议构造缺失标志变量,结合模型判断是否保留
>60%通常考虑剔除该变量,除非有强业务逻辑支撑

3. 特征无量纲化

常用于需要计算距离或梯度的模型(如逻辑回归、KNN、SVM)。

  • 标准化(Z-score):
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    data[['col']] = scaler.fit_transform(data[['col']])
    
  • 归一化(Min-Max):
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    data[['col']] = scaler.fit_transform(data[['col']])
    

4. 特征分箱

用于增强模型稳定性、降低过拟合风险,常用于评分卡模型。

方法:
  • 等频分箱:每个箱子数据量相同
  • 等距分箱:每个箱子区间长度相同
  • 决策树分箱:自动按信息增益分割(监督式)
  • 卡方分箱、WOE分箱:结合标签进行最优分割

5. 类别特征编码

用于将字符串类型转为数值型,供模型使用。

编码方法:
方法说明适用场景
Label Encoding按照类别顺序编码为整数有序类别
One-Hot Encoding转化为0-1变量无序类别、类别数较少
Frequency Encoding替换为每个类别出现频率类别数较多时可选
Target Encoding替换为目标变量的均值有监督建模、需避免泄露

2.6 特征选择

1. 特征选择的意义

特征选择旨在从原始特征中筛选对模型预测效果有提升的子集,其核心目的是提升模型性能与稳定性、降低复杂度和避免多重共线性问题。
必要性:

  • 剔除不稳定或冗余特征,增强模型泛化能力;
  • 避免特征间多重共线性,确保线性模型解释性;
  • 降维、提升训练效率、降低资源消耗;
  • 在风险控制中,尤其重视“稳定性”,优先保留长期稳定有效的特征。

2. 特征选择方法分类

1. 包裹法(Wrapper)
  • 基于模型性能评估特征子集,计算开销大但精度高;
  • 常见方法:
    • 逐步回归:迭代地增减变量,使用AIC/BIC做准则;
    • 递归特征消除(RFE):多轮训练,逐步剔除重要性最低特征。
2. 过滤法(Filter)
  • 利用统计指标进行无监督筛选,适合初筛;
  • 通用但预测能力略逊于包裹法;
  • 风控中常用指标:缺失率、变异系数、相关性、共线性、IV、PSI
3. 嵌入法(Embedded)
  • 借助模型训练过程生成特征重要性,适用于树模型;
  • 例:基于XGBoost、LightGBM的特征重要性排序。

3. 常用特征选择指标与方法

✅ 基于特征属性(无监督)
方法说明
缺失率筛选缺失率 > 95% 直接剔除;否则使用插值/填充方法处理
变异系数(CV) CV = σ μ \text{CV} = \frac{\sigma}{\mu} CV=μσ,CV 越小说明区分能力越弱,应剔除
相关性筛选使用 Pearson/Spearman/Kendall 相关系数,剔除高度相关特征
多重共线性(VIF)VIF < 10 安全,10 ≤ VIF < 100 有风险,VIF ≥ 100 建议剔除
✅ 基于特征效果(有监督)
方法说明
IV(信息价值)衡量变量与标签的预测能力,IV > 0.1 具备较强预测性
卡方检验适用于分类变量的显著性检验,用于评估变量与标签相关性
✅ 包裹法实现示例

逐步回归(Stepwise)

import toad
selected_data = toad.selection.stepwise(data, target='label', estimator='lr',
                                        direction='both', criterion='aic', return_drop=False)

递归特征消除(RFE)

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
rfe = RFE(estimator=model, n_features_to_select=10)
X_new = rfe.fit_transform(X, y)
selected_rfe_cols = X.columns[rfe.get_support()].tolist()

4. 风险控制视角下建议

  • 初筛阶段优先考虑缺失率、变异系数;
  • 中期筛选建议结合 IV、PSI、VIF;
  • 终筛结合模型包裹法优化模型性能;
  • 多模型、多参数组合结果取交集,以提升稳定性和泛化能力。

2.7 特征提取

特征提取(Feature Extraction)是指从原始的高维特征中通过计算得到较少的新特征,从而达到降维的目的。具体而言,它通过学习一个映射函数 f f f,将原特征矩阵 X 1 X_1 X1映射到新的特征矩阵 X 2 X_2 X2,其中 X 2 X_2 X2的维度低于 X 1 X_1 X1
特征选择和特征提取都属于降维方法,它们的目标是减少特征数据集中的特征数量,尽管最终效果相似,但方法不同。特征提取通过属性间的关系,通常是通过组合不同的属性来生成新的特征,这样会改变原始特征空间。而特征选择则是从原始特征中选择一个子集,这种方法没有改变原特征空间。因此,特征提取可能会损失一部分特征信息,选择是否使用取决于具体的应用场景。

特征提取方法大致可以分为两类:线性特征提取方法和非线性特征提取方法。

  1. 线性特征提取方法

    • 主成分分析(PCA):PCA旨在通过线性变换将样本映射到一个新的空间中,使得映射后的样本具有更大的发散性。它通过最大化样本间的方差来提取最重要的特征,从而达到降维的效果。
    • 线性判别分析(LDA):LDA的目标是将样本映射到一个新的空间,使得同类样本聚集在一起,而不同类的样本尽量分开,从而优化分类性能。与PCA不同,LDA关注的是类别信息而非方差。
  2. 非线性特征提取方法

    • 局部线性嵌入(LLE):LLE旨在保持数据点在局部邻域内的线性关系,通过保持样本间局部的几何结构来进行降维。它特别适用于非线性数据的降维。
    • 多维尺度变换(MDS):MDS通过保持降维后的样本之间的距离不变来进行降维。这种方法特别适合用于保持样本间的相对距离或相似度。

2.8 模型训练、概率转化和效果评估

在进行模型训练时,关键的目标是找到最合适的超参数组合,以优化模型的性能。本文详细介绍了几种常见的模型调参方法,并探讨了模型的评估方式。接下来,我们将重点讨论概率转化、模型效果评估以及模型的泛化能力,尤其在风控场景中的应用。

1. 模型训练

模型训练的目的是通过调整超参数来优化模型的性能,常见的调参方法有:

  • 网格搜索:穷举所有超参数组合,选择效果最好的组合;
  • 随机搜索:在参数空间中随机采样,通常比网格搜索更有效;
  • 贝叶斯优化:通过少量的观测结果高效地找到最优超参数
    训练过程中,通过交叉验证等方法评估模型的效果,最终选出最优的超参数组合,并在完整样本上训练得到最终模型。

2. 概率转化

在风控模型中,通常需要将模型输出的概率转化为评分,以便量化客户的风险。转化公式通常基于log(odds)函数,将概率映射到一个更广的评分区间。这种转化对于信用评分模型、信贷违约预测等场景非常有用。

3. 模型效果评估

评估模型性能时,通常使用以下指标:

  • 分类任务指标:包括准确率、精确率、召回率、F1值、AUC、KS值等;
  • 回归任务指标:包括RMSE、MAE、MSE和决定系数等。

对于二分类问题,评估模型时会通过混淆矩阵来计算这些指标,如真正例、假正例、假负例和真负例。
在这里插入图片描述

4. 模型的泛化能力

泛化能力指的是模型在未来数据上的预测能力。模型的训练误差和测试误差的差距反映了其泛化能力。为了避免过拟合和欠拟合,需要根据验证曲线来调整模型的复杂度,确保模型在训练集和测试集上的表现均衡。
在这里插入图片描述

5. 模型业务评价指标

在风控业务中,除了常见的评价指标外,还会考虑以下几个因素:

  • 模型排序性:模型是否能够有效区分不同风险等级的客户;
  • 相同通过率下的逾期率:在特定业务场景下,比较不同模型在设定通过率下的逾期率;
  • 效果与成本平衡:评估加入外部数据源的模型效果与其成本的平衡。
    在这里插入图片描述

2.9 模型部署及上线验证

1. 模型部署

模型部署指的是将经过训练的机器学习模型部署到线上环境中,以供实际使用。在实际应用中,通常需要考虑部署环境和跨语言兼容性。对于基于Python语言开发的模型,常见的保存格式有以下两种:

  1. Pickle 格式
    Pickle 是 Python 特有的序列化格式,适用于 Python 环境。如果模型的部署环境也是 Python,则可以直接使用 Pickle 格式来保存和读取模型。此格式具有较快的读取速度,适合 Python 项目的本地化部署。
  2. PMML 格式
    PMML(Predictive Model Markup Language)是一种与平台和环境无关的模型表示语言,适用于实现跨平台的模型部署。使用 Python 开发的模型导出为 PMML 格式后,可以在其他语言环境(如 Java)中部署和使用。PMML 格式使得模型能够在不同的系统或技术栈之间轻松迁移和共享。

2. 上线验证

模型部署到线上环境后,通常会以“陪跑”模式先行运行。在积累到一定样本量(通常不少于1000条)后,便可开始进行上线验证。上线验证的目标是确认模型是否能在实际环境中按照预期正常工作,确保其准确性和稳定性。验证通常从以下三个方面进行:

  1. 预测分数的一致性
    首先,取模型在“陪跑”阶段所生成的样本,并使用线下环境重新进行预测和打分。接着,比较线下和线上环境中得到的预测分数是否一致。如果出现不一致的情况,需要调查原因,常见的原因包括:
    • 线上与线下环境存在差异(如依赖库、硬件差异等);
    • 线上计算逻辑存在问题。
  2. 模型分布的差异性
    通过对比线上和线下模型分数的分布差异,来检测模型是否发生了变化。例如,在贷前准入模型中,可以取训练模型时OOT(Out-of-Time)样本所处时间段的所有申请样本作为基准样本,再取“陪跑”阶段线上样本进行验证。然后,通过比较两个样本的模型分数和特征分布,来分析是否存在显著差异。如果差异较大,应仔细排查原因,避免简单地将其归结为客群偏移。常见的分布偏差原因包括:
    • 样本选取口径不一致,如基准样本取的是申请样本,验证样本取的是授信通过样本;
    • 细分客群比例发生变化,如验证样本中老客户比例大幅增加;
    • 数据特征的变化导致分数计算不同;
    • 策略调整导致的客群偏移。
  3. 模型效果的一致性
    通过对比模型在“陪跑”阶段表现较好的样本和建模样本的标签,来验证模型效果的稳定性。如果模型效果与开发阶段出现较大差异,需要排查原因,特别是数据异常问题,确保模型效果不因异常数据或环境差异而衰减。

三、重要算法

3.1 逻辑回归(Logistic Regression)

1. 原理简介

逻辑回归是用于二分类任务的线性模型,核心思想是将线性回归结果映射为 0~1 之间的概率值:
P ( y = 1 ∣ x ) = 1 1 + e − ( w T x + b ) P(y=1|x) = \frac{1}{1 + e^{-(w^T x + b)}} P(y=1∣x)=1+e(wTx+b)1

其中:

  • x x x是特征向量;
  • w w w是权重;
  • 输出是“违约”的概率。

2. 应用方法

场景说明
信用评分将预测违约概率转为信用分数,常用于贷前审批
客户分层以违约概率划分客户风险等级
监管报表可解释性强,满足监管审查要求

3. Python代码示例(使用 sklearn

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

# 假设 X 是特征矩阵,y 是标签(0:未违约,1:违约)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

y_pred_prob = model.predict_proba(X_test)[:, 1]
auc_score = roc_auc_score(y_test, y_pred_prob)
print(f"AUC: {auc_score:.4f}")

4. 优劣势分析

优势劣势
可解释性强,易于监管理解只能建模线性关系
训练速度快,结果稳定特征处理复杂(需分箱、WOE编码)
易于转化为评分卡对异常值、共线性敏感

3.2 LightGBM(梯度提升决策树)

1. 原理简介

LightGBM 是基于 GBDT 的高性能框架,采用 梯度提升 + 决策树,核心提升方式:

  • 使用叶子优先策略(Leaf-wise)
  • 基于直方图加速构建分裂点
  • 自动处理缺失值
  • 多线程高效并行计算

2. 应用方法

场景说明
欺诈检测建模复杂的用户行为、交易路径等
贷前审批提供更精确的违约预测,提高通过率控制风险
特征筛选可输出特征重要性,用于评分卡建模前的变量筛选

3. Python代码示例(使用 lightgbm

import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

train_data = lgb.Dataset(X_train, label=y_train)
valid_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

params = {
    'objective': 'binary',
    'metric': 'auc',
    'learning_rate': 0.05,
    'num_leaves': 31,
    'verbose': -1
}

model = lgb.train(params, train_data, valid_sets=[valid_data], early_stopping_rounds=50)

y_pred_prob = model.predict(X_test)
auc_score = roc_auc_score(y_test, y_pred_prob)
print(f"AUC: {auc_score:.4f}")

4. 优劣势分析

优势劣势
高精度,处理非线性关系能力强可解释性较弱(需配合 SHAP 解释)
训练速度快,适合大规模数据容易过拟合(需调参)
自动处理缺失值与类别变量不易部署为传统评分卡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油泼辣子多加

感谢大佬!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值