机器学习入门:从数据、训练到业务决策

0 阅读3分钟

一、先建立完整知识地图

1. AI、机器学习、神经网络和深度学习

AI、机器学习、神经网络与深度学习的关系

  • 人工智能(AI):一个较大的目标和领域,泛指让机器具备推理、规划、识别、理解和决策等能力。
  • 机器学习(ML):实现人工智能的一种主要方法。它不要求开发人员写出所有判断规则,而是让模型从数据中学习规律。
  • 神经网络(Neural Networks):机器学习中的一类模型,结构受到生物神经网络的启发,由许多相互连接的计算节点组成。
  • 深度学习(Deep Learning):使用多层神经网络进行学习,能够逐层提取越来越抽象的特征。

可以简化记忆为:

AIMLNeural NetworksDeep Learning\text{AI} \supset \text{ML} \supset \text{Neural Networks} \supset \text{Deep Learning}

2. 机器学习到底在做什么

机器学习的核心目标是:

从已有数据中学习一个映射关系,再利用这个映射关系预测新数据。

在有监督学习中,可以写成:

X模型 fY^X \xrightarrow{\text{模型 }f} \hat{Y}

其中:

  • XX:输入特征,例如年龄、收入、负债率和历史逾期次数
  • YY:训练数据中的真实答案,也叫目标值或标签
  • ff:模型学习到的映射关系
  • Y^\hat{Y}:模型对结果的预测

模型训练的本质,就是找到一组合适的内部参数,让 Y^\hat{Y} 尽可能接近 YY


二、传统机器学习与深度学习

1. 两者的典型流程

传统机器学习与深度学习的典型流程

传统机器学习的典型流程:Input → 人工特征工程 → 模型 → Prediction → Output

深度学习的典型流程:Input → 自动特征学习 + 模型预测 → Output

2. 什么是特征工程

特征工程是把原始数据加工成更能反映问题、更方便模型学习的输入特征。

例如,原始股票数据包括:

  • 日期
  • 开盘价
  • 最高价
  • 最低价
  • 收盘价
  • 成交量

经过特征工程后,可以得到:

  • 近 5 日涨跌幅
  • 近 20 日均线
  • 成交量放大倍数

数据准备与特征工程并不完全相同:

  • 数据准备:收集、清洗、去重、处理缺失值、统一口径、划分数据集。
  • 特征工程:基于原始数据构造更有预测价值的特征。

3. 深度学习是不是全面优于传统机器学习

不是。两者适合的数据和场景不同。

对比项传统机器学习深度学习
常见数据表格、结构化数据图像、文本、语音等非结构化数据
特征获取更依赖人工特征工程能够自动学习多层特征
数据需求小数据和中等数据也能工作通常需要更多数据
计算成本通常较低通常较高
可解释性往往较好通常较难解释
常见模型逻辑回归、决策树、XGBoostCNN、RNN、Transformer

在金融风控等表格数据场景中,逻辑回归、XGBoost 和 LightGBM 仍然非常常用。选择模型时要看数据、成本、效果和可解释性,而不是简单判断谁更高级。


三、机器学习的主要类型

机器学习的主要类型

1. 有监督学习

训练数据同时包含输入 XX 和正确答案 YY。模型通过学习 XXYY 之间的关系,预测新数据的结果。

例子:

  • 房屋特征 XX → 真实房价 YY
  • 客户特征 XX → 是否违约 YY
  • 邮件内容 XX → 是否为垃圾邮件 YY

一句话记忆:

给模型“题目 + 标准答案”,让模型学会回答新题目。

2. 无监督学习

训练数据只有 XX,没有人工给出的标准答案 YY。模型需要自己发现数据中的结构或规律。

常见任务:

  • 聚类:把相似客户自动分组。
  • 降维:把大量特征压缩成少量特征。
  • 异常检测:找出与大多数样本明显不同的数据。

一句话记忆:

没有标准答案,让模型自己找规律。

3. 半监督学习

使用少量有标签数据和大量无标签数据共同训练。

例如,拥有 1000 张人工标注的图片,同时还有 100000 张没有标注的图片。半监督学习会同时利用两部分数据。

