非线性分类器(二)
决策树
决策树方法利用一定的训练样本,从数据中“学习”出决策规则,自动构造决策树,并利用树结构进行决策,每一个非叶子节点是一个判断条件,每一个叶子节点是结论。
决策树构建方法:
属性选择的准则:
使用某属性对数据集划分之后,各数据子集的纯度要比划分前的数据集的纯度高,也就是不确定性(熵)要比划分前数据集的不确定性低。
随机变量熵的定义,假定当前样本集合中第类样本所占的比例为pk :
信息增益的定义:
ID3算法:
在决策树各个节点上利用信息增益准则选择属性,递归地构建决策树,从根节点开始,对节点计算所有可能的属性的信息增益,选择信息增益最大的属性作为节点的属性,由该属性的不同取值建立子节点,再对子节点递归地调用以上方法;直到所有属性的信息增益均很小或没有属性可以选择为止,最后得到一个决策树。
ID3算法分析:
信息增益会偏向取值较多的属性。
C4.5算法
C4.5利用信息增益率进行属性划分,是ID3的改进,信息增益率定义:
C4.5算法分析:
信息增益率会偏向取值较少的属性。
CART算法:
CART算法使用基尼指数来选择最优属性,同时决定该属性的最优二值划分点。假设分类问题中,设有K个类,样本属于第k类的概率为pk,则概率分布的基尼指数定义为:
应选择那个使划分后基尼指数最小的属性作为最优划分属性。
需要注意的是,CART分类树算法每次仅对某个特征的值进行二分,而不是多分。此时,CART分类树算法建立起来的是二叉树,而不是多叉树。
剪枝处理
预剪枝:
决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点记为叶结点,其类别标记为训练样例数最多的类别。
方法:
1、数据划分法:将数据划分为训练样本和测试样本,基于训练样本对决策树进行生长,直至在测试样本上的分类错误率达到最小时停止生长。需要采用多次交叉验证。
2、阈值法:预设一个信息增益阈值,小于阈值的节点停止生长。
3、信息增益的统计分析:统计已有节点的信息增益的分布,如果继续生长后信息增益的统计分布变化不明显,则停止生长。
预剪枝的优点与缺点:
1、降低过拟合风险而且显著减少训练时间和测试时间开销。
2、有些分支的当前划分虽然不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高。预剪枝基于“贪心”本质禁止这些分支展开,带来了欠拟合风险。
后剪枝
先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性 能提升,则将该子树替换为叶结点。
方法:
1、减少分类错误率
2、最小代价与复杂性折中
3、MDL准则编码法
后剪枝的优点与缺点:
1、后剪枝比预剪枝保留了更多的分支,欠拟合风险小,泛化性能往 往优于预剪枝决策树
2、训练时间开销大:后剪枝过程是在生成完全决策树之后进行的,需要自底向上对所有非叶结点逐一考察
连续值与缺失值处理
处理连续值:动态地定义新的离散值属性,即把连续值属性的值域分割为离散的区间集合
缺失值处理:赋给缺失值处节点n的训练样例中该属性的最常见值
集成分类器
Bagging与随机森林
1、在原始训练集上进行有放回的随机采样,得到若干个比较小的训练集;利用这些训练 集,训练若干个模型;最后通过投票的方法进行模型集成。
2、决策树作为每一个弱分类器。
3、优点:
AdaBoost方法
1、串行生成,每个模型都针对前序模型的错误进行专门训练,从而增加不同基模型之间的差异性。
2、提高那些被前一轮弱分类器错误分类样本的权值,并降低那些被正确分类的样本的权值。
3、算法原理:
1)计算样本权重,初始化权重值相等,均为1/n
2)计算错误率ε:
3)利用错误率ε计算弱分类器权重α:
4)更新样本的权重:
5)这样经过t轮的学习后,就会得到t个弱学习算法、权重、弱分类器的输出以及最终的AdaBoost算法的输出:
6)集成策略:
简单平均法或者加权平均法或者投票法均可
Bagging、Boosting二者之间的区别
样本选择上:
- Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
- Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
样例权重:
- Bagging:使用均匀取样,每个样例的权重相等。
- Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
预测函数:
- Bagging:所有预测函数的权重相等。
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
并行计算:
- Bagging:各个预测函数可以并行生成。
- Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。