集成学习中的多样性密码:量化学习器的多样性

在集成学习中,多样性是一个关键概念,简单来说,多样性衡量的是各个学习器之间的差异程度。

如果学习器之间差异很大,那么它们的组合就更有可能覆盖更多的情况,从而提高集成模型的性能,

就像足球队需要不同位置的球员配合一样。

下面介绍四种常用的多样性度量方法及其实现。

1. 不合度量(Disagreement Measure)

不合度量是一种非常直观的多样性度量方法。

它通过计算两个学习器在样本上的预测结果不一致的比例来衡量它们之间的差异。

不合度量的值介于0到1之间 ,值越接近 1,说明两个学习器的预测结果越不一致,多样性越高。

假设我们有两个学习器 L_1 \\(和\\) L_2 \\(,对于一个数据集中的每个样本\\) x_i \\(,如果\\) L_1 \\(和\\) L_2 的预测结果不同,那么就认为它们在这个样本上**"不合"**。

不合度量就是这种**"不合"**情况的比例。

为了演示如何度量多样性,我们先创建两个不同的决策树模型:

python 复制代码
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# 生成数据
X, y = make_classification(
    n_samples=100, n_features=20, n_informative=10, n_redundant=10, random_state=42
)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 训练两个不同的决策树
clf1 = DecisionTreeClassifier(random_state=42)
clf2 = DecisionTreeClassifier(random_state=43)
clf1.fit(X_train, y_train)
clf2.fit(X_train, y_train)

# 预测测试集
y_pred1 = clf1.predict(X_test)
y_pred2 = clf2.predict(X_test)

然后,我们看看如何计算两个模型的不合度量 (Disagreement Measure)。

python 复制代码
# 计算不合度量
disagreement = np.mean(y_pred1 != y_pred2)
print(f"不合度量: {disagreement}")

## 输出结果:
# 不合度量: 0.2

2. 相关系数(Correlation Coefficient)

相关系数 衡量的是两个学习器预测结果之间的线性相关性。

如果两个学习器的预测结果完全一致,相关系数为1;

如果完全相反,相关系数为-1;

如果两者之间没有线性关系,相关系数接近 0。

在集成学习中,我们希望相关系数越低越好,因为这意味着学习器之间的差异更大。

相关系数是通过计算两个学习器预测结果的协方差与它们各自的标准差的比值来得到的。

其公式为: \\rho=\\frac{\\text{Cov}(L_1,L_2)}{\\sigma{L_1}\\sigma{L_2}}

其中, Cov(L_1,L_2) \\(是协方差,\\) \\sigma{L_1} \\(和\\) \\sigma{L_2} \\(分别是\\) L_1 \\(和\\) L_2 的标准差。

使用代码来计算相关系数也很简单,同样使用上面创建的两个决策树模型。

python 复制代码
import numpy as np

# 计算相关系数
correlation = np.corrcoef(y_pred1, y_pred2)[0, 1]
print(f"相关系数: {correlation}")

## 输出结果:
# 相关系数: 0.6637465183030644

3. Q-统计量(Q-Statistic)

Q-统计量是另一种衡量学习器之间一致性和差异性的指标。

它通过比较两个学习器在样本上的预测结果来计算。

Q-统计量 的值介于**-1 到 1 之间** ,值越接近 1,说明两个学习器的预测结果越一致;

值越接近-1,说明它们的预测结果越不一致。

Q-统计量的计算公式为: Q=\\frac{a\\times d-b\\times c}{(a+b)\\times(c+d)}

其中:

  • a 是两个学习器都正确预测的样本数
  • b 是第一个学习器正确预测,第二个学习器错误预测的样本数
  • c 是第一个学习器错误预测,第二个学习器正确预测的样本数
  • d 是两个学习器都错误预测的样本数

计算Q-统计量的示例代码如下:

python 复制代码
from sklearn.metrics import confusion_matrix

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred1, labels=[0, 1])
a = np.sum((y_pred1 == y_test) & (y_pred2 == y_test))
b = np.sum((y_pred1 == y_test) & (y_pred2 != y_test))
c = np.sum((y_pred1 != y_test) & (y_pred2 == y_test))
d = np.sum((y_pred1 != y_test) & (y_pred2 != y_test))