一句话记忆:

少量标准答案 + 大量未标注数据。

4. 强化学习

智能体在环境中不断采取动作,并根据环境返回的奖励或惩罚学习策略。

例如量化交易:

  • 状态:当前行情、指标和仓位。
  • 动作:买入、卖出或持有。
  • 奖励:盈利加分,亏损、手续费和大幅回撤扣分。

一句话记忆:

程序定义奖励分数,模型通过不断试错,学习怎样获得更高的长期总分。


四、有监督学习的数据与训练流程

1. 样本、特征和标签

假设有一份客户违约数据:

客户月收入负债率近 12 月逾期次数是否违约
A10,00020%00
B6,00075%31
C15,00035%10
  • 每一行是一条样本
  • 月收入、负债率、逾期次数是输入特征 XX
  • 是否违约是目标值或标签 YY
  • 标签可以约定为:正常还款为 0,违约为 1。

2. 训练阶段与预测阶段

训练阶段需要 XXYY

(Xtrain,Ytrain)训练算法模型参数(X_{\text{train}},Y_{\text{train}}) \rightarrow \text{训练算法} \rightarrow \text{模型参数}

实际预测阶段只有新数据 XX

Xnew训练好的模型Y^X_{\text{new}} \rightarrow \text{训练好的模型} \rightarrow \hat{Y}

新客户未来是否违约尚未发生,因此线上预测时没有真实标签 YY

3. 训练集、验证集和测试集

数据集用途是否用于更新模型参数
训练集学习权重和模型规律
验证集调整超参数、选择模型、Early Stopping
测试集最终评估模型效果

完整流程:

训练集、验证集与测试集的使用流程

4. 什么是数据泄漏

数据泄漏是指训练时使用了实际预测时不可能获得的信息,导致离线效果虚高、线上效果下降。

风控例子:

  • 要在客户申请贷款时预测未来是否违约。
  • 特征 XX 只能使用申请时已经知道的数据。
  • 不能把放款后的催收记录、未来逾期天数等信息放入 XX

归一化、缺失值填充等数据处理参数,也只能通过训练集计算,然后原样应用于验证集、测试集和线上数据。


五、回归任务与线性回归

1. 什么是回归任务

如果目标值 YY 是连续数值,就是回归任务。

例子:

  • 预测具体房价。
  • 预测未来收益率。
  • 预测产品销量。
  • 预测客户可能造成的损失金额。

注意:

  • 预测“明天上涨还是下跌”是分类。
  • 预测“明天收益率是多少”是回归。

2. 一元线性回归

一元线性回归使用一个特征预测一个连续数值:

y^i=b+wxi\hat{y}_i=b+wx_i

其中:

  • xix_i:第 ii 个样本的输入特征。
  • y^i\hat{y}_i:模型对第 ii 个样本的预测值。
  • ww:权重,表示特征对预测结果的影响程度和方向。
  • bb:偏置或截距,表示基础值。

所谓“拟合”,就是找到最合适的 wwbb,让预测直线尽可能接近训练数据点。

3. 多元线性回归

多元线性回归使用多个特征共同预测结果:

y^=b+w1x1+w2x2++wpxp\hat{y}=b+w_1x_1+w_2x_2+\cdots+w_px_p

其中:

  • pp:特征数量。
  • xjx_j:第 jj 个输入特征。
  • wjw_j:第 jj 个特征对应的权重。

房价预测例子:

房价^=b+w1面积+w2楼层+w3房龄\widehat{\text{房价}} =b+w_1\cdot\text{面积} +w_2\cdot\text{楼层} +w_3\cdot\text{房龄}

4. 均方误差 MSE

线性回归通常使用均方误差衡量预测值与真实值之间的差距:

MSE=1ni=1n(yiy^i)2\mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2

其中:

  • nn:样本数量。
  • yiy_i:第 ii 个样本的真实值。
  • y^i\hat{y}_i:第 ii 个样本的预测值。
  • yiy^iy_i-\hat{y}_i:预测误差。

计算步骤:

  1. 计算每个预测值与真实值的差。
  2. 对每个误差进行平方,避免正负误差相互抵消。
  3. 将所有平方误差相加。
  4. 除以样本数量,得到平均误差。

