ps怎么做网站横幅广告,台州市网站制作,网站根据城市做二级目录,做课件需要的纯音乐网站目录
#x1f354; 提升树
#x1f354; 梯度提升树
#x1f354; 举例介绍
3.1 初始化弱学习器#xff08;CART树#xff09;
3.2 构建第一个弱学习器#xff08;CART树#xff09;
3.3 构建第二个弱学习器#xff08;CART树#xff09;
3.4 构建第三个弱学习…
目录 提升树 梯度提升树 举例介绍
3.1 初始化弱学习器CART树
3.2 构建第一个弱学习器CART树
3.3 构建第二个弱学习器CART树
3.4 构建第三个弱学习器CART树
3.5 最终强学习器 GBDT算法 泰坦尼克号案例实战
5.1 导包并选取特征
5.2 切分数据及特征处理
5.3 三种分类器训练及预测
5.4 三种分类器性能评估 集成算法多样性
6.1 数据样本扰动
6.2 输入属性的扰动
6.3 算法参数的扰动 小结 学习目标 掌握提升树的算法原理思想 了解梯度提升树的原理思想 提升树
梯度提升树Grandient Boosting是提升树Boosting Tree的一种改进算法所以在讲梯度提升树之前先来说一下提升树。
先来个通俗理解假如有个人30岁我们首先用20岁去拟合发现损失有10岁这时我们用6岁去拟合剩下的损失发现差距还有4岁第三轮我们用3岁拟合剩下的差距差距就只有一岁了。如果我们的迭代轮数还没有完可以继续迭代下面每一轮迭代拟合的岁数误差都会减小。最后将每次拟合的岁数加起来便是模型输出的结果。 上面提到的残差是什么呢
假设: 我们前一轮迭代得到的强学习器是ft-1(x) 损失函数是L(y,ft−1(x)) 本轮迭代的目标是找到一个弱学习器ht(x) 让本轮的损失最小化: L(y, ft(x))L(y, ft−1(x)) ht(x))
当采用平方损失函数时: 则: 令R y - ft-1(x)则: 此处R 是当前模型拟合数据的残差residual
所以对于提升树来说只需要简单地拟合当前模型的残差。 梯度提升树
GBDT全称为Gradient Boosting Decision Tree即梯度提升决策树梯度提升树是一种迭代的决策树算法也被称作MARTMultiple Additive Regression Tree。它通过将多个决策树弱学习器的结果进行累加来得到最终的预测输出是集成学习算法的一种具体属于Boosting类型。
梯度提升树不再使用拟合残差而是利用最速下降的近似方法利用损失函数的负梯度作为提升树算法中的残差近似值。
假设: 损失函数仍然为平方损失, 则每个样本要拟合的负梯度为: 此时, 我们发现 GBDT 拟合的负梯度就是残差或者说对于回归问题拟合的目标值就是残差。
如果我们的 GBDT 进行的是分类问题则损失函数变为 logloss此时拟合的目标值就是该损失函数的负梯度值。 举例介绍 3.1 初始化弱学习器CART树
我们通过计算当模型预测值为何值时会使得第一个基学习器的平方误差最小即求损失函数对 f(xi) 的导数并令导数为0. 3.2 构建第一个弱学习器CART树
由于我们拟合的是样本的负梯度即 由此得到数据表如下 上表中平方损失计算过程说明以切分点1.5为例 切分点1.5 将数据集分成两份 [5.56],[5.56 5.7 5.91 6.4 6.8 7.05 8.9 8.7 9. 9.05] 第一份的平均值为5.56 第二份数据的平均值为5.75.916.46.87.058.98.799.05/9 7.5011 由于是回归树每份数据的平均值即为预测值则可以计算误差第一份数据的误差为0第二份数据的平方误差为 : $(5.70-7.5011)^2(5.91-7.5011)^2...(9.05-7.5011)^2 15.72308$ 以 6.5 作为切分点损失最小构建决策树如下 3.3 构建第二个弱学习器CART树 以 3.5 作为切分点损失最小构建决策树如下 3.4 构建第三个弱学习器CART树 以 6.5 作为切分点损失最小构建决策树如下 3.5 最终强学习器 GBDT算法
1.初始化弱学习器 2.对$m1,2,\cdots,M$有
a对每个样本$i1,2,\cdots,N$计算负梯度即残差 b将上步得到的残差作为样本新的真实值并将数据$(x_i,r{im}), i1,2,..N$作为下棵树的训练数据得到一颗新的回归树$f{m} (x)$其对应的叶子节点区域为$R_{jm}, j 1,2,\cdots,J$。其中J为回归树t的叶子节点的个数。
c对叶子区域$j1,2,\cdots,J$计算最佳拟合值 d更新强学习器 3得到最终学习器 泰坦尼克号案例实战
该案例是在随机森林的基础上修改的可以对比讲解。
数据地址
http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
5.1 导包并选取特征
1.数据导入# 导入数据
import pandas as pd
# 利用pandas的read.csv模块从互联网中收集泰坦尼克号数据集
titanicpd.read_csv(data/titanic.csv)
titanic.info() #查看信息
2.人工选择特征pclass,age,sexXtitanic[[pclass,age,sex]]
ytitanic[survived]
3.特征工程# 数据的填补
X[age].fillna(X[age].mean(),inplaceTrue)
5.2 切分数据及特征处理
数据的切分from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test train_test_split(X,y,test_size0.25,random_state22)
将数据转化为特征向量from sklearn.feature_extraction import DictVectorizer
vecDictVectorizer(sparseFalse)
X_trainvec.fit_transform(X_train.to_dict(orientrecords))
X_testvec.transform(X_test.to_dict(orientrecords))
5.3 三种分类器训练及预测
4.使用单一的决策树进行模型的训练及预测分析from sklearn.tree import DecisionTreeClassifier
dtcDecisionTreeClassifier()
dtc.fit(X_train,y_train)
dtc_y_preddtc.predict(X_test)
print(score,dtc.score(X_test,y_test))
5.随机森林进行模型的训练和预测分析from sklearn.ensemble import RandomForestClassifier
rfcRandomForestClassifier(random_state9)
rfc.fit(X_train,y_train)
rfc_y_predrfc.predict(X_test)
print(score:forest,rfc.score(X_test,y_test))
6.GBDT进行模型的训练和预测分析from sklearn.ensemble import GradientBoostingClassifier
gbcGradientBoostingClassifier()
gbc.fit(X_train,y_train)
gbc_y_predgbc.predict(X_test)
print(score:GradientBoosting,gbc.score(X_test,y_test))
5.4 三种分类器性能评估
7.性能评估from sklearn.metrics import classification_report
print(dtc_report:,classification_report(dtc_y_pred,y_test))
print(rfc_report:,classification_report(rfc_y_pred,y_test))
print(gbc_report:,classification_report(gbc_y_pred,y_test)) 集成算法多样性
集成学习中个体学习器多样性越大越好。通常为了增大个体学习器的多样性在学习过程中引入随机性。常用的方法包括对数据样本进行扰动、对输入属性进行扰动、对算法参数进行扰动。
6.1 数据样本扰动
给定数据集可以使用采样法从中产生出不同的数据子集。然后在利用不同的数据子集训练出不同的个体学习器。
该方法简单有效使用广泛。 1数据样本扰动对于“不稳定学习器”很有效。“不稳定学习器”是这样一类学习器训练样本稍加变化就会导致学习器有显著的变动如决策树和神经网络等。 2数据样本扰动对于“稳定学习器”无效。“稳定学习器”是这样一类学习器学习器对于数据样本的扰动不敏感如线性学习器、支持向量机、朴素贝叶斯、K近邻学习器等。 如Bagging算法就是利用Bootstrip抽样完成对数据样本的自助采样。
6.2 输入属性的扰动
训练样本通常由一组属性描述可以基于这些属性的不同组合产生不同的数据子集然后在利用这些数据子集训练出不同的个体学习器。 1若数据包含了大量冗余的属性则输入属性扰动效果较好。此时不仅训练出了多样性大的个体还会因为属性数量的减少而大幅节省时间开销。同时由于冗余属性多即使减少一些属性训练个体学习器也不会很差。 2若数据值包含少量属性则不宜采用输入属性扰动法。 6.3 算法参数的扰动
通常可以通过随机设置不用的参数比如对模型参数加入小范围的随机扰动从而产生差别较大的个体学习器。
在使用交叉验证法GridSearch网格搜索来确定基学习器的参数时实际上就是用不同的参数训练出来了多个学习器然后从中挑选出效果最好的学习器。集成学习相当于将所有这些学习器利用起来了。
随机森林学习器就结合了数据样本的扰动及输入属性的扰动。 小结 提升树中的每一个弱学习器通过拟合残差来构建强学习器 梯度提升树中的每一个弱学习器通过拟合负梯度来构建强学习器