easy ensemble 算法和balance cascade算法

看了一下easy ensemble 算法的matlab代码,发现之前的理解有问题

这里写图片描述

从上面的伪代码可以看出,easy ensemble每次从多数类中抽样出和少数类数目差不多的样本,然后和少数类样本组合作为训练集。在这个训练集上学习一个adaboost分类器。
最后预测的时候,是使用之前学习到的所有adaboost中的弱分类器(就是每颗决策树)的预测结果向量(每个树给的结果组成一个向量)和对应的权重向量做内积,然后减去阈值,根据差的符号确定样本的类别。

之前我的理解是根据每个adaboost的预测结果做多数表决,比如10个adaboost,有6个adaboost预测为少数类,那么这个样本就是少数类。显然,easy ensemble不是这样来实现的。

balance cascade算法的算法框架如下:
这里写图片描述
这里写图片描述

可以看出balance cascade算法和easy ensemble还是挺像的,差别就在第7步和第8步。

第6步,算法训练出一个分类器,然后在第7步调整分类器 Hi 的阈值 θi 以保证分类器

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Easy EnsembleBalance Cascade是两种集成学习算法,用于解决不平衡数据集的问题。在Python中,可以使用imblearn库来实现这两种算法。 1. Easy Ensemble Easy Ensemble是一种基于Bagging的集成学习算法,它通过随机采样生成多个子集,在每个子集上训练一个分类器,最后将多个分类器的预测结果进行投票,得到最终的分类结果。与传统的Bagging不同的是,Easy Ensemble是针对不平衡数据集进行优化的,它通过对少数类样本进行重采样,使得每个子集中的少数类样本占比更高,从而提高分类器对少数类样本的识别能力。 在Python中,可以使用imblearn.ensemble模块中的EasyEnsembleClassifier类来实现Easy Ensemble算法。下面是一个简单的例子: ```python from imblearn.ensemble import EasyEnsembleClassifier from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 生成不平衡数据集 X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0, n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10) # 定义Easy Ensemble分类器 ee = EasyEnsembleClassifier(n_estimators=50) # 训练模型 ee.fit(X_train, y_train) # 预测测试集 y_pred = ee.predict(X_test) # 输出分类报告 print(classification_report(y_test, y_pred)) ``` 2. Balance Cascade Balance Cascade是一种基于Boosting的集成学习算法,它通过迭代地训练多个分类器,每次训练都将前一轮分类器错误分类的少数类样本加入训练集中,从而逐步增加少数类样本的比例,提高分类器的识别能力。 在Python中,可以使用imblearn.ensemble模块中的BalanceCascade类来实现Balance Cascade算法。下面是一个简单的例子: ```python from imblearn.ensemble import BalanceCascade from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 生成不平衡数据集 X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0, n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10) # 定义Balance Cascade分类器 bc = BalanceCascade(n_estimators=50) # 训练模型 bc.fit(X_train, y_train) # 预测测试集 y_pred = bc.predict(X_test) # 输出分类报告 print(classification_report(y_test, y_pred)) ``` 以上是两种不平衡数据集处理方法的Python实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值