# 计算 Q-统计量
q_statistic = (a * d - b * c) / ((a + b) * (c + d))
print(f"Q-统计量: {q_statistic}")

## 输出结果:
# Q-统计量: 0.5757575757575758

4. k-统计量(Kappa Statistic)

k-统计量是一种衡量分类器性能的指标,它考虑了分类器的正确率和随机猜测的正确率。

在集成学习中,k-统计量可以用来衡量两个学习器之间的多样性。

k-统计量 的值介于**-1 到 1 之间** ,值越接近 1,说明两个学习器的预测结果越一致;

值越接近-1,说明它们的预测结果越不一致。

k-统计量的计算公式为: \\kappa=\\frac{P_o-P_e}{1-P_e}

其中:

  • P_o 是两个学习器预测结果一致的比例
  • P_e 是随机猜测下两个学习器预测结果一致的比例

计算k统计量的示例代码如下:

python 复制代码
from sklearn.metrics import cohen_kappa_score

# 计算 k-统计量
kappa_statistic = cohen_kappa_score(y_pred1, y_pred2)
print(f"Kappa 统计量: {kappa_statistic}")

## 输出结果:
# Kappa 统计量: 0.6116504854368932

5. 指标使用建议

在实际场景中,我们应该如何使用这些指标呢?下面是一些使用建议:

  1. 在Bagging中优先关注不合度量
  2. 构建Stacking时参考相关系数
  3. 使用Q-statistic诊断高相关模型
  4. Kappa值过低时考虑增加模型类型差异

各个指标的数值可参考:

指标 理想范围 应用场景
不合度量 0.3-0.7 快速评估模型差异度
相关系数 -0.5, 0.5 分析模型互补性
Q-统计量 (-0.5, 0.5) 研究预测结果关联强度
Kappa统计量 <0.4 综合评估一致性水平

6. 总结

在集成学习中,度量学习器的多样性是非常重要的。

通过计算不合度量 、相关系数 、Q-统计量 和 k-统计量,我们可以更好地了解学习器之间的差异。

这些指标可以帮助我们选择合适的集成策略,从而提高集成模型的性能。

在实际应用中,可以根据具体问题选择合适的多样性度量指标,并结合scikit-learn等工具进行计算和分析。

相关推荐
小豆庄10 小时前
本地视频打码:多模型检测、帧间追踪与18种模糊的选型
opencv·目标检测·ai·自然语言处理·音视频·视频
gugugu.14 小时前
同一个 ReAct,两种手写方式:LangChain 文本协议 vs LangGraph 状态图
ai·langchain
小七-七牛开发者15 小时前
Tool-Use Agent 如何扩训练数据:拆解工具、任务与环境状态的 Scaling Law
ai·agent·工具调用·scalinglaw·synthapi
wflynn18 小时前
Mistral Large 4发布,万亿参数模型的编码与安全实测数据
ai·技术
日日大王学编程18 小时前
AI 时代后端方向新人的未来规划与看法
人工智能·后端·python·ai·golang
土星云SaturnCloud19 小时前
基于边缘计算与AI视觉的智慧街面治理方案:架构设计与场景落地
服务器·人工智能·ai·边缘计算
Elastic 中国社区官方博客19 小时前
基于 Elasticsearch 与 Jina AI 的全模态智能搜索实践:技术全解析
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·jina
Solange__20 小时前
图片转3D导出GLB、FBX还是OBJ?按5类任务比较材质、动画与可编辑性
人工智能·3d·ai·自然语言处理·编辑器·blender·材质
GJGCY20 小时前
金融AI Agent安全如何评估?数据出站、身份映射、参数绑定与审计追踪机制
人工智能·经验分享·安全·ai·金融·自动化·智能体
涵美女程序猿20 小时前
AI 商品素材工作台怎么搭?Lingko AI 追踪便携显示器接口与支架版本
ai