3. 样本偏差类型(上):选择偏差(Selection Bias)
3.1 定义与核心概念
选择偏差是指在样本采集过程中,由于非随机的选择机制,导致采集到的样本无法代表目标总体真实分布的系统性偏差。在金融知识图谱构建与模型训练中,选择偏差会直接导致知识图谱的“认知盲区”——模型只学会了“被看见”的模式,而对“未被看见”的尾部风险、长尾客群或极端事件缺乏泛化能力。
核心公式表达:
若目标总体分布为 P(X, Y),实际观测到的样本分布为 P'(X, Y),则选择偏差可表示为:
P'(X, Y) ≠ P(X, Y | S=1),其中 S=1 表示样本被选入观测集。
当选择机制 S 与特征 X 或标签 Y 相关时,偏差即产生。
若目标总体分布为 P(X, Y),实际观测到的样本分布为 P'(X, Y),则选择偏差可表示为:
P'(X, Y) ≠ P(X, Y | S=1),其中 S=1 表示样本被选入观测集。
当选择机制 S 与特征 X 或标签 Y 相关时,偏差即产生。
3.2 选择偏差的主要成因
在金融场景中,选择偏差的成因可归纳为以下四类,其中数据采集偏好是最常见且隐蔽的源头:
| 成因类别 | 具体描述 | 金融场景典型表现 |
|---|---|---|
| 数据采集偏好 | 采集渠道、时间窗口、数据源选择导致样本分布偏移 | 仅采集头部交易所数据,忽略场外市场;只抓取“热门”股票新闻 |
| 幸存者偏差 | 只观测到“存活”实体,忽略已退市、违约、消亡的实体 | 基金业绩分析只包含存续基金,忽略清盘基金 |
| 自选择偏差 | 样本是否被观测由实体自身行为决定 | 自愿披露财务数据的企业往往经营状况更好 |
| 截断/删失偏差 | 因阈值或条件限制,部分样本被系统性地排除 | 信用评分模型只覆盖有信贷记录的人群 |
3.3 选择偏差在金融知识图谱中的传导路径
选择偏差在知识图谱中会沿着实体-关系链路逐级放大,形成“偏差级联”效应。以下 SVG 展示了从数据采集到模型决策的完整传导路径:
3.4 金融场景案例详解
案例一:债券违约预测中的幸存者偏差
场景描述:某机构基于交易所债券数据构建违约预测知识图谱,训练样本仅包含存续债券,未纳入已违约退市债券的历史数据。
- 偏差表现:模型严重低估违约概率,对信用利差收窄的债券给出“安全”评级。
- 量化影响:实际违约率是模型预测值的 3.2 倍(基于 2018-2023 年数据回测)。
- 知识图谱后果:“发行人-担保-债券”三元组中,高风险关联关系被系统性遗漏。
校验方法:对比训练集与全量市场数据的违约率分布;使用 Kaplan-Meier 生存曲线估计删失样本的违约风险。
案例二:智能投顾中的自选择偏差
场景描述:某智能投顾平台基于用户交易行为数据训练资产配置模型,但数据仅来自主动使用该平台的用户。
| 用户群体 | 平均持仓周期 | 年化换手率 | 风险偏好 |
|---|---|---|---|
| 平台活跃用户(训练集) | 45 天 | 8.2 倍 | 激进 |
| 全市场零售投资者 | 120 天 | 3.5 倍 | 均衡 |
| 偏差方向 | 低估 62.5% | 高估 134% | 右偏 |
知识图谱影响:“用户-持仓-基金”关系图中,长期持有型用户及其关联的稳健型基金被严重低估,导致推荐系统偏向高波动产品。
案例三:供应链金融中的数据采集偏好
场景描述:银行构建供应链知识图谱时,仅采集核心企业 ERP 系统中的交易数据,忽略二级、三级供应商的线下交易记录。
- 偏差来源:数据采集渠道单一,偏好“数字化程度高”的企业。
- 知识图谱表现:核心企业节点度(Degree)异常高,而中小供应商节点稀疏,形成“马太效应”。
- 模型后果:链路预测模型对二级供应商的关联关系召回率仅 12%。
3.5 选择偏差的识别与校验框架
以下 SVG 展示了选择偏差的系统性校验流程,适用于金融知识图谱样本质量评估:
3.6 选择偏差的量化评估方法
在金融知识图谱样本偏差校验中,推荐使用以下量化方法评估选择偏差的严重程度:
# 逆概率加权(IPW)估计选择偏差
import numpy as np
from sklearn.linear_model import LogisticRegression
def estimate_selection_bias(X, S):
"""
X: 特征矩阵
S: 选择指示变量 (1=被观测, 0=未被观测)
返回: 每个样本的逆概率权重
"""
model = LogisticRegression()
model.fit(X, S)
propensity = model.predict_proba(X)[:, 1]
# 防止除零
propensity = np.clip(propensity, 0.01, 0.99)
weights = 1.0 / propensity
return weights
# 计算加权后的分布差异
def weighted_ks_statistic(X, weights, reference_dist):
"""
计算加权后的 Kolmogorov-Smirnov 统计量
用于量化选择偏差程度
"""
# 实现细节省略,返回偏差分数
return ks_statistic
实践注意:逆概率加权方法依赖于“选择机制可忽略性”假设(即给定特征 X 后,选择 S 与结果 Y 独立)。在金融知识图谱中,若存在未观测的混淆变量(如企业隐性关联关系),IPW 估计可能仍有偏。建议结合双重稳健估计(Doubly Robust)方法进行交叉验证。