算法小知识点

1. Bootstrap 自助法

  1. 一种抽样方法:有放回地从 N 个样本中抽样 n 个样本
  2. 核心思想:子样本之于样本,可以类比样本之于总体
  3. 适用于小样本

2. Bagging - Random Forest

  1. Bagging 和 Boosting都是 集成学习(ensemble learning) 领域的基本算法
  2. Bagging (bootstrap aggregation)
  • 从样本集中用Bootstrap采样选出n个训练样本(放回,因为别的分类器抽训练样本的时候也要用);
  • 在所有属性上,用这n个样本训练分类器(CART or SVM or …);
  • 重复以上两步m次,就可以得到m个分类器(CART or SVM or …);
  • 将数据放在这m个分类器上跑,最后投票机制(多数服从少数)看到底分到哪一类(分类问题)。
  1. Bagging代表算法 - Random Forest(随机森林)
  • 用Random的方式(详见第4点)构造一棵决策树(CART, Classification and Regression Tree)
  • 用1的方法构造很多决策树,每棵决策树都最大可能地进行生长而不进行剪枝,许多决策树构成一片森林,决策树之间没有联系
  • 测试数据进入每一棵决策树,每棵树做出自己的判断,然后进行投票选出最终所属类别(默认每棵树权重一致)
  1. 随机森林中Random指:
  • 训练样本选择方面的Random - Bootstrap方法随机选择子样本;
  • 特征选择方面的Random - 属性集中随机选择k个属性,每个树节点分裂时,从这随机的k个属性,选择最优的。
  1. 随机森林的优缺点
  • 不容易出现过拟合,因为选择训练样本的时候就不是全部样本
  • 既可以处理属性为离散值的量,也可以处理属性为连续值的量,但是不能给出一个连续型的输出
  • 可以处理成千上万的输入特征,并确定最重要的特征,因此被认为是一个不错的降维方法。
  • 分类不平衡的情况时,随机森林是能够平衡数据集误差的有效方法,
  1. 注意
  • Bagging树"并行"生成,如Random Forest;Boosting树"串行"生成,如Adaboost
  • Boosting中的基模型为弱模型,而Random Forest中的基树是强模型(大多数情况)
  • Boosting重采样的不是样本,而是样本的分布,每次迭代之后,样本的分布会发生变化,也就是被分错的样本会更多的出现在下一次训练集中

3. Boosting - Adaboost

  1. Bagging 和 Boosting都是 集成学习(Ensemble Learning) 领域的基本算法
  2. Boosting算法代表 - Adaboost(Adaptive Boosting,自适应提升算法)
  • 针对同一个训练集训练不同的分类器(弱分类器),然后进行分类,对于分类正确的样本权值低,分类错误的样本权值高(通常是边界附近的样本),最后的分类器是很多弱分类器的线性叠加(加权组合)
  • Boosting算法更加关注错分的样本。这些分错的样本,在给下一个分类器的时候权重就得到提高,也就是会影响到下次取训练样本的分布。
  • Adaboost算法中有两种权重,一种是数据的权重,另一种是弱分类器的权重。其中,数据的权重主要用于弱分类器寻找其分类误差最小的决策点,找到之后用这个最小误差计算出该弱分类器的权重
  • AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法的二类分类学习方法。
    加法模型、前向分步算法
  1. Adaboost优缺点
  • 不用做特征筛选,可以使用各种方法构造子分类器,Adaboost算法提供的是框架
  • 相比较于随机森林,更不用担心过拟合问题
  • 在每次迭代时候会给噪声点较大的权重,因此对于噪音数据和异常数据是十分敏感的
  • Adaboost是一种"串行"算法,运行速度慢
  1. 注意
  • Bagging树"并行"生成,如Random Forest;Boosting树"串行"生成,如Adaboost
  • Boosting中的基模型为弱模型,而Random Forest中的基树是强模型(大多数情况)
  • Boosting重采样的不是样本,而是样本的分布,每次迭代之后,样本的分布会发生变化,也就是被分错的样本会更多的出现在下一次训练集中

4. 模型评估方法

留出法(hold-out)

直接将数据集D划分为两个互斥的部分,其中一部分作为训练集S,另一部分用作测试集T。

K-折交叉验证法(cross-validation)

交叉验证法先将数据集D划分为k个大小相似的互斥子集,每次采用k−1个子集的并集作为训练集,剩下的那个子集作为测试集。进行k次训练和测试,最终返回k个测试结果的均值。

留一法(leave-one-out,LOO)

留一法是k折交叉验证k=m(m为样本总数)时候的特殊情况。即每次只用一个样本作测试集。该方法计算开销较大。

5. 梯度提升树

  1. 梯度提升决策树(Gradient Boosting Decision Tree - CBDT)也叫做累加回归树(Multiple Additive Regression Tree - MART),梯度提升树是以 CART 作为基函数,采用加法模型和前向分步算法的一种梯度提升方法。
  2. GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。
  3. GBDT也是Boosting家族的成员。与Adaboost的相同点 - GBDT也是迭代,使用了前向分布算法;不同点 - 弱学习器限定了只能使用CART回归树模型,同时GBDT是基于残差学习的算法,没有AdaBoost中的样本权重的概念。
  4. 回归树:回归树总体流程类似于分类树,区别在于,回归树的每一个节点都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝是穷举每一个特征的每个阈值找最好的分割点,但衡量最好的标准不再是ID3中的最大熵,而是最小化平方误差,通过最小化平方误差能够找到最可靠的分枝依据。
  5. 提升树:提升树是迭代多棵回归树来共同决策。当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树。残差 = 真实值 - 预测值 。提升树即是整个迭代过程生成的回归树的累加。

6. ID3、C4.5、CART

  1. ID3
  • ID3算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分,也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中,将不再起作用。
  • 最大信息熵增益,即信息不确定性减少的程度最大。
  • ID3算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。在建立决策树的过程中,根据特征属性划分数据,使得原本“混乱”的数据的熵(混乱度)减少,按照不同特征划分数据熵减少的程度会不一样。在ID3中选择熵减少程度最大的特征来划分数据(贪心),也就是“最大信息熵增益”原则。
  • ID3采用的信息增益度量存在一个缺点,它一般会优先选择有较多属性值的Feature,因为属性值多的Feature会有相对较大的信息增益。
  1. C4.5
  • C4.5算法核心思想是ID3算法,是ID3算法的改进,改进方面有四方面,第一就是用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足。第二就是在树构造过程中进行剪枝。第三就是能处理连续(非离散)的数据。第四就是能处理不完整的数据。
  • 信息增益率=信息增益/IV(a),说明信息增益率是信息增益除了一个属性a的固有值得来的。
  • 增益率准则其实对可取类别数目较少的特征有所偏好,于是C4.5算法不直接选择增益率最大的候选划分属性,候选划分属性中找出信息增益高于平均水平的属性(这样保证了大部分好的的特征),再从中选择增益率最高的。
  1. CART
  • ID3和C4.5虽然在对训练样本集的学习中可以尽可能多的挖掘信息,但其生成的决策树分支较大,规模较大。为了简化决策树的规模,提高生成决策树的效率,就出现了根据基尼指数来选择的CART。
  • CART为分类和回归树,既可以用于分类也可以用于回归。对回归树用平方误差最小准则,对分类树用基尼指数最小化准则。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章