平方还会放大较大的误差,因此 MSE 对异常的大误差比较敏感。

例如,真实值为 10、20,预测值为 12、17:

MSE=(1012)2+(2017)22=4+92=6.5\mathrm{MSE} =\frac{(10-12)^2+(20-17)^2}{2} =\frac{4+9}{2} =6.5

5. 线性回归的训练目标

把线性回归预测公式代入 MSE:

MSE(w,b)=1ni=1n[yi(b+wxi)]2\mathrm{MSE}(w,b) =\frac{1}{n}\sum_{i=1}^{n}\left[y_i-(b+wx_i)\right]^2

模型训练要做的是:

不断寻找更合适的 wwbb,使 MSE 尽可能小。

MSE 是衡量错误的“尺子”,优化算法是调整参数的方法,让 MSE 变小是训练目标。


六、分类任务、逻辑回归与 Softmax

1. 什么是分类任务

如果目标值 YY 是离散类别,就是分类任务。

例子:

  • 猫 / 狗。
  • 垃圾邮件 / 正常邮件。
  • 违约 / 不违约。
  • 低风险 / 中风险 / 高风险。

分类通常分为:

  • 二分类:只有两个互斥类别。
  • 多分类:有三个或更多互斥类别。
  • 多标签分类:一个样本可以同时拥有多个标签。

2. 原始分数、线上风险分和最终类别

分类模型内部与线上应用通常经历下面的过程:

原始分数、线上风险分与业务决策

  • 原始分数(raw score/logit):模型内部直接计算出的数值,可以是任意实数,通常不会直接提供给业务系统。
  • 概率/风险分:原始分数经过 Sigmoid 或 Softmax 转换后得到的结果,通常位于 0~1,也是线上接口常见的输出。
  • 最终类别:应用根据阈值或最大概率作出的最终判断。

例如,模型内部原始分数为 z=2z=2,经过 Sigmoid 后:

p=11+e20.881p=\frac{1}{1+e^{-2}}\approx0.881

模型服务对外返回的通常是 0.881,而不是内部原始分数 2

因此,实际线上流程可以简化为:

输入特征模型0~1 概率/风险分业务阈值命中结果\text{输入特征} \rightarrow\text{模型} \rightarrow\text{0~1 概率/风险分} \rightarrow\text{业务阈值} \rightarrow\text{命中结果}

模型服务负责输出概率或风险分,业务系统负责根据阈值进行决策。这种分层使业务可以调整阈值,而不必重新训练模型。

3. 逻辑回归

逻辑回归是一种有监督分类算法,主要用于二分类任务。

虽然名字中有“回归”,但它解决的通常是分类问题。

第一步,计算线性分数:

z=b+w1x1+w2x2++wpxpz=b+w_1x_1+w_2x_2+\cdots+w_px_p

第二步,使用 Sigmoid 函数转换成概率:

p=σ(z)=11+ezp=\sigma(z)=\frac{1}{1+e^{-z}}

Sigmoid 会把任意实数转换到 (0,1)(0,1) 区间:

  • zz 越大,pp 越接近 1。
  • zz 越小,pp 越接近 0。
  • z=0z=0 时,p=0.5p=0.5

风控例子:

  • 输入:收入、负债率、逾期次数、申请次数等。
  • 标签:违约为 1,正常为 0。
  • 输出:客户未来发生违约的概率。

如果模型输出 p=0.82p=0.82,可以理解为模型认为该客户属于“违约类”的概率为 82%。

4. 阈值决策

假设业务阈值设置为 0.6:

  • p0.6p\geq0.6:命中高风险。
  • p<0.6p<0.6:未命中高风险。

阈值不一定是 0.5,也不一定永远不变。它要根据风险成本、通过率、误杀率和漏放率等业务目标确定。

阈值越高:

  • 命中的客户通常更少。
  • 命中的高风险纯度可能更高。
  • 可能漏掉更多风险客户。

阈值越低:

  • 能拦截更多风险客户。
  • 也可能误伤更多正常客户。

5. 二分类交叉熵损失

