sklearn随机森林--参数详解

sklearn-forests of randomized trees

学习器

  • RandomForest: 采取自主采样法构造多个基学习器,并且在学习基学习器时,不是使用全部的特征来选择最优切分点,而是先随机选取一个特征子集随后在特征子集里挑选最优特征进行切分;这种做法会使得各个基学习器的偏差略微提升,但在整体上降低了集成模型的方差,所以会得到整体上不错的模型
    • RandomForestClassifier
    • RandomForestRegressor

Notes:

  • 不同于原始的模型实现(让各个基学习器对样本的分类进行投票),sklearn里随机森林的实现是通过将各个基学习器的预测概率值取平均来得到最终分类
  • 随机森林的行采样(bagging)和列采样(feature bagging)都是为了减小模型之间的相关性使基学习器变得不同从而减小集成模型的方差

  • Extra-Trees(extremely randomized trees):相较于rf进一步增强了随机性,rf是对各个基学习器随机挑选了部分特征来做维特征子集从中挑选最佳的特征切分,而Extra-Trees更进一步,在特征子集里挑选最佳特征时不是选择最有区分度的特征值,而是随机选择这一划分的阈值(该阈值在子特征集里的特征对应的采样后的样本取值范围里随机选取),而不同的随机阈值下的特征中表现最佳的作为划分特征,这样其实增强了随机性,更进一步整大了基学习器的偏差但降低了整体的方差

    • ExtraTreesClassifier
    • ExtraTreesRegressor

调参

  • 最重要的两个参数
    • n_estimators:森林中树的数量,初始越多越好,但是会增加训练时间,到达一定数量后模型的表现不会再有显著的提升
    • max_features:各个基学习器进行切分时随机挑选的特征子集中的特征数目,数目越小模型整体的方差会越小,但是单模型的偏差也会上升,经验性的设置回归问题的max_features为整体特征数目,而分类问题则设为整体特征数目开方的结果
  • 其他参数
    • max_depth:树的最大深度,经验性的设置为None(即不设限,完全生长)
    • min_samples_split,节点最小分割的样本数,表示当前树节点还可以被进一步切割的含有的最少样本数;经验性的设置为1,原因同上
    • bootstrap,rf里默认是True也就是采取自助采样,而Extra-Trees则是默认关闭的,是用整个数据集的样本,当bootstrap开启时,同样可以设置oob_score为True进行包外估计测试模型的泛化能力
    • n_jobs,并行化,可以在机器的多个核上并行的构造树以及计算预测值,不过受限于通信成本,可能效率并不会说分为k个线程就得到k倍的提升,不过整体而言相对需要构造大量的树或者构建一棵复杂的树而言还是高效的
    • criterion:切分策略:gini或者entropy,默认是gini,与树相关
    • min_impurity_split–>min_impurity_decrease:用来进行早停止的参数,判断树是否进一步分支,原先是比较不纯度是否仍高于某一阈值,0.19后是判断不纯度的降低是否超过某一阈值
    • warm_start:若设为True则可以再次使用训练好的模型并向其中添加更多的基学习器
    • class_weight:设置数据集中不同类别样本的权重,默认为None,也就是所有类别的样本权重均为1,数据类型为字典或者字典列表(多类别)
      • balanced:根据数据集中的类别的占比来按照比例进行权重设置n_samples/(n_classes*np.bincount(y))
      • balanced_subsamples:类似balanced,不过权重是根据自助采样后的样本来计算

方法

  • predict(X):返回输入样本的预测类别,返回类别为各个树预测概率均值的最大值
  • predict_log_proba(X):
  • predict_proba(X):返回输入样本X属于某一类别的概率,通过计算随机森林中各树对于输入样本的平均预测概率得到,每棵树输出的概率由叶节点中类别的占比得到
  • score(X,y):返回预测的平均准确率

特征选择

特征重要性评估:一棵树中的特征的排序(比如深度)可以用来作为特征相对重要性的一个评估,居于树顶端的特征相对而言对于最终样本的划分贡献最大(经过该特征划分所涉及的样本比重最大),这样可以通过对比各个特征所划分的样本比重的一个期望值来评估特征的相对重要性,而在随机森林中,通过对于不同树的特征的期望取一个平均可以减小评估结果的方差,以供特征选择;在sklearn中这些评估最后被保存在训练好的模型的参数featureimportances里,是各个特征的重要性值经过归一化的结果,越高代表特征越匹配预测函数

