combo
是一个专注于集成学习(Ensemble Learning)与异常检测(Outlier Detection)的 Python 开源工具库,最初由 Yue Zhao 等人开发并维护。它与作者的另一款著名异常检测库 PyOD 一脉相承,都旨在为研究者和工程师提供易用且灵活的机器学习工具。
在 金融风控、信用风险评分、欺诈检测、推荐系统、异常流量监测 等场景中,往往需要将多个模型或者多个指标进行组合,以得到更稳健或更高精度的预测结果。combo
库便提供了丰富的模型组合和结果融合(Aggregation)方法,帮助轻松地实现这些需求。
1. combo
的主要功能与特点
-
模型集成(Ensemble Learning)
- 提供多种方法来组合不同预测模型(或不同算法)的结果,改善单一模型的性能与稳健性。
-
异常检测(Outlier Detection)
combo
与 PyOD 强强联手,可以将多个异常检测算法或多种检验指标进行组合,提升对异常样本(如欺诈交易、风险用户)的检出率。
-
结果融合与打分
- 提供了多种分数融合(score-level combination)策略,如加权平均、最大最小融合、排序集成等,使用户根据业务需求灵活选择。
-
使用统一的 API 风格
- 继承了 sklearn 的风格,能与常用的机器学习流程无缝衔接,且便于与其他库(如 PyOD、scikit-learn)联合使用。
-
丰富的示例与文档
combo
的官方仓库(GitHub - yzhao062/combo)提供了详细的文档与示例,便于快速上手。
2. 安装与快速开始
2.1 安装
使用 pip
进行安装:
pip install combo
如果你需要最新的开发版本,可以从 GitHub 源码安装:
git clone https://github.com/yzhao062/combo.git
cd combo
pip install .
2.2 快速开始示例
假设我们有多个已经训练好的分类器(或异常检测器),想要对它们的预测结果进行组合。下面演示一个最简单的融合示例——对多个模型的预测分数做平均,再进行最终的决策:
import numpy as np
from combo.models.classifier_comb import SimpleClassifierAggregator
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
# 1. 生成演示数据
X, y = make_blobs(n_samples=500, n_features=5, random_state=42)
# 2. 初始化多个分类器
clf1 = LogisticRegression()
clf2 = RandomForestClassifier(n_estimators=50)
clf3 = SVC(probability=True) # 需要概率输出
# 3. 分别训练这些分类器
clf1.fit(X, y)
clf2.fit(X, y)
clf3.fit(X, y)
# 4. 使用 combo 的 SimpleClassifierAggregator 做结果融合
# 默认方式为 "average"——对各模型预测概率做简单平均
ensemble_clf = SimpleClassifierAggregator(
base_estimators=[clf1, clf2, clf3],
method="average"
)
# 5. 融合预测
ensemble_clf.fit(X, y)
y_scores = ensemble_clf.predict_proba(X)[:, 1] # 得到预测为正类的概率
y_pred = (y_scores >= 0.5).astype(int) # 简单阈值处理
# 6. 查看结果
print("Scores (first 10):", y_scores[:10])
print("Predictions (first 10):", y_pred[:10])
在实际的风控与检测场景中,你可以结合业务需求设置不同的阈值或决策规则(如 ROC 曲线、KS 值、Recall、Precision、Cost 等),来选择最优的分类阈值或成本敏感策略。
3. combo
的核心模块与类
combo
库大体分为以下几类模块(package):
-
combo.models.classifier_comb
: 面向分类器的结果组合SimpleClassifierAggregator
:最基本的分类器结果融合(加权平均、投票、排序等多种策略)。Stacking
/Blending
等复杂融合策略(若已在 sklearn 中也可结合使用)。
-
combo.models.anomaly_comb
: 面向异常检测的结果组合SimpleDetectorAggregator
:与分类器融合类似,针对多个异常检测算法输出的分数进行组合。- 包含如
average
,max
,min
,rank_agg
等多种聚合方法。
-
combo.models.score_comb
: 面向打分级别(score-level)的融合- 这里提供了更通用的分数聚合方法,可以将任何能产出“分数(score)”的模型/算法的结果输入进来,再输出一个新的综合分数。
-
combo.utils
: 工具函数与示例数据生成- 包括数据集生成、可视化、评估指标等辅助功能。
4. 与 PyOD / scikit-learn 的配合
-
与 PyOD 结合
如果你使用 PyOD 中的各种异常检测算法(如IForest
,LOF
,AutoEncoder
,ECOD
等),可以将这些模型的预测结果或输出分数传递给combo
中的SimpleDetectorAggregator
做进一步的融合,从而得到更稳健的异常检测效果。 -
与 scikit-learn 结合
combo
支持直接传入任何符合 sklearn API 的分类器(或回归器),在做集成或者打分融合时都可以直接当成base_estimators
传入。
另外,对于 pipeline、特征工程、模型评估等环节,combo
都可以与 scikit-learn 生态无缝衔接。
5. 典型应用场景
-
金融风控中的多模型融合
- 在信用违约预测、欺诈检测中,常常需要结合多种机器学习模型(逻辑回归、随机森林、XGBoost、深度网络等)的结果,或者结合不同版本/不同时间训练的模型,提升整体的稳定性与鲁棒性。
combo
能快速实现加权/投票/排序等多种融合策略,帮助选择最优的多模型集成方案。
-
推荐系统的多算法融合
- 在推荐场景中,可能会有召回模型、粗排模型、精排模型和多种策略。将它们的评分合并,以期达到最佳推荐效果。
-
异常检测或异常打分
- 在物联网、网络安全、业务监控等场景中,使用多种检测算法对同一批样本或交易进行评分,然后通过
combo
融合出综合评分。这样可以减小某些单一算法可能带来的偏差或误报。
- 在物联网、网络安全、业务监控等场景中,使用多种检测算法对同一批样本或交易进行评分,然后通过
6. 总结
combo
提供了多种模型(或算法)结果融合的灵活接口,尤其适合在分类、异常检测、回归、打分等不同任务中使用。- 对于需要多模型或多算法输出的业务场景(如金融风控、推荐系统、反欺诈等),融合往往能带来更稳健、更准确的结果。
combo
与 PyOD 、scikit-learn 等库兼容性好,API 风格统一,易于在已有的 ML 流程中集成。- 通过官方文档和源代码示例,可以快速上手并根据需求自定义融合策略。