逻辑回归通常使用二分类交叉熵,也叫 Log Loss:

L=1ni=1n[yilog(pi)+(1yi)log(1pi)]L=-\frac{1}{n}\sum_{i=1}^{n} \left[ y_i\log(p_i)+(1-y_i)\log(1-p_i) \right]

直观理解:

  • 真实标签为 1,模型应该让 pp 接近 1。
  • 真实标签为 0,模型应该让 pp 接近 0。
  • 模型越自信地预测错误,受到的惩罚越大。

训练时使用概率计算 loss,并根据 loss 更新参数。阈值主要用于训练完成后的分类和业务决策,通常不参与普通逻辑回归的参数训练。

6. 多分类与 Softmax

多分类模型会为每个类别计算一个原始分数:

zk=bk+j=1pwkjxjz_k=b_k+\sum_{j=1}^{p}w_{kj}x_j

Softmax 将所有类别的原始分数转换成概率:

pk=ezkc=1Kezcp_k=\frac{e^{z_k}}{\sum_{c=1}^{K}e^{z_c}}

其中:

  • KK:类别总数。
  • zkz_k:第 kk 个类别的原始分数。
  • pkp_k:属于第 kk 个类别的概率。

Softmax 的特点:

  • 每个概率都在 0~1 之间。
  • 所有类别的概率之和等于 1。
  • 原始分数越高,对应概率通常越大。

例如:

类别原始分数Softmax 概率
266.5%
124.5%
09.0%

模型通常选择概率最大的“猫”作为最终分类结果。

多分类常用交叉熵损失:

L=k=1Kyklog(pk)L=-\sum_{k=1}^{K}y_k\log(p_k)

其中真实类别对应的 yk=1y_k=1,其他类别对应的 yk=0y_k=0

7. Sigmoid 与 Softmax 的区别

对比项SigmoidSoftmax
常见任务二分类、多标签分类互斥的多分类
输出每个输出独立转换所有类别共同归一化
概率和不要求等于 1必须等于 1
决策每个标签分别比较阈值通常选择最大概率类别

七、损失函数与梯度下降

1. 损失函数是什么

损失函数用一个数值衡量模型预测得有多差。

  • loss 较大:预测结果与真实答案差距较大。
  • loss 较小:预测结果更接近真实答案。

常见组合:

任务模型常用损失函数
回归线性回归MSE、MAE
二分类逻辑回归二分类交叉熵
多分类Softmax 回归、神经网络多分类交叉熵

损失函数负责评价当前参数,优化算法负责寻找更好的参数。

2. 梯度下降是什么

梯度下降是一种优化算法。它根据 loss 的变化方向调整模型参数,让 loss 一步一步减小。

通用公式:

θt+1=θtηθL(θt)\theta_{t+1}=\theta_t-\eta\nabla_{\theta}L(\theta_t)

也可以简化写成:

wt+1=wtηgtw_{t+1}=w_t-\eta g_t

其中:

  • θt\theta_twtw_t:当前参数。
  • θt+1\theta_{t+1}wt+1w_{t+1}:更新后的参数。
  • η\eta:学习率,控制每次更新的步长。
  • gtg_t:当前梯度。
  • 减号:沿梯度的反方向移动,使 loss 下降。

可以把它理解成下山:

  • 当前 loss 是所在位置的高度。
  • 梯度指向上升最快的方向。
  • 梯度的反方向就是下降方向。
  • 学习率决定每一步走多远。

3. 学习率

  • 学习率太大:可能跨过最低点,loss 来回震荡甚至发散。
  • 学习率太小:下降较稳定,但训练速度很慢。
  • 学习率合适:loss 能够稳定、较快地下降。

学习率属于超参数,通常由开发人员设置,或者交给学习率调度器动态调整。

4. 完整参数更新过程

模型参数更新过程

在线性模型中,权重和偏置都需要更新:

wt+1=wtηLww_{t+1}=w_t-\eta\frac{\partial L}{\partial w}
bt+1=btηLbb_{t+1}=b_t-\eta\frac{\partial L}{\partial b}

5. 全量、随机和小批量梯度下降

