《菜菜的机器学习sklearn课堂(1),Java⾯试常见问题随机森林
随机森林 - 概述
集成算法概述
sklearn中的集成算法
随机森林分类器 RandomForestClassifier
重要参数
控制基评估器的参数
n_estimators:基评估器的数量
【建⽴⼀⽚森林】
random_state:控制森林⽣成模式的随机性
bootstrap:控制抽样技术
重要属性
oob_score_:袋外数据测试模型准确度
estimators_:查看森林中树的状况
重要接⼝:apply、fit、predict、score
随机森林回归器 RandomForestRegressor
*机器学习中调参的基本思想
*泛化误差:衡量模型在未知数据上的准确率的指标
**实例:随机森林在乳腺癌数据上的调参
[《菜菜的机器学习sklearn课堂》笔记⽬录 + 课件](
)
[](
)
随机森林 - 概述
============================================================================ [](
)集成算法概述
集成学习(ensemble learning) 是时下⾮常流⾏的机器学习算法,它本⾝不是⼀个单独的机器学习算法,⽽是通过在数据上构建多个模型,集成所有模型的建模结果。
⼏乎所有机器学习领域都可以看到集成学习的⾝影,现实中集成学习也有很⼤作⽤:
市场营销模拟的建模
统计客户来源,保留和流失
预测疾病的风险和病患者的易感性
在现在的算法竞赛中,随机森林、梯度提升树(GBDT),Xgboost等集成算法随处可见
集成算法的⽬标:集成算法会考虑多个评估器的建模结果,汇总之后得到⼀个综合的结果,以此来获取⽐单个模型更好的回归或分类表现。
多个模型集成成为的模型叫做集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器(base estimator)。通常来说,有三类集成算法:
装袋法(Bagging)
装袋法的核⼼思想是构建多个相互独⽴的评估器,然后对其预测进⾏平均或多数表决原则来决定集成评估器的结果。装袋法的代表模型就是随机森林。
提升法(Boosting)
提升法中,基评估器是相关的,是按顺序⼀⼀构建的。其核⼼思想是结合弱评估器的⼒量⼀次次对难以评估的样本进⾏预测,从⽽构成⼀个强评估器。提升法的代表模型有Adaboost和梯度提升树。
stacking
[](
)sklearn中的集成算法
sklearn中的集成算法模块ensemble
| 类 | 类的功能 |
| — | — |
| ensemble.AdaBoostClassifier | AdaBoost分类 |
| ensemble.AdaBoostRegressor | Adaboost回归 |
| ensemble.BaggingClassifier | 装袋分类器 |
| ensemble.BaggingRegressor | 装袋回归器 |
| ensemble.ExtraTreesClassifier | Extra-trees分类(超树,极端随机树) |
| ensemble.ExtraTreesRegressor | Extra-trees回归 |
| ensemble.GradientBoostingClassifier | 梯度提升分类 |
| ensemble.GradientBoostingRegressor | 梯度提升回归 |
| ensemble.IsolationForest | 隔离森林 |
| ensemble.RandomForestClassifier | 随机森林分类 |
| ensemble.RandomForestRegressor | 随机森林回归 |
| ensemble.RandomTreesEmbedding | 完全随机树的集成 |
| ensemble.VotingClassifier | ⽤于不合适估算器的软投票/多数规则分类器 |
集成算法中有⼀半以上都是树的集成模型,可见决策树在集成中必定效果很好。
我们会以随机森林为例,慢慢揭开集成算法的神秘⾯纱。
[复习:sklearn中的决策树](
)
[](
)随机森林分类器 RandomForestClassifier
========================================================================================= ========
semble.RandomForestClassifier (
n_estimators=’10’,
criterion=’gini’,
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.0,
max_features=’auto’,
max_leaf_nodes=None,
min_impurity_decrease=0.0,
min_impurity_split=None,
bootstrap=True,
oob_score=False,
n_jobs=None,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None
)
随机森林是⾮常具有代表性的Bagging集成算法,它的所有基评估器都是决策树;
分类树组成的森林就叫做随机森林分类器,回归树所集成的森林就叫做随机森林回归器。
这⼀节主要学习 RandomForestClassifier,随机森林分类器。
[](
)重要参数
[](
)控制基评估器的参数
| 参数 | 含义 |
| — | — |
| criterion | 不纯度的衡量指标,有基尼系数和信息熵两种选择 |
| max_depth | 树的最⼤深度,超过最⼤深度的树枝都会被剪掉 |
| min_samples_leaf | ⼀个节点在分枝后的每个⼦节点都必须包含⾄少min_samples_leaf个训练样本,否则分枝就不会发⽣ |
| min_samples_split | ⼀个节点必须要包含⾄少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发⽣ |
| max_features | max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃,默认值为总特征个数开平⽅取整 |
| min_impurity_decrease | 限制信息增益的⼤⼩,信息增益⼩于设定数值的分枝不会发⽣ |
单个决策树的准确率越⾼,随机森林的准确率也会越⾼,因为装袋法是依赖于平均值或者少数服从多数原则来决定集成的结果的。
[](
)n_estimators:基评估器的数量
n_estimators 是森林中树⽊的数量,即基评估器的数量。
⼀般来说,n_estimators越⼤,模型的效果往往越好。
但是任何模型都有决策边界,n_estimators达到⼀定的程度之后,随机森林的精确性往往不再上升或开始波动;并且n_estimators越⼤,需要的计算量和内存也越⼤,训练的时间也会越来越长。对于这个参数,我们是渴望在训练难度和模型效果之间取得平衡。
n_estimators的默认值在现有版本的sklearn中是10,但是在即将更新的0.22版本中,这个默认值会被修正为100。这个修正显⽰出了使⽤者的调参倾向——要更⼤的n_estimators。
[](
)【建⽴⼀⽚森林】
树模型的优点是简单易懂,可视化之后的树⼈⼈都能够看懂,可惜随机森林⽆法被可视化。所以为了更加直观地体会随机森林的效果,我们进⾏⼀个随机森林和单个决策树效益的对⽐。我们依然使⽤红酒数据集。
1、导⼊我们需要的包
%matplotlib inline
import DecisionTreeClassifier
semble import RandomForestClassifier
from sklearn.datasets import load_wine
2. 导⼊需要的数据集
wine = load_wine()
java中split的用法
wine.data.shape #178⾏,13个标签
wine.target
3、复习:sklearn建模的基本流程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。