机器学习实战——提升方法AdaBoost

  • 组合相似的分类器来提高分类性能
  • 应用AdaBoost
  • 处理非均衡分类问题

【提升算法】

  • 提升算法需要解决两个问题:
    • 如何改变训练数据的权重或者概率分布
    • 如何将弱分类器组合成一个强分类器

【AdaBoost】

  • 算法:
    • 训练数据集上有N各分类器,m分类器训练的样本权重Dm
    • 初始化:每个训练器权重相等1/N
    • 计算分类器Gm(x)在训练集合上的分类误差:e_m =sum_所有分类器: { 分类器m的权重* 分类器m的错误分类样本数目/分类器m的所有样本数目)
    • 计算Gm(x)的系数: alpha_m = 1/2*log[(1-em)/em]
    • 更新分类器权重:
      • 分类正确分类器:Di,m+1 = Di,m * e(-alpha)/Sum(D)
      • 分类错误分类器:Di,m+1 = Di,m * e(alpha)/Sum(D)

【AdaBoost代码实现】

  • 弱分类器:

    • stumpClassify ——基于阈值、分类规则、特征分类(决策树桩)
    • buildStump
      • 输入:datMat,classLabel,D(D是权值分布)
      • 输出:D分布下,最优决策树(分割点、特征依据、分类规则)
      • 确定最优特征:先遍历所有特征向量:for i in range(n)
      • 确定最优分割点:
        • 步数
        • 遍历区间(特征值的最大、最小间隔)
        • 步长
      • 遍历分割点
      • 基于stumpClassify求决策树
      • 计算误差(对比 predict label 和 real label, 结合D)
      • 更新最小误差、最优特征、最优分割点
  • 权重向量更新:

    • Dt+1 = Dtexp(alpha)label*predictlabel/sum(D)
  • 初始化

    • D = mat(ones((m,1)))
  • 每一轮更新

    • 利用buildStamp计算当前D分布下,最优的决策树、误差、Gm(X)
    • 计算alpha
    • 将决策树,加入到决策树组中
    • 更新D
    • 累计类比估计值(线性迭代分类器)
    • 如果错误率=0.0,退出循环
  • 测试 DONE

【非均衡分类问题】

  • 基于错误率衡量分类器任务成功程度
  • 考虑决策代价的分类器变换算法
  • 混淆矩阵
    • 考虑二类问题
    • 正确率 = 真正例/(真正例+伪正例)
    • 召回率 = 真正例(真正例+伪反例)
    • 最大化正确率+召回率
  • ROC CURVE
    • roc: receiver operating characteristic

你可能感兴趣的:(机器学习实战——提升方法AdaBoost)