方法每次计算使用的数据优点缺点
全量梯度下降全部训练数据梯度稳定数据大时很慢、占内存
随机梯度下降 SGD1 条样本更新快、随机性强loss 容易波动
小批量梯度下降32、64、128 等一批样本速度与稳定性较均衡需要设置 batch size

假设训练集有 10000 条数据:

  • 全量梯度下降:10000 条一起计算,更新 1 次。
  • 随机梯度下降:每次使用 1 条,最多更新 10000 次。
  • 小批量梯度下降:每批 100 条,共更新 100 次。

6. epoch、batch 和 iteration

  • epoch:全部训练数据被完整学习一遍。
  • batch:一次参数更新使用的一小批数据。
  • batch size:一个 batch 包含的样本数量。
  • iteration:完成一次参数更新。

如果训练集有 10000 条数据,batch_size=100

每个 epoch 的 iteration 数=10000100=100\text{每个 epoch 的 iteration 数}=\frac{10000}{100}=100

按照上述述公式代表:一轮 epoch 中,模型完成 100 次参数更新

7. 模型参数与超参数

类型含义例子
模型参数训练过程中从数据里学出来权重 ww、偏置 bb
超参数训练前或调参阶段设置学习率、batch size、训练轮数、树深度

使用框架时,通常不需要自己编写梯度公式:

  • scikit-learn:传统机器学习工具箱。
  • xgboost:训练 XGBoost 模型。
  • PyTorchTensorFlow:主要用于神经网络和深度学习。

需要注意,不是所有模型都使用相同的训练方式:

  • 普通线性回归也可以通过最小二乘法直接求解。
  • 逻辑回归通常使用梯度类优化算法或其他数值优化器。
  • 决策树通过寻找特征切分点构建树。
  • XGBoost 使用梯度提升逐棵构建决策树,不等同于神经网络中的普通梯度下降。

八、数据处理与特征处理

1. 常见数据处理步骤

  • 删除重复数据。
  • 处理缺失值。
  • 检查异常值。
  • 统一数据单位和业务口径。
  • 编码类别特征。
  • 构造业务特征。
  • 对需要的模型进行归一化或标准化。

2. 类别特征编码

模型通常不能直接理解“北京”“上海”“广州”等文本类别,需要转换成数值表示。

常见方法:

  • One-Hot 编码。
  • Ordinal 编码。
  • Target Encoding 等。

编码方式必须根据特征是否有顺序、数据量和模型类型选择,不能随意给无顺序类别编号后直接当成大小关系。

3. 特征缩放:归一化与标准化

不同特征可能拥有完全不同的数值范围:

  • 年龄:20~60。
  • 月收入:3,000~50,000。
  • 逾期次数:0~10。

特征缩放可以让它们处于相近的数值尺度,使部分模型训练得更稳定。

Min-Max 归一化

x=xxminxmaxxminx'=\frac{x-x_{\min}}{x_{\max}-x_{\min}}

它通常将数据缩放到 [0,1][0,1] 区间。

如果收入范围为 0~50,000,某客户收入为 10,000:

x=100000500000=0.2x'=\frac{10000-0}{50000-0}=0.2

标准化

x=xμσx'=\frac{x-\mu}{\sigma}

其中:

  • μ\mu:训练集中该特征的平均值。
  • σ\sigma:训练集中该特征的标准差。

标准化后,训练集中的该特征通常均值接近 0、标准差接近 1。

哪些模型需要特征缩放

模型是否通常需要特征缩放
线性回归、逻辑回归建议,尤其配合正则化时
KNN、SVM通常非常需要
神经网络通常建议
决策树、随机森林、XGBoost一般不强制

树模型主要根据特征大小关系选择切分点,所以数值单位通常不会改变样本的排序和切分结果。

防止缩放造成数据泄漏

正确顺序:

  1. 先划分训练集、验证集和测试集。
  2. 只用训练集计算最大值、最小值、均值和标准差。
  3. 使用训练集得到的参数处理验证集和测试集。
  4. 线上预测继续使用训练时保存的同一套参数。

4. 升维与降维

维度可以简单理解为特征数量。

升维

