首页 > 编程知识 正文

sklearn随机森林参数,matlab随机森林预测算法

时间:2023-05-05 12:20:27 阅读:175602 作者:3611

随机森林算法的学习

最近运行kaggle时,发现随机森林算法在分类问题上非常有效,往往比svm、log回归、knn等算法效果好得多。 所以我想考虑一下这个算法的原理。

学习随机森林首先简单介绍集成学习方法和决策树算法。 以下对这两种方法进行简要介绍(具体学习推荐见统计学习方法的第5章和第8章)。

Bagging和Boosting的概念不同

本部分主要从http://www.cn blogs.com/liuwu 265/p/4690486.html学习

随机林属于可接受学习的背景算法。 在集成学习中,主要分为bagging算法和boosting算法。 首先,我们来看看这两种方法的特点和区别。

袋装法)。

bagging的算法流程如下。

采用Bootstraping方法从原始样本集中随机提取n个训练样本,共提取k次,得到k个训练集。 (k个训练组可以彼此独立,并且元素可以重叠)

针对k个训练集,训练k个模型。 这k个模型可以由具体问题决定。 例如决策树、knn等。

关于分类问题:关于投票的分类结果回归问题,以k个模型的预测结果的平均作为最终预测结果。 (所有模型的重要性都是一样的)

Boosting (提拉法) ) ) )。

boosting的算法流程如下。

对训练集中的每个样本制作权重wi,表示每个样本的关注度。 如果某个样本被错误分类的概率较高,则需要加大对该样本的权重。

在进行迭代的过程中,每个步骤的迭代是弱分类器。 我们需要用某种战略将其组合起来作为最终模型。 例如,AdaBoost对各弱识别器赋予权重,其线性组合是最最终的识别器。 误差越小弱分类器权重越大)

Bagging,Boosting的主要区别

在样品选择上: Bagging采用Bootstrap随机返回样品; Boosting各回合的训练集不变。 改变的只是每个样本的权重。

样本权重: Bagging使用均匀采样,每个样本权重相等; Boosting根据误码率调整样本权重,误码率越大的样本权重越大。

预测函数: Bagging所有预测函数的权重相等; 在Boosting中,误差越小的预测函数权重越大。

并行计算: Bagging的各预测函数可以并行生成; Boosting中的每个预测函数都必须按顺序迭代生成。

决策树和这些算法框架组合得到的新算法如下所示。

1 ) Bagging决策树=随机森林

2 ) AdaBoost决策树=提升树

3 )梯度boosting决策树=GBDT

决策树

常用的决策树算法有ID3、C4.5、CART三种。 三种算法的模型构建思想都很相似,但采用了不同的指标。 决策树模型的构建过程大致如下。

ID3,C4.5决策树的生成

输入:训练集d、特征集a、阈值eps输出:决策树t

d中的所有样本属于同一类别Ck时,t为单节点树,将类别Ck作为该节点的类别标记,返回t

如果a不是空集,也就是不将特征作为分割的依据的情况下,t是单节点树,将d中实例数最大的类Ck作为该节点的类标签,返回t

否则,计算a中各特征对d的信息增益(ID3 ) /信息增益比(C4.5 ),选择信息增益最大的特征Ag

如果Ag的信息增益(比)不足阈值eps,则将t作为单节点树,将d中实例数最大的类Ck作为该节点的类标志,返回t

否则,根据特征Ag将d分割为若干个非空部分集合Di,在Di中以实例数最大的类为标签构建子节点,由节点及其子节点构成树t,并返回t

对于第I个子节点,以Di为训练集,以A-{Ag}为特征集递归调用1 ̄5,得到子树Ti,返回Ti

生成CART决策树

这里只简单介绍CART、ID3和C4.5的区别。

CART树可以是二叉树,ID3和C4.5大概也可以是树

当生成子树时,CART选择一个特征的一个可取值作为分割点来生成两个子树

选择特征和分割点的依据是基尼指数,选择基尼指数最小的特征和分割点生成子树

决策树剪枝

决策树剪枝主要用于预防过拟合,过程不详细介绍。

主要思想是从叶节点追溯,尝试对某节点进行剪枝,比较剪枝前后决策树的损失函数值。 最后,通过动态规划(树形dp,acmer应该知道),可以得到全局最优的剪枝方案。

随机森林(Random Forests )。

随机森林是一种重要的基于Bagging的集成学习方法,可用于分类、回归等问题。

森林有很多优点:

具有非常高的精度

随机性的引入使得随机森林难以过度拟合

由于随机性的引入,随机森林抗干扰能力强

无需选择特征即可处理高维数据

既可以处理离散型数据,也可以处理连续型数据,无需对数据集进行归一化

训练速度快,

可以得到变量重要性排序

容易实现并行化

随机森林的缺点:

当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大

随机森林模型还有许多不好解释的地方,有点算个黑盒模型

与上面介绍的Bagging过程相似,随机森林的构建过程大致如下:

从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集

对于n_tree个训练集,我们分别训练n_tree个决策树模型

对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂

每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝

将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

使用案例

from sklearn.ensemble import RandomForestClassifier

trainSet,trainLabel,testSet,testLabel = getFuturesDataSet(npyPath,0.67)

model = RandomForestClassifier(bootstrap=True,random_state=0)

model.fit(trainSet,trainLabel)

#降维

# x_pca_test = pca.fit_transform(x_test)

result = model.predict(np.array(testSet))

相关文档原文:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

————————————————

原文链接:https://blog.csdn.net/qq547276542/article/details/78304454

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。