文章目录
1. 决策树
1.1 概要
决策树算法既可以应用于分类任务也可以用于回归任务
训练阶段:给定训练数据集中根据特征构建数
测试阶段:根据构建好的树模型进行预测即可
如何选择特征以构建树模型呢?需要一个衡量标准来进行选择,答案是通过选择特征后的熵值进行选择。
1.2 熵值
通过熵值衡量特征划分的好坏,熵是表示随机变量不确定性的度量,越稳定熵越大。
H ( X ) = − ∑ i = 1 n P i log P i H(X)=-\sum_{i=1}^n P_i\log P_i H(X)=−i=1∑nPilogPi
理解:这里的n可以理解类别数,简单理解就是出现所有类的概率通过这一公式求得熵值。
结论:不确定性越大,熵值越大
![](https://i-blog.csdnimg.cn/blog_migrate/5e60db5b27409f2243a7799bad7826c6.png)
信息增益:表示特征X使得类Y的不确定性减少的程度,即熵值减少量
方法:当确定了特征后,该特征中的每一种对应着目标的分类情况,根据每一种计算一个熵值,然后根据每一种的占比情况求取加权熵值,和原本的熵值的差值就是信息增益。根据最大的信息增益选择第一个结点即根结点。
1.3 决策树算法的分类
ID3
通过信息增益进行特征选择从而构建树模型
C4.5
通过信息增益率,
CART
使用GINI系数进行特征选择
结论:基尼系数越小代表效果越好,
1.4 决策树剪枝策略
剪枝的原因:防止过拟合
剪枝策略:预剪枝、后剪枝
预剪枝:建立决策树过程中进行剪枝,方法有:限制深度(特征数)、叶子结点个数、叶子结点样本数、信息增益量等
后剪枝:决策树建立完成后进行剪枝操作,方法:根据衡量标准剪枝叶子结点
2. 集成算法(Ensemble Learning)
集成学习是一大类模型融合策略和方法的统称。集成算法重点在于集成,简单说就是集百家之长,集成的方式也就表示了不同的集成算法。一般集成算法有如下分类:Bagging、Boosting、Stacking。
2.1 Bagging和Pasting
![](https://i-blog.csdnimg.cn/blog_migrate/37d32a0f3f9c717efaedf78cea47d765.png)
Bagging全称是bootstrap aggregation,允许训练实例被同一预测器多次采样,也称为自举汇聚法,Pasting指的是采样时样本不放回,允许被多个预测器采样但是不许被同一个预测器多次采样,通常是训练多个分类器取平均。
典型的就是**随机森林,**随机:数据采样随机,特征选择随机,不是使用所有的样本或者所有的特征,也保证了泛化能力
随机森林的优势:处理高维数据,不用特征选择,可以得到哪些特征较为重要,容易并行化,易于可视化展示
2.2 Boosting
![](https://i-blog.csdnimg.cn/blog_migrate/4141fd968d5e9db37c7e734e1da15276.png)
通过弱分类器,通过加权训练模型,典型:AdaBoost、Xgboost、GBRT
Adaboost会根据前一次的分类效果调整数据权重
2.3 Stacking
![](https://i-blog.csdnimg.cn/blog_migrate/2ebfc1df781c64eb426cf256484564bf.png)
通过聚合多个分类或者回归模型,通过分阶段来进行, 第一阶段得出每个分类器结果,第二阶段使用前一阶段结果训练
3. 常见问题
基分类器:常用的基分类器是决策树,为什么?
(1)决策树可以方便将样本权重整合到训练过程中,不需要使用过采样方法调整样本权重
(2)可以通过调整树的层数来对决策树的表达能力和泛化能力做折中
(3)数据样本的扰动对决策树影响较大,从而构成的基分类器随机性较大,增加其多样性
神经网络模型也适合作为基分类器,也是因为其不稳定,可以引入随机性
为什么基分类器不能替换成线性分类器比如K-近邻?
(1)首先线性分类器属于稳定的分类器,方差较小,同时采样方式也导致通过集成后得到的效果不一定比原来好,很难收敛。
(2)不稳定分类器带来一定的随机性,通过集成后的方差比原来低,所以基分类器一般不会选择线性分类器这些稳定的分类器,决策树本身对样本分布较为敏感所以适用。
通过偏差和方差定量解释过拟合、欠拟合?
偏差:训练模型输出与真实之间的差距,问题通常是对模型算法做了错误的假设导致,由偏差带来的误差通常在训练误差上就能体现。偏差大,即欠拟合。
方差:训练模型输出的方差,通常是由于模型复杂度较高导致,由方差带来的误差通常体现在测试误差相对于训练误差的增量上。方差大,即过拟合。
![](https://i-blog.csdnimg.cn/blog_migrate/2aa6c7d9d054b5fc877b45e584c1d7b9.png)
Bagging能够提升弱分类器的性能原因是降低了方差,Boosting能够提升弱分类器的性能原因是降低了偏差?
Bagging是取平均,原本样本采样不足,通过Bagging进行取平均,从而降低了方差,即输出的变化降低了;Boosting是提升算法,根据错误不断缩小损失函数,使得偏差减低,不会降低方差,因为其分类器间具有较强的相关性,缺乏独立性所以不会降低方差。
参考链接:《百面机器学习》、《统计学习方法》、《机器学习实战》