将原始特征转换成更多特征,让模型能够表达更复杂的关系。

例如:

xx,x2,x3x\rightarrow x,x^2,x^3

优点:可能增强模型对非线性关系的表达能力。

缺点:计算量增加,也可能更容易过拟合。

降维

将大量特征压缩成少量特征,同时尽量保留重要信息。

作用:

  • 减少冗余特征。
  • 降低计算成本。
  • 缓解维度过高的问题。
  • 有时可以减少噪声。
  • 方便把高维数据投影到二维或三维进行可视化。

常见方法:

  • PCA:无监督降维,不使用标签 YY,保留数据变化较大的方向。
  • LDA:有监督降维,使用标签 YY,尽量拉开不同类别之间的距离。

九、泛化能力、过拟合与优化方法

1. 泛化能力

泛化能力是指模型不仅在训练数据上表现好,在没有见过的新数据上也能保持较好表现。

机器学习真正关心的不是“背熟训练集”,而是“能否解决新样本”。

2. 欠拟合、正常拟合与过拟合

状态训练集表现验证集表现含义
欠拟合模型还没有学会主要规律
正常拟合学到了能够泛化的规律
过拟合很好较差过度记住训练数据细节和噪声

常见判断:

  • 训练 loss 和验证 loss 都在下降:通常仍在正常学习。
  • 训练 loss 很高,验证 loss 也很高:可能欠拟合。
  • 训练 loss 持续下降,验证 loss 不再下降甚至上升:可能过拟合。

3. Early Stopping

Early Stopping 在训练过程中持续观察验证集指标:

  • 验证集 loss 继续改善:继续训练。
  • 验证集 loss 多轮没有改善:停止训练。
  • 保存验证集效果最好时的模型参数。

注意:Early Stopping 观察的是验证集,不是测试集。测试集只用于最终评估。

4. 正则化

原始损失函数只关心预测是否准确,可能不关心模型是否使用了过大的权重。正则化会在原始 loss 上增加参数惩罚:

Ltotal=Loriginal+λR(w)L_{\text{total}}=L_{\text{original}}+\lambda R(w)

其中:

  • LoriginalL_{\text{original}}:预测误差。
  • R(w)R(w):对模型参数的惩罚。
  • λ\lambda:正则化强度,由开发人员设置。

正则化的目标是:

在预测准确和模型简单、稳定之间取得平衡。

L1 正则化

R(w)=jwjR(w)=\sum_j|w_j|

作用:

  • 鼓励部分不重要的权重变成 0。
  • 可以产生稀疏模型。
  • 在部分场景中起到特征选择作用。

L2 正则化

R(w)=jwj2R(w)=\sum_jw_j^2

作用:

  • 对较大权重施加更强惩罚。
  • 让权重整体变小。
  • 降低模型对输入微小变化的敏感程度。
  • 让预测更加平滑和稳定。

L2 下的权重更新可以理解为:

wt+1=wtη(Loriginalw+2λwt)w_{t+1}=w_t-\eta \left( \frac{\partial L_{\text{original}}}{\partial w}+2\lambda w_t \right)

2λwt2\lambda w_t 会把较大的权重向 0 的方向拉。

一个直观例子

假设训练数据中 x1=x2=1x_1=x_2=1,真实结果为 1:

模型 A:

y^=100x199x2=1\hat y=100x_1-99x_2=1

模型 B:

y^=0.5x1+0.5x2=1\hat y=0.5x_1+0.5x_2=1

两个模型在这条训练数据上的原始 loss 都是 0。但是模型 A 的权重非常大,当输入发生很小变化时,预测可能剧烈变化。L2 正则化会更倾向于模型 B。

可以简单记忆:

  • 归一化和标准化处理输入数据 XX
  • 正则化限制模型参数 ww

5. 其他缓解过拟合的方法

  • 增加更多有代表性的训练数据。
  • 清理错误标签和噪声数据。
  • 减少无效或泄漏特征。
  • 降低模型复杂度。
  • 使用交叉验证。
  • 对深度学习使用 Dropout、数据增强等方法。

十、XGBoost:风控表格数据中的常用模型

1. XGBoost 是什么

