随机森林与Adaboost

来源:互联网 发布:js怎么获取毫秒数 编辑:程序博客网 时间:2024/05/11 23:41

1. 决策树模型

1. 决策树三种算法

  1. ID3: 使用信息增益(互信息量I(|))作为特征选择指标,遍历所以属性(特征),选择信息增益最大的属性作为分裂属性
    - 算法缺点:倾向与取多值属性,训练得到的是庞大深度浅的树,不合理
  2. C4.5: 使用信息增益率(I(|)/H()),解决倾向与多值属性问题
  3. CART:使用基尼系数Gini(p)=Kk=1pk(1pk)=1Kk=1(|Ck|D)2随机森林常用指标,可解决分类和回归问题
    1). CART是二分类树,每次得到两个超类组,同属性可进行多次分类,直到属性值唯一。
    2). 对与离散值,每组可有多个属性值,使用基尼系数做分类条件GiniGain=P(left)Gini(p1)+P(right)Gini(p2), P(left)表示分到左边属性的概率,Gini(p1)表示分到左边的样本基于类别得到的基尼系数。
    2). 对于连续值,使用最小平方残差,得到一个分界线,使的组内方差最小,组间方差最大
    3). 分类树得到的是叶子节点中概率大的类, 回归树取叶子节点中样本的中位数或平均值
    注意:分类树和回归树是针对最后的target是连续值和离散值而言

2. 决策树损失函数

C(T)=tNtH(t)
其中Nt与该叶节点样本数有关,H(t)表示该叶节点的熵,如果是纯节点(只有一种类别),熵为0

3. 停止条件:

a. 每个叶节点下只有一类(会过拟合);
b. 每个叶节点下样本数小于某个阈值

4. 优点:

a. 易于理解和解释,可视化好,容易提取规则;
b. 效率高,只需构建一次;

5. 缺点:

a. 容易过拟合(剪枝;随机森林);
b. 忽略属性特征间相关性;
c. 对缺失数据处理困难

2. Bagging与随机森林

1. Bagging策略及随机森林:

1). 用bootstrap方法重采样(有放回)选出n个样本
2). 在所以属性(特征)上,对n个样本训练一个分类器(决策树、LR、SVM等)
3). 循环前两步m次,建立m个分类器,根据结果投票
随机森林:在Bagging基础上两处修改:
a. 第二步从所以M个属性中随机选择m个(经验logM);
b. 分类器用CART决策树

2. 随机森林随机性体现在:

a. 每棵树样本是有放回采样(类似于给样本权重,采样多的样本更容易被分类正确,体现在损失函数上为对应样本乘上系数)
不放回抽样:每棵树学习学习片面,训练出来有很大差异,是多棵树表决,“求同”的过程
b. 每课树特征选择随机性
c. 随机的优点:不需要剪枝,减少过拟合,提高抗噪能力(对缺省值敏感度低)

3. 影响分类效果的因素

1).任意两课树的相关性:相关性越大,错误率越高
2).单棵树的分类能力:分类能力越强,整体错误率越低
通过调剂每棵树特征选择的个数可以调节相关性和分类能力。选择特征越多,两者同时提高,否则同时下降。

4. 袋外错误率(oob error)

评估模型时用袋外错误率(oob error)代替交叉验证。对每棵树选择训练集中未被该树采样的样本进行测试。

5. 总结随机森林优点

1). 效率高,适合运行大数据
2). 利于人工分析,可以评估各个特征在分类问题上的重要性
3). 防止过拟合,具有极好的准确度
4). 抗噪能力强,对缺省值敏感度低
5). 能够处理高维特征,不需要降维
6). 通过oob进行模型评估,不需要交叉验证
7). 可解决样本不平衡问题

3. Adaboost(boosting一种)

1. Adaboost核心思路:

1). 假设gi为分类器结果,wi为分类器权重,分类结果为带权重的分类器投票ki=1wigi
2). 设置两个权重。样本权重:每次分类器分错的样本,在下一个分类器中加权重,分类正确的减权重;分类器权重:根据分类器误差率给定一个权重

2. 具体实现:

  1. 初始化向量数据集T={(x1,y1),(x2,y2),..,(xn,yn)},初始化样本权重D1=(w11,w12,...,w1,n),w1,i=1/n
  2. 构造分类误差率函数(损失函数?)
    em=i=1nwmiI(Gm(xi)yi)
    其中em是第m个分类器的分类误差,Gm是第m个分类器,wmi是第m个分类器的第i个样本的权重,I是指示函数
  3. 计算Gm的分类器权重αm=12log1emem,误差率1/2为最差
  4. 计算下一个分类器的样本权重
    wm+1,i=wm,iZexp(αmyiGm(xi)),i=1,...,n
    Z是归一化系数,使权重和为1
  5. 分类器加权求和构建最终分类器
    G(x)=sign(m=1MαmGm(x))

3. Adaboost算法解释

  1. Adaboost模型是加法模型,损失函数是指数函数,学习方法是前向分布算法。
  2. 加法模型:
    f(x)=m=1Mβb(x;θ)
  3. 前向分布算法思想:从前向后,每次只学习一个基函数和系数,逐步逼近最优化目标函数式
  4. 损失函数与迭代参数:
    (αm,Gm(x))=argminα,Gi=1nexp[yi(fm1(xi)+αG(xi))]

3. Adaboost特点:

1 优点:a. 很好利用各种分类器作为弱分类器,准确度高;b. 相比bagging充分考虑每个分类器权重;c. 不易出现过拟合
2. 缺点:a. 时间复杂度高,每次迭代都要重新训练分类器;b. 迭代次数不好设定(训练多少次分类器),需要使用交叉验证;c. 数据不平衡会导致准确度下降;d. 对噪声数据和异常数据很敏感

4. bagging与boosting比较

  1. bagging是降低variance,防止过拟合,提高模型鲁棒性和稳定性;boosting主要降低bias,提高准确度,同时也可以一定程度降低variance
  2. 随机森林与adaboost比较
    1). 两者都是进行投票表决,随机森林是公平投票(分类器无权重),adaboost是根据地位投票(分类器有权重)
    2). 随机森林是并列,adaboost是级联
    3). 都会给样本一个权重(bagging通过重复采样实现)。但bagging是随机的,boosting是根据样本之前分类结果学习的
    4). 随机森林是对每个分类器随机选取部分样本,adaboost是选择所有样本。
0 0
原创粉丝点击