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

一、先建立完整知识地图

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

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

可以简化记忆为:
AI⊃ML⊃Neural Networks⊃Deep Learning\text{AI} \supset \text{ML} \supset \text{Neural Networks} \supset \text{Deep Learning} AI⊃ML⊃Neural Networks⊃Deep Learning

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

机器学习的核心目标是:

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

在有监督学习中,可以写成:
X → 模型 f Y^ X \xrightarrow{\text{模型 }f} \hat{Y} X模型 f Y^

其中:

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

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


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

1. 两者的典型流程

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

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

2. 什么是特征工程

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

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

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

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

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

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

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

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

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

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

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


三、机器学习的主要类型

1. 有监督学习

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

例子:

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

一句话记忆:

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

2. 无监督学习

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

常见任务:

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

一句话记忆:

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

3. 半监督学习

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

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

一句话记忆:

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

4. 强化学习

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

例如量化交易:

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

一句话记忆:

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


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

1. 样本、特征和标签

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

客户 月收入 负债率 近 12 月逾期次数 是否违约
A 10,000 20% 0 0
B 6,000 75% 3 1
C 15,000 35% 1 0
  • 每一行是一条样本
  • 月收入、负债率、逾期次数是输入特征 XX X
  • 是否违约是目标值或标签 YY Y
  • 标签可以约定为:正常还款为 0,违约为 1。

2. 训练阶段与预测阶段

训练阶段需要 XX X 和 YY Y:
(Xtrain,Ytrain)→训练算法→模型参数 (X_{\text{train}},Y_{\text{train}}) \rightarrow \text{训练算法} \rightarrow \text{模型参数} (Xtrain,Ytrain)→训练算法→模型参数

实际预测阶段只有新数据 XX X:
Xnew→训练好的模型→Y^ X_{\text{new}} \rightarrow \text{训练好的模型} \rightarrow \hat{Y} Xnew→训练好的模型→Y^

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

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

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

完整流程:

4. 什么是数据泄漏

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

风控例子:

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

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


五、回归任务与线性回归

1. 什么是回归任务

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

例子:

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

注意:

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

2. 一元线性回归

一元线性回归使用一个特征预测一个连续数值:
y^i =b+wxi \hat{y}_i=b+wx_i y^i=b+wxi

其中:

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

所谓"拟合",就是找到最合适的 ww w 和 bb b,让预测直线尽可能接近训练数据点。

3. 多元线性回归

多元线性回归使用多个特征共同预测结果:
y^=b+w1x1+w2x2+⋯+wpxp \hat{y}=b+w_1x_1+w_2x_2+\cdots+w_px_p y^=b+w1x1+w2x2+⋯+wpxp

其中:

  • pp p:特征数量。
  • xj x_j xj:第 jj j 个输入特征。
  • wj w_j wj:第 jj j 个特征对应的权重。

房价预测例子:
房价^=b+w1⋅面积+w2⋅楼层+w3⋅房龄 \widehat{\text{房价}} =b+w_1\cdot\text{面积} +w_2\cdot\text{楼层} +w_3\cdot\text{房龄} 房价 =b+w1⋅面积+w2⋅楼层+w3⋅房龄

4. 均方误差 MSE

线性回归通常使用均方误差衡量预测值与真实值之间的差距:
MSE=1n ∑i=1n (yi− y^i )2 \mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2

其中:

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

计算步骤:

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

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

例如,真实值为 10、20,预测值为 12、17:
MSE= (10−12)2+(20−17)22 = 4+92 =6.5 \mathrm{MSE} =\frac{(10-12)^2+(20-17)^2}{2} =\frac{4+9}{2} =6.5 MSE=2(10−12)2+(20−17)2=24+9=6.5

5. 线性回归的训练目标

把线性回归预测公式代入 MSE:
MSE(w,b)=1n ∑i=1n yi−(b+wxi) 2 \mathrm{MSE}(w,b) =\frac{1}{n}\sum_{i=1}^{n}\lefty_i-(b+wx_i)\\right^2 MSE(w,b)=n1i=1∑nyi−(b+wxi)2

模型训练要做的是:

不断寻找更合适的 ww w 和 bb b,使 MSE 尽可能小。

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


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

1. 什么是分类任务

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

例子:

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

分类通常分为:

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

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

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

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

例如,模型内部原始分数为 z=2z=2 z=2,经过 Sigmoid 后:
p= 11+e−2 ≈0.881 p=\frac{1}{1+e^{-2}}\approx0.881 p=1+e−21≈0.881

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

因此,实际线上流程可以简化为:
输入特征→模型→0~1 概率/风险分→业务阈值→命中结果\text{输入特征} \rightarrow\text{模型} \rightarrow\text{0~1 概率/风险分} \rightarrow\text{业务阈值} \rightarrow\text{命中结果} 输入特征→模型→0~1 概率/风险分→业务阈值→命中结果

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