Notes:

  • 此外sklearn还有一种RandomTreesEmbedding的实现,不是很清楚有何特殊用途
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 随机森林是一种基于集成学习的分类和回归算法,它通过利用多个决策树的预测结果进行集成来提高模型的准确性和稳定性。基于Python中的scikit-learn库,我们可以很方便地使用随机森林算法。 具体步骤如下: 1. 数据准备:首先,我们需要将数据集划分为训练集和测试集。同时,我们也需要将特征属性和目标属性进行分离。 2. 模型训练:使用sklearn库中的RandomForestClassifier(分类问题)或者RandomForestRegressor(回归问题)类来构建随机森林模型。这些类提供了一系列的超参数(如树的数量、最大深度等),你可以根据需要进行设置。 3. 特征选择:随机森林可以根据特征的重要性进行特征选择。通过调用模型的feature_importances_属性,我们可以获得每个特征的重要性分数。这样可以帮助我们了解哪些特征对预测结果的贡献更大。 4. 模型评估:使用测试集对训练好的模型进行评估。可以使用准确率、精确率、召回率等指标来评估分类问题的模型,使用均方误差(MSE)、决定系数(R方)等指标来评估回归问题的模型。 5. 模型优化:根据评估结果,我们可以调整模型的超参数来进一步提高模型的性能。可以尝试不同的树的数量、最大深度、节点分裂准则等来找到最优的参数组合。 总的来说,随机森林是一种强大而灵活的机器学习算法,可以广泛应用于各种分类和回归问题中。通过结合多个决策树的预测结果,它可以降低过拟合的风险,并且能够处理大量的特征和样本。通过使用Python中的scikit-learn库,我们可以很方便地构建和应用随机森林模型,这是一种非常值得学习和使用的算法。 ### 回答2: 随机森林(Random Forest)是一种机器学习算法,是由多个决策树组成的集成模型。它是基于Python的scikit-learn库实现的。 随机森林通过利用决策树的集成方法来提高模型的准确性和稳定性。它首先会从给定的数据集中随机选择部分数据进行有放回抽样,建立一系列决策树模型。在构建每一个决策树时,它会随机选择特征子集进行决策树的训练。这样做的目的是为了减少过拟合,并且提高模型的泛化能力。 在随机森林中,每个决策树都会按照划分特征的重要性(例如信息增益)来选择最佳的划分点,使得每个树都能尽可能地减小预测误差。而在预测时,每个树都会独立地给出预测结果,最后通过投票或平均来确定最终的预测结果。 随机森林具有以下优点: 1. 随机森林适用于各种类型的数据,可以处理离散型和连续型特征,可以用于分类和回归问题。 2. 随机森林具有较好的准确性和泛化能力,能够有效地处理大规模的数据集。 3. 随机森林能够评估特征的重要性,可以通过特征选择来提高建模的效果。 4. 随机森林相对于单独的决策树更不容易过拟合,具有更高的稳定性和抗噪能力。 在Python的scikit-learn库中,使用随机森林的步骤如下: 1. 导入随机森林模块:from sklearn.ensemble import RandomForestClassifier(或RandomForestRegressor) 2. 创建随机森林对象:rf = RandomForestClassifier(n_estimators=10, max_depth=5) - n_estimators指定决策树的数量 - max_depth指定每个决策树的最大深度 3. 训练模型:rf.fit(X_train, y_train) 4. 预测分类结果:y_pred = rf.predict(X_test) 5. 评估模型的准确率:accuracy = rf.score(X_test, y_test) 6. 查看特征的重要性:importances = rf.feature_importances_ 总而言之,基于Python的scikit-learn库实现的随机森林是一种强大的机器学习算法,能够有效地处理各种类型的数据,并且具有较好的准确性和泛化能力。通过随机选择特征子集和有放回抽样,随机森林能够降低过拟合的风险,并且能够评估特征的重要性。 ### 回答3: 随机森林(Random Forest)是一种基于决策树的集成学习方法,在python中可以使用scikit-learn库中的sklearn.ensemble模块来实现。 随机森林的基本原理是通过构建多个决策树,并对其结果进行综合来做出决策。其中每个决策树的构建过程都是随机的,这包括随机选择特征和随机选择样本。这样可以降低过拟合的风险,并提高模型的鲁棒性和泛化能力。 在使用sklearn.ensemble模块中的RandomForestClassifier和RandomForestRegressor类时,我们可以通过一些参数随机森林模型进行调参。其中一些重要的参数包括: 1. n_estimators:决策树的个数。一般来说,n_estimators越大,模型的性能越好,但同时计算时间也会增加。 2. max_features:每个决策树构建时随机选择的特征数。一般建议将其设置为总特征数的平方根。 3. max_depth:每个决策树的最大深度。通常情况下,max_depth设置为None表示不限制决策树的深度,但这容易导致过拟合。 在使用随机森林模型时,我们可以通过fit()方法对模型进行训练,然后可以使用predict()方法对新数据进行预测。此外,还可以使用score()方法来评估模型的准确性。 总之,随机森林是一种强大的机器学习方法,它可以有效处理高维、复杂的数据,并在一定程度上避免了过拟合问题。使用sklearn中的RandomForestClassifier和RandomForestRegressor模块,我们可以方便地构建和调整随机森林模型,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值