• adaboost原理与实践


    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。对adaBoost算法的研究以及应用大多集中于分类问题,同时也出现了一些在回归问题上的应用。就其应用adaBoost系列主要解决了: 两类问题、多类单标签问题、多类多标签问题、大类单标签问题、回归问题。它用全部的训练样本进行学习。

                      

                                       

       

    Adaboost算法优缺点:

    优点

    1)  Adaboost是一种有很高精度的分类器

    2)  可以使用各种方法构建子分类器,Adaboost算法提供的是框架

    3)  当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单

    4)  简单,不用做特征筛选

    5)  不用担心overfitting(过度拟合)

    缺点

    1)  容易受到噪声干扰,这也是大部分算法的缺点

    2)  训练时间过长

    3)  执行效果依赖于弱分类器的选择

     

    #########################Weka###########################

    Adaboost m1是一个非常受欢迎的二元分类算法

     

    #################R语言############################

    library(adabag)

    ## rpart library should be loaded

    data(iris)

    iris.adaboost <- boosting(Species~., data=iris, boos=TRUE, mfinal=5)

    iris.adaboost

    ## Data Vehicle (four classes)

    data(Vehicle)

    l <- length(Vehicle[,1])

    sub <- sample(1:l,2*l/3)

    mfinal <- 10

    maxdepth <- 5

    Vehicle.rpart <- rpart(Class~.,data=Vehicle[sub,],maxdepth=maxdepth)

    Vehicle.rpart.pred <- predict(Vehicle.rpart,newdata=Vehicle[-sub, ],type="class")

    tb <- table(Vehicle.rpart.pred,Vehicle$Class[-sub])

    error.rpart <- 1-(sum(diag(tb))/sum(tb))

    tb

    error.rpart

    Vehicle.adaboost <- boosting(Class ~.,data=Vehicle[sub, ],mfinal=mfinal, coeflearn="Zhu",

        control=rpart.control(maxdepth=maxdepth))

    Vehicle.adaboost.pred <- predict.boosting(Vehicle.adaboost,newdata=Vehicle[-sub, ])

    Vehicle.adaboost.pred$confusion

    Vehicle.adaboost.pred$error

    #comparing error evolution in training and test set

    errorevol(Vehicle.adaboost,newdata=Vehicle[sub, ])->evol.train

    errorevol(Vehicle.adaboost,newdata=Vehicle[-sub, ])->evol.test

    plot.errorevol(evol.test,evol.train)

     

  • 相关阅读:
    centos7系统修改内核
    使用yum update更新文件系统时不更新内核的方法
    实现让用户不断的猜年龄,但只给最多3次机会,超过次数猜不对就退出程序。
    yum安装软件中的y/d/N
    MySQL5.7.15数据库配置主从服务器实现双机热备实例教程
    CentOS7.2 多个python版本共存
    CentOS 7.2 安装Python3.5.2
    R语言与概率统计(五) 聚类分析
    R语言与概率统计(四) 判别分析(分类)
    R语言与概率统计(三) 多元统计分析(下)广义线性回归
  • 原文地址:https://www.cnblogs.com/dudumiaomiao/p/5947456.html
Copyright © 2020-2023  润新知