3. 逻辑回归

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

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

第一步,计算线性分数:
z=b+w1x1+w2x2+⋯+wpxp z=b+w_1x_1+w_2x_2+\cdots+w_px_p z=b+w1x1+w2x2+⋯+wpxp

第二步,使用 Sigmoid 函数转换成概率:
p=σ(z)= 11+e−z p=\sigma(z)=\frac{1}{1+e^{-z}} p=σ(z)=1+e−z1

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

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

风控例子:

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

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

4. 阈值决策

假设业务阈值设置为 0.6:

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

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

阈值越高:

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

阈值越低:

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

5. 二分类交叉熵损失

逻辑回归通常使用二分类交叉熵,也叫 Log Loss:
L=−1n ∑i=1n yilog⁡(pi)+(1−yi)log⁡(1−pi) L=-\frac{1}{n}\sum_{i=1}^{n} \left y_i\\log(p_i)+(1-y_i)\\log(1-p_i) \\right L=−n1i=1∑nyilog(pi)+(1−yi)log(1−pi)

直观理解:

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

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

6. 多分类与 Softmax

多分类模型会为每个类别计算一个原始分数:
zk=bk+ ∑j=1p wkj xj z_k=b_k+\sum_{j=1}^{p}w_{kj}x_j zk=bk+j=1∑pwkjxj

Softmax 将所有类别的原始分数转换成概率:
pk= ezk ∑c=1K ezc p_k=\frac{e^{z_k}}{\sum_{c=1}^{K}e^{z_c}} pk=∑c=1Kezcezk

其中:

  • KK K:类别总数。
  • zk z_k zk:第 kk k 个类别的原始分数。
  • pk p_k pk:属于第 kk k 个类别的概率。

Softmax 的特点:

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

例如:

类别 原始分数 Softmax 概率
2 66.5%
1 24.5%
0 9.0%

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

多分类常用交叉熵损失:
L=− ∑k=1K yklog⁡(pk) L=-\sum_{k=1}^{K}y_k\log(p_k) L=−k=1∑Kyklog(pk)

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

7. Sigmoid 与 Softmax 的区别

对比项 Sigmoid Softmax
常见任务 二分类、多标签分类 互斥的多分类
输出 每个输出独立转换 所有类别共同归一化
概率和 不要求等于 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) θt+1=θt−η∇θL(θt)

也可以简化写成:
wt+1 =wt−ηgt w_{t+1}=w_t-\eta g_t wt+1=wt−ηgt

其中:

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

可以把它理解成下山:

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

3. 学习率

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

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

4. 完整参数更新过程

在线性模型中,权重和偏置都需要更新:
wt+1 =wt−η ∂L∂w w_{t+1}=w_t-\eta\frac{\partial L}{\partial w} wt+1=wt−η∂w∂L
bt+1 =bt−η ∂L∂b b_{t+1}=b_t-\eta\frac{\partial L}{\partial b} bt+1=bt−η∂b∂L

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

方法 每次计算使用的数据 优点 缺点
全量梯度下降 全部训练数据 梯度稳定 数据大时很慢、占内存
随机梯度下降 SGD 1 条样本 更新快、随机性强 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 的 iteration 数=10010000=100

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

7. 模型参数与超参数

类型 含义 例子
模型参数 训练过程中从数据里学出来 权重 ww w、偏置 bb b
超参数 训练前或调参阶段设置 学习率、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′= x−xmin⁡ xmax⁡−xmin⁡ x'=\frac{x-x_{\min}}{x_{\max}-x_{\min}} x′=xmax−xminx−xmin

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

如果收入范围为 0~50,000,某客户收入为 10,000:
x′= 10000−050000−0 =0.2 x'=\frac{10000-0}{50000-0}=0.2 x′=50000−010000−0=0.2

标准化

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

其中:

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

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

哪些模型需要特征缩放

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

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

防止缩放造成数据泄漏

正确顺序:

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

4. 升维与降维

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

升维

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

例如:
x→x,x2,x3x\rightarrow x,x^2,x^3 x→x,x2,x3

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

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

降维

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

作用:

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

常见方法:

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

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

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) Ltotal=Loriginal+λR(w)

其中:

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

正则化的目标是:

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

L1 正则化

R(w)=∑j∣wj∣R(w)=\sum_j|w_j| R(w)=j∑∣wj∣

作用:

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

L2 正则化

R(w)=∑jwj2R(w)=\sum_jw_j^2 R(w)=j∑wj2

作用:

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

