一、可解释性问题
机器学习可解释性:指的是我们能够理解、信任和有效管理人工智能决策过程的能力
| 模型类型 | 可解释性 | 典型代表 | 适用场景 |
|---|---|---|---|
| 高可解释性模型 | 高 | 线性回归、决策树、逻辑回归 | 需要强解释性的领域,如金融信贷 |
| 中等可解释性模型 | 中 | 随机森林、梯度提升树 | 平衡性能与解释性的场景 |
| 低可解释性模型 | 低 | 深度学习、复杂集成模型 | 以性能为优先,如图像识别、自然语言处理 |
当前的可解释性技术
- 特征重要性分析:
SHAP(SHapley Additive exPlanations)基于博弈论,为每个特征分配一个重要性值,显示该特征对预测的贡献。
model=xgb.XGBClassifier()# 训练一个 XGBoost 模型model.fit(X_train,y_train)explainer=shap.TreeExplainer(model)# 创建 SHAP 解释器shap_values=explainer.shap_values(X_test)# 可视化特征重要性shap.summary_plot(shap_values,X_test,plot_type="bar")plt.title("特征重要性排序")plt.show()# 单个预测的解释shap.force_plot(explainer.expected_value,shap_values[0,:],X_test.iloc[0,:])- LIME(局部可解释模型无关解释)
核心思想:在单个预测点附近创建一个简单的、可解释的模型(如线性模型)来近似复杂模型的行为。
explainer=lime_image.LimeImageExplainer()- 注意力机制
NLP中,注意力机制可以显示模型在做出预测时"关注"输入文本的哪些部分 - 决策边界可视化
低维数据可以直接可视化模型的决策边界:
# 创建网格x_min,x_max=X[:,0].min()-0.5,X[:,0].max()+0.5y_min,y_max=X[:,1].min()-0.5,X[:,1].max()+0.5xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02))# 预测整个网格Z=model.predict(np.c_[xx.ravel(),yy.ravel()])Z=Z.reshape(xx.shape)# 绘制决策边界和散点图plt.figure(figsize=(10,8))plt.contourf(xx,yy,Z,alpha=0.4,cmap=plt.cm.RdYlBu)plt.scatter(X[:,0],X[:,1],c=y,s=50,edgecolor='k',cmap=plt.cm.RdYlBu)plt.xlabel('特征 1')plt.ylabel('特征 2')plt.title('决策边界可视化')plt.show()二、假设限制
2.1 独立同分布假设
监督学习核心假设之一
定义:训练模型的数据,与模型需要预测的数据,是从同一个概率分布中独立抽取的。
假设违背:分布偏移
- 协变量偏移:输入特征 X 的分布发生了变化,但输入 X 与输出 Y 之间的关系(即条件分布 P(Y|X))保持不变。
- 标签偏移:输出标签 Y 的分布发生了变化,但给定标签后,输入特征的分布 P(X|Y) 保持不变。
- 概念偏移输入 X 和输出 Y 之间的映射关系本身随着时间或环境发生了变化。
2.2 训练数据代表性假设
假设要求训练数据集必须充分代表模型可能遇到的整个数据空间
定义:模型只能从它"见过"的数据中学习。如果训练数据缺失了某些重要的情形、类别或特征范围,模型在面对这些"未见"情况时就会无所适从。
假设违背:泛化能力差和偏见
- 数据覆盖不全
- 样本选择偏差:收集数据的方式系统性地排除了某些群体。
2.3 平稳性假设
针对时间序列数据,要求数据的基本统计特性(如均值、方差)不随时间变化。
定义:许多经典的时间序列模型(如ARIMA)或应用于序列数据的机器学习模型,都隐含地假设数据生成过程是平稳的,或者可以通过差分等方法变得平稳。
非平稳数据中的季节性等趋势,导致模型捕捉的是这些随时间变化的伪规律
2.4 特征与标签存在相关关系假设
机器学习根本前提:特征 X 必须与要预测的标签 Y 存在某种可被模型学习的相关关系。
定义:机器学习模型的任务就是发现 X 和 Y 之间的这种关联模式。如果两者本质上毫无关联,那么任何模型都无法做出比随机猜测更好的预测。
三、数据偏差
“垃圾进,垃圾出”——如果输入的数据有问题,输出的结果也会有缺陷。
- 选择偏差:当数据收集过程本身存在系统性偏差时发生。
- 测量偏差:数据本身在测量或记录时出现错误。
- 确认偏差:研究人员或数据标注者将自己的主观偏见带入数据中。
数据预处理技术解决数据不平衡:重采样
# 2. 对少数类进行上采样X_minority_upsampled,y_minority_upsampled=resample("""重新采样数据"""X_minority,""""""y_minority,""""""replace=True,"""有放回抽样"""n_samples=len(X_majority),"""生成的少数类样本数量 = 多数类样本数量"""random_state=42)"""对少数类样本进行有放回抽样(复制样本),直到数量与多数类样本一样多,实现数据集类别平衡。"""