XGBoost 是 Extreme Gradient Boosting 的缩写,通常简称 XGB。它是一种基于多棵决策树的梯度提升算法,既可以做回归,也可以做分类和排序。

它的核心思想是:

第一棵树先进行预测,后面的树不断学习并修正前面模型没有处理好的误差,最后组合所有树的结果。

XGBoost 逐棵树修正误差

2. XGBoost 的输入和输出

输入通常是一行整理好的表格特征:

  • 收入。
  • 负债率。
  • 历史逾期次数。
  • 近 30 天申请次数。
  • 账户使用情况。

不同任务的输出不同:

  • 回归:预测房价、损失金额或收益率等连续数值。
  • 分类:输出类别概率、风险分数或最终类别。
  • 排序:输出排序分数。

风控常见流程:

客户特征XGBoost风险分数/违约概率阈值决策\text{客户特征} \rightarrow \text{XGBoost} \rightarrow \text{风险分数/违约概率} \rightarrow \text{阈值决策}

3. XGBoost 的训练阶段与使用阶段

训练阶段:

X+Y训练 XGBoost 模型X+Y\rightarrow\text{训练 XGBoost 模型}

预测阶段:

Xnew模型风险分数X_{\text{new}}\rightarrow\text{模型}\rightarrow\text{风险分数}

预测新客户时没有未来标签 YY

4. 常见超参数

  • n_estimators:树的数量。
  • max_depth:单棵树的最大深度。
  • learning_rate:每棵新树的贡献步长。
  • subsample:每棵树使用的样本比例。
  • colsample_bytree:每棵树使用的特征比例。
  • reg_alpha:L1 正则化强度。
  • reg_lambda:L2 正则化强度。

树太深、数量太多或正则化太弱,都可能增加过拟合风险。

5. 一个特征变化导致分数跳变,是不是过拟合

不一定。决策树通过切分点把样本分到不同分支:

  • 近 30 天申请次数 5\leq5:走左分支。
  • 近 30 天申请次数 >5>5:走右分支。

当特征从 5 变成 6 时,样本跨过切分点,分数可能出现跳变。这是树模型的结构特性,不一定代表过拟合。

更像过拟合的情况是:

  • 训练集效果明显高于验证集或时间外测试集。
  • 模型过度依赖少量不稳定特征。
  • 很小的数据扰动导致大量样本出现不符合业务常识的剧烈变化。

如果线上某个特征的整体分布发生变化,导致大量客户分数一起偏移,则还需要检查数据漂移、特征口径和数据质量问题。


十一、模型评估与阈值选择

1. 回归指标

MSE

MSE=1ni=1n(yiy^i)2\mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2

对大误差惩罚较强。

RMSE

RMSE=MSE\mathrm{RMSE}=\sqrt{\mathrm{MSE}}

与目标值单位相同,更容易解释。

MAE