L2 下的权重更新可以理解为:
wt+1 =wt−η ( ∂Loriginal ∂w +2λwt) w_{t+1}=w_t-\eta \left( \frac{\partial L_{\text{original}}}{\partial w}+2\lambda w_t \right) wt+1=wt−η(∂w∂Loriginal+2λwt)

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

一个直观例子

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

模型 A:
y^=100x1−99x2=1 \hat y=100x_1-99x_2=1 y^=100x1−99x2=1

模型 B:
y^=0.5x1+0.5x2=1 \hat y=0.5x_1+0.5x_2=1 y^=0.5x1+0.5x2=1

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

可以简单记忆:

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

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

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

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

1. XGBoost 是什么

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

它的核心思想是:

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

2. XGBoost 的输入和输出

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

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

不同任务的输出不同:

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

风控常见流程:
客户特征→XGBoost→风险分数/违约概率→阈值决策\text{客户特征} \rightarrow \text{XGBoost} \rightarrow \text{风险分数/违约概率} \rightarrow \text{阈值决策} 客户特征→XGBoost→风险分数/违约概率→阈值决策

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

训练阶段:
X+Y→训练 XGBoost 模型X+Y\rightarrow\text{训练 XGBoost 模型} X+Y→训练 XGBoost 模型

预测阶段:
Xnew→模型→风险分数 X_{\text{new}}\rightarrow\text{模型}\rightarrow\text{风险分数} Xnew→模型→风险分数

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

4. 常见超参数

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

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

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

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

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

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

更像过拟合的情况是:

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

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


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

1. 回归指标

MSE

MSE=1n ∑i=1n (yi− y^i )2 \mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2 MSE=n1i=1∑n(yi−y^i)2

对大误差惩罚较强。

RMSE

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

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

MAE

MAE=1n ∑i=1n ∣yi− y^i ∣ \mathrm{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat y_i| MAE=n1i=1∑n∣yi−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} Accuracy=TP+TN+FP+FNTP+TN

精确率:
Precision= TPTP+FP \mathrm{Precision}=\frac{TP}{TP+FP} Precision=TP+FPTP

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

召回率:
Recall= TPTP+FN \mathrm{Recall}=\frac{TP}{TP+FN} Recall=TP+FNTP

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

F1:
F1=2⋅ Precision⋅Recall Precision+Recall F1=2\cdot\frac{\mathrm{Precision}\cdot\mathrm{Recall}} {\mathrm{Precision}+\mathrm{Recall}} F1=2⋅Precision+RecallPrecision⋅Recall

F1 综合考虑 Precision 和 Recall。

4. 风控常见指标

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

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

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

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

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

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

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

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

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

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

1. 定义问题

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

  • XX X:申请时可以获得的客户特征。
  • YY Y:未来观察期内是否违约,违约为 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.78≥0.600.78\geq0.60 0.78≥0.60

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

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

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

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

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

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

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


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

可以用一句话概括:

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


十四、常见概念快速对照

概念 一句话解释
特征 XX X 模型的输入数据
标签 YY Y 训练阶段的正确答案
预测 Y^ \hat Y Y^ 模型给出的结果
参数 模型从数据中学到的值,例如 ww w、 bb b
超参数 人为设置或调优的配置,例如学习率、树深度
loss 衡量当前预测错了多少
梯度下降 根据 loss 的方向更新参数
回归 预测连续数值
分类 预测离散类别
Sigmoid 将一个分数转换为二分类概率
Softmax 将多个类别分数转换为总和为 1 的概率
归一化 把输入特征缩放到固定范围
标准化 把输入特征处理到相近尺度
正则化 对模型参数施加限制,缓解过拟合
泛化能力 模型解决新数据的能力
Early Stopping 验证集不再改善时提前停止训练
阈值 将模型分数转换成业务决策的界线
相关推荐
数据知道1 小时前
哈希与密码存储——bcrypt、Argon2、盐值与彩虹表
网络·算法·安全·网络安全·密码学·哈希算法
haon11221 小时前
树模型在信贷风控怎么用——从决策树到 XGBoost
大数据·人工智能·算法·决策树·机器学习·数据挖掘
wordbaby1 小时前
BM25 是什么?手把手拆解搜索引擎的核心算法
人工智能·算法
阳明山水1 小时前
从相关到因果:预测科学的因果转向与可识别性挑战
人工智能·深度学习·算法·机器学习·架构
TDengine (老段)1 小时前
TDgpt 使用 — 部署、SQL、算法
大数据·数据库·sql·算法·时序数据库·tdengine·涛思数据
不会就选b1 小时前
数据结构之树&&二叉树(四)
数据结构·算法
hansang_IR1 小时前
【题解】P4456 [CQOI2018] 交错序列(矩阵乘法)
c++·线性代数·算法