sklearn–随机深林
1.集成算法概述
集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可以预测疾病的风险和病患者的易感性。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成算法的身影也随处可见,可见其效果只好,应用之广。
集成算法的目标:考率多个评估器的建模结果,汇总之后得到一个综合的结果,以此来获取比单个模型更好的回归或分类表现。
多个模型集成成为的模型叫做集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器(base estimator)。
sklearn中的集成算法模块:endemble
sklearn建模流程:
1.实例化,建立评估模型对象
2.通过模型接口训练模型
3.通过模型接口提取需要的信息
对应的代码块:
from sklearn.tree import RandomForesrClassifier #导入需要的模块
rfc=RandomForestClassifier() #实例化
rfc=rfc.fit(X_train,y_train) #用训练集数据训练模型
result=rfc.score(X_test,y_test) #导入测试集,从接口调用需要的信息
2.RandomForestClassifier
函数原型:class.sklearn.ensemble.RandomForestClassifier(n_estinators=‘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=Ture,oob_score=False,n_jobs=None,random_state=None,verbose=0,warm_start=False,class_weight=None)
随即森林是具有代表性的Bagging集成算法,它的所有基评估器都是决策树,分类树组成的森林回归器。这一节主要讲解RandomForestClassifier,随机森林分类器。
2.1重要参数
2.11控制基评估器的参数
2.12n_estimators
这是森林中树木的数量,即基评估器的数量。这个是相应的,任何模型都有决策边界,N_estimators达到一定的成都之后,随机森林的精确性往往不在上升或开始波动,并且,N_estimators越大,需要的计算量和内存也越大,训练时间也会越来越长。对于这个参数,我们是渴望在训练难度和模型之间取得平衡。
2.12random_state
random_state是一个随机种子,实在任意带有随机性的类或函数里作为参数来控制随机模式。当random_state取某一个值时,也就确定了一种规则,random_state可以用于很多函数,例如:1.训练集测试集的划分,2构建决策树,3构建随机森林
一般当random_state的取值不变时,结果是不变的,若不设置此参数,则会自动选择一种随机模式,每一次的结果也就不同。
2.13bootstrap
其含义是决定是否采用有放回的抽样方式,返回boolean类型的值,默认是True
2.14oob_score
oob_score的取值为boolean类型取值,默认为False,是判断是否用袋外样本来估计该模型大概的准确率
2.2重要属性和接口
至此,经讲完所有随机森林的重要参数,随机森林的接口于决策树完全一致因此依然有四个常用接口:apply,fit,predict,score(在本的另一篇关于决策树的博客有详解)。除此之外,还需要注意随机森林的predict_proba接口,这个接口返回每个测试样本对应的被分到每一类的标签的概率,标签有几个分类就返回几个概率,如果是二分类问题,则predict_proba返回的数值大于0.5的,被分为1,小于0.5的被分为0,传统的随机森林是利用袋装法中的规则,平均或少数服从多数来决定集成的结果,而sklearn中的随机森林是平均每个样本对应的predict_proba返回的概率,得到一个平均概率,从而决定测试样本的分类。
Bagging的另一个必要条件:
在使用袋装法时基评估器时独立的,但袋装法还有另外一个必要条件:基分类器的判断准确率至少要超过随机分类器,即是说:基分类器的判断准确率至少要超50%。
对于机器学习调参的思想:一般情况下,调参大多都是依赖于经验,但这些经验来源于:
1)正确的调参思路和方法。
2)对模型评估指标的理解。
3)对数据的感觉和经验。
4)多次的尝试。
模型在未知数据的准确率受什么因素影响呢?
在机器学习中,我们用来衡量模型在未知数据上的准确率的指标,叫做泛化误差(Genrlization error),当模型在未知数据上表现糟糕时,我们说模型的泛化成都不够,泛化误差大,模型的效果不好,泛化误差受到模型的结构影响,下图准确的描绘了泛化误差于模型复杂度的关系。我们目标就是让泛化误差最小。
具体每一个参数如何影响模型,从何入手,可以根据下表的顺序进行调参。