平衡随机森林分类器(BRF):解决数据不平衡的集成学习方法

机器学习算法大数据

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍: 平衡随机森林分类器(BRF):解决数据不平衡的集成学习方法 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。

✨ 论文信息 ✨

picture.image

从文献的内容来看,BRF(平衡随机森林分类器) 主要用于解决数据类别不平衡问题 。在该研究中,数据集中少数类别(如NCDIA毒性药物)样本量较少,导致分类模型可能会偏向多数类,进而影响少数类的预测性能。为了解决这个问题,研究使用了BRF模型。BRF通过对每棵决策树采用一种修改过的采样技术,首先从少数类中抽取样本,然后再从多数类中随机等量抽取样本,确保每棵树都能在平衡的数据集上进行训练。最终,所有的决策树一起工作,从而提高了少数类的识别率,优化了模型对类别不平衡数据的处理能力。

相对于一般先划分训练集和测试集,然后对训练集进行过采样或欠采样后的数据再纳入模型的传统方法,BRF(平衡随机森林分类器)提供了一种更加简便且高效的解决方案。

✨ 代码实现 ✨

  
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.rcParams['font.family'] = 'Times New Roman'  
plt.rcParams['axes.unicode_minus'] = False  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
  
path = r"2025-4-14公众号Python机器学习AI.xlsx"  
df = pd.read_excel(path)  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['Electrical_cardioversion'], axis=1)    
y = df['Electrical_cardioversion']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['Electrical_cardioversion']   
)

将一个不平衡数据集划分为训练集和测试集,并确保划分后每个子集的目标变量类别分布与原始数据集一致。其中,stratify=df['Electrical_cardioversion'] 参数确保在划分数据时,训练集和测试集中的类别比例与原始数据集相同,有助于避免数据划分过程中类别不平衡问题的加剧

  
from imblearn.ensemble import BalancedRandomForestClassifier  
  
# 创建平衡随机森林分类器  
brf = BalancedRandomForestClassifier(  
    n_estimators=100,           # 森林中的树的数量,通常设置为较高的值,100棵树通常是一个常见的选择  
    random_state=0,             # 随机种子,确保每次运行的结果可复现  
    sampling_strategy="all",    # 采样策略。'all' 表示对少数类别进行过采样,使其与多数类别的样本数量一致  
    replacement=True,           # 在过采样时是否允许重复采样样本,True表示允许  
    bootstrap=False,            # 是否采用自助采样法。False表示不使用自助采样法,数据集中的样本不重复用于训练  
)  
  
# 训练模型  
brf.fit(X_train, y_train)

创建训练一个平衡随机森林分类器(BRF),通过集成采样策略处理数据不平衡问题。在这里,没有单独对训练集进行过采样或欠采样,而是直接将训练集传入模型,模型内部使用集成的采样策略(如对少数类别进行过采样)来解决数据不平衡问题

sampling_strategy 参数控制平衡样本的策略

  • 'all':对所有少数类别进行过采样,使其与多数类别样本数量一致,常用于完全平衡数据集
  • 'auto':默认设置,自动选择合适的采样策略,通常对少数类进行过采样
  • float:指定少数类样本的采样比例,如 0.5 表示少数类样本为多数类的一半
  • dict:为每个类别指定目标样本数或采样比例,提供更细粒度的控制
  • 'not majority':通过过采样少数类并欠采样多数类,使所有类别样本数量相同,适用于极为不平衡的数据
  
plot\_confusion\_matrix(brf, X\_test, y\_test, 'BalancedRandomForestClassifier', pdf\_filename= "BalancedRandomForestClassifier.pdf")

picture.image

从测试集混淆矩阵的结果来看,类别0(NO)的样本数是类别1(YES)的两倍,且BRF模型在处理这种类别不平衡的数据时表现得相对不错。具体来说

  • 对于类别0(NO),模型准确识别了大部分样本,其中84.6%的预测结果是正确的
  • 对于类别1(YES),虽然样本较少,但模型也能有效地识别它,80.0%的正确率

虽然类别0占主导地位,但由于BRF模型通过平衡采样策略来处理数据不平衡,能够在一定程度上提高对少数类(类别1)的识别能力。因此,即便数据不平衡,BRF依然能够提供相对稳定且较为准确的预测

  
from sklearn.ensemble import RandomForestClassifier  
  
# 创建默认的随机森林模型  
rf_model = RandomForestClassifier(random_state=42)  
  
# 训练模型  
rf_model.fit(X_train, y_train)

创建训练一个默认的随机森林分类器,该模型用于与平衡随机森林(BRF)模型进行对比,以评估在处理类别不平衡数据时,标准随机森林和BRF的表现差异

  
plot\_confusion\_matrix(rf\_model, X\_test, y\_test, 'RF', pdf\_filename= "RF.pdf")

picture.image

从这个随机森林(RF)模型的混淆矩阵来看,模型在类别0(NO)的识别上表现得非常好,92.3%的准确率,但在类别1(YES)的识别上表现较差,56.0%的正确率,且有14个样本被错误分类为类别0(NO)

与平衡随机森林(BRF)的结果相比,RF模型虽然对多数类(NO)的识别非常准确,但它对少数类(YES)的预测能力较弱。具体来说,BRF模型在少数类(YES)上的准确率为80.0%,而RF模型只有44.0%。这表明,在类别不平衡的情况下,BRF通过集成的采样策略,能够更好地处理少数类的样本,而标准的随机森林由于没有这种处理,倾向于忽视少数类,导致较差的预测效果

值得注意的是,以上两个模型的性能并没有进行过调参,读者可以通过调整超参数(如树的数量、深度等)来进一步优化模型的表现,提升分类精度,尤其是在处理类别不平衡问题时,最后同样的可以对我们训练的BRF模型进行shap模型解释

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 购买介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

往期推荐

Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现

期刊配图:相关系数+统计显著性的饼图可视化 美无需多言

期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响

机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学

期刊配图:一区SCI常用数据缺失率展示图可视化

Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析

因果推断:注册行为对后续消费影响的因果推断分析案例

nature communications:基于Light GBM与随机森林结合的多模型特征选择方法

因果推断与机器学习结合:探索酒店预订取消的影响因素

期刊配图:回归模型性能与数据分布(核密度)可视化

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论