提高 分类器 准确率的几种方法总结(装袋,提升,随机森林)

一、装袋

对样本空间 D 进行 放回抽样,得到样本空间的一个子集 Di,由Di得到一个 分类器Mi。
不断的重复上述过程,就可以得到一系列分类器 M1,M2,M3....Mi ,在分类时用这些分类器进行投票来决定分类。
在R语言中装袋的函数存在于ipred (Improved Predictors)package中。

二、提升和AdaBoost

对长度为d(样本数为d)的训练样本空间 D 的每一个元组(每个样本)分配一个初始的权限 1/d, 然后开始一个迭代的过程:
根据元组的权限来作为抽取概率进行放回抽样,抽样出的样本的长度也必须为 Di,根据 Di 生成一个分类器 Mi。
使用 Mi 对 D进行分类,找出分类错误的元组,把这些元组的权重累加,得到该分类器的错误率 Ei
如果Ei大于0.5,舍弃 Mi。
如果Ei小于0.5,则调整那些被正确分类的元组,将其权重 乘以 Ei/(1-Ei),由于Ei小于0.5,所以正确分类的元组实际上权重被降低了。
从上面的过程得到 i 个分类器,在使用的过程中每个分类器有一个投票的权重,其值为 log2((1-Ei)/Ei )。
AdaBoost会给每个样本定一个权值,这是很少见的,在R中实现AdaBoost的package叫“boost”。

三、随机森林

在装袋的基础上,在样本的维度上也采用随机选择的技术(或者随机选择的维度线性组合),得到众多的分类器,仿佛一片森林。
R中有“randomForest” package实现了这个算法。

四、样本不平衡时的解决办法

当样本中不同类别的元组数量差距很大时(比如类别A的元组有100个,而类别B的元组有10000个),可以采用一下方法提高分类准确度:

过抽样:在采样的时候把稀有类别的元组多复制几份放到样本中去
欠抽样:在采样的时候把多数类别的元组随机从样本中移除
阈值移动:分类器不再返回一个具体的类别,而是返回一个[-1,1]的数字,设定一个阈值X,当返回的数字大于X时,相当于分在了A类,反之分在了B类。




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
随机森林是一种集成学习算法,它通过构建多个决策树来进行分类或回归。交叉验证是一种评估模型性能的方法,可以帮助我们选择最佳的模型参数。下面是一个使用随机森林分类器进行交叉验证的代码示例: ```python from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_val_score # 创建随机森林分类器对象 rf_classifier = RandomForestClassifier(n_estimators=100) # 加载数据集和标签 X = ... # 特征数据 y = ... # 标签数据 # 进行交叉验证 scores = cross_val_score(rf_classifier, X, y, cv=5) # cv参数表示将数据集分成5份进行交叉验证 # 打印每次交叉验证的准确率 for i, score in enumerate(scores): print(f"Fold {i+1}: {score}") # 打印平均准确率 print("Average Accuracy:", scores.mean()) ``` 在上述代码,我们首先导入了`RandomForestClassifier`类和`cross_val_score`函数。然后,我们创建了一个随机森林分类器对象`rf_classifier`,并设置了一些参数,例如`n_estimators`表示决策树的数量。 接下来,我们加载了特征数据`X`和标签数据`y`。你需要根据你的实际情况将数据加载到这里。 然后,我们使用`cross_val_score`函数进行交叉验证。该函数接受分类器对象、特征数据、标签数据和`cv`参数作为输入。`cv`参数表示将数据集分成几份进行交叉验证,这里我们设置为5份。 最后,我们打印了每次交叉验证的准确率,并计算了平均准确率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱知菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值