1.什么是随机森林
1.1 Bagging思想
Bagging是bootstrap aggregating。思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。因为有些是不好的样本,相当于噪声,模型学入噪声后会使准确度不高。
举个例子:
假设有1000个样本,如果按照以前的思维,是直接把这1000个样本拿来训练,但现在不一样,先抽取800个样本来进行训练,假如噪声点是这800个样本以外的样本点,就很有效的避开了。重复以上操作,提高模型输出的平均值。
1.2 随机森林
Random Forest(随机森林)是一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮)
而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
每棵树的按照如下规则生成:
如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集;
如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
每棵树都尽最大程度的生长,并且没有剪枝过程。
一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
总的来说就是随机选择样本数,随机选取特征,随机选择分类器,建立多颗这样的决策树,然后通过这几课决策树来投票,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)
2. 随机森林分类效果的影响因素
森林中任意两棵树的相关性:相关性越大,错误率越大;
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。
3. 随机森林有什么优缺点
优点:
在当前的很多数据集上,相对其他算法有着很大的优势,表现良好。
它能够处理很高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)。
在训练完后,它能够给出哪些feature比较重要。
训练速度快,容易做成并行化方法(训练时树与树之间是相互独立的)。
在训练过程中,能够检测到feature间的互相影响。
对于不平衡的数据集来说,它可以平衡误差。
如果有很大一部分的特征遗失,仍可以维持准确度。
缺点:
随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
4. 随机森林如何处理缺失值?
根据随机森林创建和训练的特点,随机森林对缺失值的处理还是比较特殊的。
首先,给缺失值预设一些估计值,比如数值型特征,选择其余数据的中位数或众数作为当前的估计值
然后,根据估计的数值,建立随机森林,把所有的数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径.
判断哪组数据和缺失数据路径最相似,引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N
如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代,直到得到稳定的估计值。
其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(数据在决策树中一步一步分类的路径)乃其独特之处。
5. 什么是OOB?随机森林中OOB是如何计算的,它有什么优缺点?
OOB:
上面我们提到,构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error(out-of-bag error)。
bagging方法中Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。
袋外数据(oob)误差的计算方法如下:
对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出O个数据相应的分类
因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/O
优缺点:
这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。
6. 随机森林的过拟合问题
你已经建了一个有10000棵树的随机森林模型。在得到0.00的训练误差后,你非常高兴。但是,验证错误是34.23。到底是怎么回事?你还没有训练好你的模型吗?
答:该模型过度拟合,因此,为了避免这些情况,我们要用交叉验证来调整树的数量。
7. 代码实现
码云地址:https://gitee.com/mmhacks/data-science-master.git
"""
# -*- coding:utf-8 -*-
@Project : data-science-master
@File : RandomForestRegression.py
@Author : Arsen
@Time : 2023/3/1 11:26
"""
# 构建随机森林回归模型
from sklearn import tree
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
# 加载数据
boston_house = load_boston()
boston_feature_name = boston_house.feature_names
boston_features = boston_house.data
boston_target = boston_house.target
# 构建模型
# help(RandomForestRegressor)
rgs = RandomForestRegressor(n_estimators=15) # 随机森林模型
rgs = rgs.fit(boston_features, boston_target)
predict_1 = rgs.predict(boston_features)
# 对比模型
rgs2 = tree.DecisionTreeRegressor() # 决策树模型,比较两个模型的预测结果
rgs2.fit(boston_features, boston_target)
predict_2 = rgs2.predict(boston_features)
print("随机森林 结果:\n" + str(predict_1))
print("==="*25)
print("决策树 结果:\n" + str(predict_1))
没有合适的资源?快使用搜索试试~ 我知道了~
基于ACM模板和问题的一些代码实现.zip
共404个文件
cpp:369个
exe:8个
o:8个
需积分: 1 0 下载量 79 浏览量
2024-05-08
09:41:19
上传
评论
收藏 1.65MB ZIP 举报
温馨提示
基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现基于ACM模板和问题的一些代码实现
资源推荐
资源详情
资源评论
收起资源包目录
基于ACM模板和问题的一些代码实现.zip (404个子文件)
in.c 26B
robot.cp 1B
LRU_cache.cpp 285KB
上交计算几何模板.cpp 17KB
上交大数模板.cpp 11KB
NOTONLLY的SBT模板.cpp 10KB
上交数论.cpp 9KB
RMQ-ST算法.cpp 9KB
POJ3169Layout差分约束最短路求最大值.cpp 8KB
SBT.cpp 8KB
SBT2.cpp 8KB
POJ 1436 Horizontally Visible Segments 线段树.cpp 7KB
HDU 3642 线段树Get The Treasury.cpp 7KB
后缀数组模板.cpp 7KB
POJ百练2980大整数乘法.cpp 7KB
POJ百练2981大整数加法.cpp 7KB
八数码 (2).cpp 6KB
度限制最小生成树.cpp 6KB
混合图欧拉回路.cpp 6KB
八数码.cpp 6KB
hoj1917Peaceful Commission2-sat.cpp 6KB
HDU 2896 病毒侵袭AC自动机.cpp 6KB
hdu3308 线段树区间合并LCIS.cpp 6KB
hoj2360Redundant Paths双连通.cpp 6KB
最大流dinic.cpp 6KB
poj3468A Simple Problem with Integers.cpp 5KB
hdu 3065 病毒侵袭持续中AC自动机.cpp 5KB
poj3243解高次同余方程.cpp 5KB
poj1201 Intervals差分约束.cpp 5KB
poj2528线段树 Mayor’s posters.cpp 5KB
二维线段树.cpp 5KB
二维线段树.cpp 5KB
HH牛的模板.cpp 4KB
xx.cpp 4KB
hoj peaceful commitions-sat.cpp 4KB
hdu3397线段树区间合并 Sequence operation.cpp 4KB
poj 3225线段树区间合并Help with Intervals.cpp 4KB
左偏树 (2).cpp 4KB
C.cpp 4KB
hdu 3506 Monkey Party.cpp 4KB
poj2429已知gcd和lcm求a,b.cpp 4KB
Dijkstra+heap.cpp 4KB
hoj1966输出欧拉回路Catenyms.cpp 4KB
AC自动机模板.cpp 4KB
POJ-2337 Catenyms 欧拉回路模板.cpp 4KB
poj 1639度限制最小生成树 Picnic Planning.cpp 4KB
HDU 2874(LCA tarjan离线).cpp 4KB
hoj 2524 Allocate Dormitories 二分图的最大匹配.cpp 4KB
poj2942点双连通奇圈-二分图判断Knights of the Round Table.cpp 4KB
字符串散列.cpp 4KB
POJ 1236 Network of Schools强连通分量.cpp 4KB
hoj2021欧拉回路判断Colored Sticks.cpp 4KB
H.cpp 3KB
HDU2243 字典树考研路茫茫――单词情结.cpp 3KB
poj2983差分约束系统.cpp 3KB
hoj2025二分图最佳匹配Going Home.cpp 3KB
KM算法.cpp 3KB
后缀数组.cpp 3KB
第K短路.cpp 3KB
稳定婚姻匹配.cpp 3KB
NOTONLLY的AC自动机模板.cpp 3KB
指数型母函数.cpp 3KB
2_SAT.cpp 3KB
poj 1128 艰难的拓扑排序Frame Stacking.cpp 3KB
poj2689素数距离.cpp 3KB
HDU 2874(LCA tarjan离线)我的版本.cpp 3KB
hoj1819郁闷的出纳员.cpp 3KB
hoj1859二分图匹配Knights.cpp 3KB
高精度整数.cpp 3KB
hdu 3265 Posters矩形面积并 扫描线+线段树.cpp 3KB
LCA-tarjan.cpp 3KB
HDU4454 Stealing a Cake 第37届杭州赛区 B题三分法.cpp 3KB
poj1811整数分解加判素.cpp 3KB
HOJ2741The Busiest Man 强连通分量+缩点+传递闭包 .cpp 3KB
poj 2991线段树成段更新 Crane.cpp 3KB
hdu 2222-Keywords Search.cpp 3KB
poj1986tarjanLCA-Distance Queries - 副本 (2).cpp 3KB
poj1986tarjanLCA-Distance Queries - 副本.cpp 3KB
hoj1624二分图匹配或贪心Sorting Slides.cpp 3KB
zoj AC自动机3430 Detect the Virus.cpp 3KB
poj3641最小树形图.cpp 3KB
POJAC自动机2778 DNA Sequence.cpp 3KB
NOTONLLY的后缀数组模板.cpp 3KB
hdu2815高次同余方程.cpp 3KB
poj 1160 Post Office.cpp 3KB
HH后缀数组模板.cpp 3KB
欧拉回路.cpp 3KB
hoj2501二分加最大匹配Against Mammoths.cpp 3KB
A.cpp 3KB
B.cpp 3KB
最大流SAP.cpp 3KB
hoj1426欧拉回路door man.cpp 3KB
E.cpp 3KB
1743 Musical Theme后缀数组.cpp 3KB
hdu 3065病毒侵袭持续中.cpp 3KB
HDU 4251划分树 The Famous ICPC Team Again.cpp 3KB
hoj1119poj1151 hdu1542线段树扫描线Atlantis 矩形面积求并.cpp 3KB
poj2289二分图多重匹配+二分Jamie's Contact Groups.cpp 3KB
LCA_tarjan.cpp 3KB
最大流.cpp 3KB
共 404 条
- 1
- 2
- 3
- 4
- 5
资源评论
邵佳新
- 粉丝: 970
- 资源: 109
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功