NP问题: 多项式复杂程度的非确定性问题
NPC问题: 多项式时间可解的NP问题
决策树模型是一种树形结构模型, 由结点和有向边构成. 通过决策树模型, 能够对实例进行分类. 决策树本质上是从训练数据中归纳出一组分类规则, 与训练数据集不想矛盾的决策树可能有多个, 或者没有. 我们需要找到一个与训练数据矛盾较小的决策树, 同时具有很好的泛化能力. 从所有可能的决策树中选取最优决策树是NPC问题, 所以现实中决策树学习算法通常采用启发式方法, 近似求解这一优化问题.
决策树学习算法主要包括: 特征选择、决策树生成和决策树剪枝三个过程.决策树的常用算法有: ID3算法、C4.5算法、CART算法. ID3算法与C4.5算法分别通过信息增益和信息增益比进行特征选择. CART算法即为分类和回归树算法. 对于回归问题, 基于平方误差最小化准则; 对于分类问题, 基于基尼指数最小化准则. 对于决策树算法的细节, 可以参考统计学习方法(李航).
将多个基学习器通过一定的策略结合生成强学习器用来实现学习任务的方法叫做集成学习. 集 成 学 习 = 基 学 习 器 + 结 合 策 略 集成学习=基学习器+结合策略 集成学习=基学习器+结合策略
集成学习主要分为: Bagging和Boosting. 前者为并行式集成学习方法, 代表算法有: 随机森林(RF算法). 后者为串行式集成学习方法, 主要有: Adaboost, GBDT, XGboost, LightGBM等.
随机森林算法是一种并行式集成学习方法. 相较于决策树而言, 随机森林在决策树的训练中引入随机属性的选择. 随机性主要体现在以下两个方面:
1)对原数据集采用bootstrap sample method(自助法采样,又放回). m个样本数据集, m次随机采样得到采样集, 如此操作N次, 则有N个含m训练样本的采样集. 这样可以训练N个基学习器, 再结合得到最终学习器.
2)对于特征的选择引入随机性. 从K个特征中随机选择k个特征. 每次分裂时, 从k个中选取最优的.
引入的随机性, 使得RF的泛化能力提升, 不易陷入过拟合, 且抗噪能力强.
注: RF分类效果(error rate)与两个因素有关
关键点: 如何选取k值?
减小特征选择个数k, 树的分类能力和任两棵树相关性都会降低.
袋外误差率(out-of-bag error)
Bootstrap每次约有 1 3 \frac{1}{3} 31的样本不会出现在采集样本集合中, 称这部分数据为oob(out-of-bag).利用oob error估计作为泛化误差估计的一个组成部分. 利用袋外数据测试已经生成的随机森林.
加 法 模 型 + 指 数 损 失 函 数 + 前 向 分 布 算 法 加法模型+指数损失函数+前向分布算法 加法模型+指数损失函数+前向分布算法
方法: 在迭代过程中, 提高前一轮中分类错误样本的权值, 降低前一轮分类正确样本的权值, 采用加权多数表决的方法. 分类错误率低的分类器具有更大的权值, 反之则更小.
加 法 模 型 + 负 梯 度 拟 合 + C A R T 算 法 + 前 向 分 布 算 法 加法模型+负梯度拟合+CART算法+前向分布算法 加法模型+负梯度拟合+CART算法+前向分布算法
负梯度拟合:利用损失函数的负梯度来拟合残差的近似值.
Adaboost是对每个弱学习器分配权值生成的强学习器.
GBDT是将多个学习器叠加起来, 每次利用残差(或负梯度)来生成弱学习器, 再将多个弱学习器相加生成强学习器.
对于随机森林, 由于引入特征划分的随机, 有效提高了树的泛化能力, 不需要进行剪枝.正常生成的决策树由于能够完美拟合训练数据, 需要进行剪枝操作来提高泛化能力. 集成方法是将多个弱学习器通过一定策略结合得到强学习器, 相比单一模型具有更好的泛化能力, 并非学习器越多, 最终得到的强学习器效果越好. 对于Adaboost和GBDT算法而言, 可以通过设置一个阈值 ϵ \epsilon ϵ来使其提前终止(这也说明这两种算法弱学习器的个数是可定的), 这在一定程度上可以提高泛化能力.
RF中决策树的个数是超参, 树越多, 学习效果未必越好. 同时树越多, 计算量也会越大, 但由于是并行化集成方法, RF还是比Boosting方法要快, 但比单个决策树要慢的多.
1)及早停止增长树法, 但无法很好把控何时停止.[先剪枝]
2)剪枝-[后剪枝]
为了防止Adaboost 过拟合, 通常会加入正则化, 这里可以理解为学习率 f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_k(x)=f_{k-1}(x)+\alpha_k G_k(x) fk(x)=fk−1(x)+αkGk(x)加入正则化项 f k ( x ) = f k − 1 ( x ) + ν α k G k ( x ) , 0 < ν < 1 f_k(x)=f_{k-1}(x)+\nu\alpha_k G_k(x),0<\nu<1 fk(x)=fk−1(x)+ναkGk(x),0<ν<1上式表明, 要达到同样训练效果, 加入正则化的弱学习器迭代次数增加. 即弱学习器数量增加, 从而提高模型的泛化能力.
注:边界理论: 泛化误差收敛于某个上界, 训练集的边界越大, 泛化误差越小.
1)加入与Adaboost算法类似的正则化项;
2)子采样方法(subsample), 选取一部分样本去做GBDT决策树拟合(这样牺牲精度,增加了偏差);
3)剪枝.
RF算法特点: 不用做特征选择, 不用剪枝,采用boostrap sample.