sklearn--决策树和基于决策树的集成模型

一.决策树

决策树通常以选择属性的方式不一样分为id3(信息增益),c4.5(信息增益率),CART(基尼系数),只能进行线性的分割,是一种贪婪的算法,其中sklearn中的决策树分为回归树和分类树两种,默认的是CART的决策树,下面介绍CART决策树python

分支条件:二分类问题(只用来构建二叉树)算法

分支方法:对于连续特征的状况:比较阈值,高于某个阈值就属于某一类,低于某个阈值属于另外一类。对于离散特征:抽取子特征,好比颜值这个特征,有帅、丑、中等三个水平,能够先分为帅和不帅的,不帅的里面再分红丑和中等的。dom

得分函数(y):分类树基尼系数的最小值得特征或是最终的叶节点分类结果,对于回归树取得是均值。函数

损失函数:其实这里的损失函数,就是分类的准则,也就是求最优化的准则学习

对于分类树(目标变量为离散变量):同一层全部分支假设函数的基尼系数的平均。优化

对于回归树(目标变量为连续变量):同一层全部分支假设函数的平方差损失spa

在二维空间(只有一个特征)其实对于回归树来讲就是一个经过创建一个分段的平行线函数(一块接近的数据用他们的均值来代替)来逼近最后的目标值,而想经过这种方式来要获得要设置树的深度,可是书的深度很深的话就会使得模型有过拟合的风险.net

from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import DecisionTreeClassifier
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1 = DecisionTreeClassifierr(max_depth=5)
regr_2.fit(X, y)
regr_1.fit(X, y)

 二.随机森林

咱们经过随机的抽取部分样本,抽取部分的特征,来训练多颗决策树,而后经过投票表决的方式来决定最终的分类(这是分类问题,如果回归问题则是取最后结果的均值)在森林中每一棵树都有平等的发言权,这种随机深林是基于bagging的集成学习的方法,极大可能的过滤掉特征的偏差和样本可能存在的偏差.这里咱们要注意的是:若是每一个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的,随机森林分类效果(错误率)与两个因素有关:rest

  • 森林中任意两棵树的相关性:相关性越大,错误率越大;
  • 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。

 

  减少特征选择个数m,树的相关性和分类能力也会相应的下降;增大m,二者也会随之增大。因此关键问题是如何选择最优的m(或者是范围),这也是随机森林惟一的一个参数。blog

咱们能够经过oob来衡量随机森林的好坏

 

from sklearn.ensemble import RandomForestClassifier
rf0 = RandomForestClassifier(oob_score=True, random_state=10)
rf0.fit(X,y)
print rf0.oob_score_

 

 三.adaboost+决策树

自适应boost,思想是每一次选取偏差最小的模型,而后将错误的值权值加剧,输入给下一个模型,若是错误率越高其相应的模型权值就会变低

#设定弱分类器CART
weakClassifier=DecisionTreeClassifier(max_depth=1)

#构建模型。
clf=AdaBoostClassifier(base_estimator=weakClassifier,algorithm='SAMME',n_estimators=300,learning_rate=0.8)
clf.fit(X, y)

 四.GBDT(梯度提高决策树)

https://blog.csdn.net/qq_22238533/article/details/79199605 gbdt的一些讲解,

 

五.XGBOOST

相关文章
相关标签/搜索