MAE=1ni=1nyiy^i\mathrm{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat y_i|

相比 MSE,MAE 对极端大误差没有那么敏感。

2. 二分类混淆矩阵

实际为正类实际为负类
预测为正类TP:正确命中FP:误判、误杀
预测为负类FN:漏判、漏放TN:正确放过

3. 常见分类指标

准确率:

Accuracy=TP+TNTP+TN+FP+FN\mathrm{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN}

精确率:

Precision=TPTP+FP\mathrm{Precision}=\frac{TP}{TP+FP}

表示模型判为正类的样本中,有多少是真的正类。

召回率:

Recall=TPTP+FN\mathrm{Recall}=\frac{TP}{TP+FN}

表示所有真实正类中,有多少被模型成功找出。

F1:

F1=2PrecisionRecallPrecision+RecallF1=2\cdot\frac{\mathrm{Precision}\cdot\mathrm{Recall}} {\mathrm{Precision}+\mathrm{Recall}}

F1 综合考虑 Precision 和 Recall。

4. 风控常见指标

  • ROC-AUC:衡量模型把风险客户排在正常客户前面的能力,越接近 1 通常越好。
  • KS:衡量好客户和坏客户累计分布的最大差异,常用于风控模型区分能力评估。
  • 召回率:有多少真实风险客户被拦截。
  • 精确率:被拦截客户中有多少确实是风险客户。
  • 通过率:有多少客户最终通过策略。
  • 坏账率:通过客户中实际发生风险的比例。

不能只看一个指标。风控阈值通常需要在风险损失、误伤成本和业务通过率之间进行权衡。

5. 0~1 风险分是否一定等于概率

线上接口返回 0~1 的数值时,它通常是以下两种情况之一:

  1. 模型预测概率:例如逻辑回归经过 Sigmoid 后的输出,或者二分类 XGBoost 的概率输出,可以理解为模型估计的 P(Y=1X)P(Y=1\mid X)
  2. 归一化风险分:由原始分数、多个模型或业务规则经过缩放、组合后得到。它虽然位于 0~1,但不一定具有严格的概率含义。

因此,数值位于 0~1,并不能单独证明它就是准确概率。例如模型输出 0.8,并不天然代表这类客户中一定有 80% 会违约。

如果希望把风险分解释成可靠概率,还需要进行概率校准,并验证“预测概率约为 0.8 的客户,实际事件发生率是否也接近 80%”。

使用线上分数前必须明确:

  • 接口返回的是模型概率、归一化风险分,还是综合策略分。
  • 分数对应哪个类别,例如是否表示 P(Y=1X)P(Y=1\mid X)
  • 分数越高是风险越高,还是信用越好。
  • 分数是否经过概率校准。
  • 阈值以上还是以下算命中。

十二、风控二分类模型完整案例

1. 定义问题

目标:在客户申请时,预测客户未来是否会发生违约。

  • XX:申请时可以获得的客户特征。
  • YY:未来观察期内是否违约,违约为 1,正常为 0。

2. 准备数据

特征含义
income月收入
debt_ratio负债率
overdue_12m近 12 个月逾期次数
apply_count_30d近 30 天申请次数
account_age账户历史时长
label未来是否违约

要确保所有特征在预测时点已经存在,避免把未来信息放入特征。

3. 完整流程

风控二分类模型完整流程

4. 线上预测

新客户到来后:

  1. 获取和训练时相同口径的特征。
  2. 使用训练时保存的数据处理规则。
  3. 输入已经训练好的模型。
  4. 模型输出违约概率或风险分数。
  5. 业务系统根据阈值判断是否命中。

例如模型输出违约概率 0.78,阈值为 0.60:

0.780.600.78\geq0.60

因此命中高风险规则,可以进入拒绝、降额或人工审核流程。

5. 风险等级不一定是多分类

低风险、中风险、高风险可以有两种实现方式:

  1. 直接训练三分类模型,输出三个类别的概率。
  2. 先训练违约二分类模型,再按违约概率分层。

实际风控中,第二种方式很常见:

  • p<0.20p<0.20:低风险。
  • 0.20p<0.600.20\leq p<0.60:中风险。
  • p0.60p\geq0.60:高风险。

这属于“二分类概率模型 + 风险分层”,不是真正的三分类训练。


十三、把全部内容串成一条主线

机器学习从数据准备到业务决策的完整主线

可以用一句话概括:

准备数据 X/YX/Y,让模型根据 XX 产生预测,用 loss 衡量预测与 YY 的差距,再通过优化方法调整参数;最后在新数据上输出分数,并由业务阈值作出决策。


十四、常见概念快速对照

概念一句话解释
特征 XX模型的输入数据
标签 YY训练阶段的正确答案
预测 Y^\hat Y模型给出的结果
参数模型从数据中学到的值,例如 wwbb
超参数人为设置或调优的配置,例如学习率、树深度
loss衡量当前预测错了多少
梯度下降根据 loss 的方向更新参数
回归预测连续数值
分类预测离散类别
Sigmoid将一个分数转换为二分类概率
Softmax将多个类别分数转换为总和为 1 的概率
归一化把输入特征缩放到固定范围
标准化把输入特征处理到相近尺度
正则化对模型参数施加限制,缓解过拟合
泛化能力模型解决新数据的能力
Early Stopping验证集不再改善时提前停止训练
阈值将模型分数转换成业务决策的界线