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

一、先建立完整知识地图

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 模型。
  • PyTorch、TensorFlow:主要用于神经网络和深度学习。

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

  • 普通线性回归也可以通过最小二乘法直接求解。
  • 逻辑回归通常使用梯度类优化算法或其他数值优化器。
  • 决策树通过寻找特征切分点构建树。
  • 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 验证集不再改善时提前停止训练
阈值 将模型分数转换成业务决策的界线
相关推荐
All for pursuit.10 小时前
【分治-2】215.数组中的第K个最大元素
数据结构·c++·算法·leetcode
CQU_JIAKE10 小时前
9.15【A】
算法·动态规划
成为深度学习高手10 小时前
DAG:沿时间与通道双相关建模的外生变量时序预测
网络·人工智能·深度学习·算法·机器学习·数据挖掘·时序数据库
阳明山水11 小时前
CEDAR双重解耦实现决策与干预分离
人工智能·深度学习·算法·机器学习·架构
w_zero_one11 小时前
链表(3)
java·数据结构·算法
Zootopia62611 小时前
美国载人飞船Crew-13明晚发射!
人工智能·算法·机器学习·数学建模·无人机·创业创新·信息与通信
zhangfeng113311 小时前
qjlDim 含义 TurboQuant QJL Quantized Johnson-Lindenstrauss,量化JL随机投影
人工智能·算法·ai编程·npu
HwJack2011 小时前
【HarmonyOS开发小实践】HarmonyOS GC 引用计数 vs 对象追踪,三种回收算法
jvm·算法·harmonyos
blxr_11 小时前
力扣hot100前k个高频元素https://leetcode.cn/problems/top-k-frequent-elements/
算法·leetcode·职场和发展
longlongzihan21 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先