看室内设计效果图网站,网络数据分析,仿美团外卖小程序源码,2015网站备案教程概述 一句话概述Adaboost算法的话就是#xff1a;把多个简单的分类器结合起来形成个复杂的分类器。也就是“三个臭皮匠顶一个诸葛亮”的道理。 可能仅看上面这句话还没什么概念#xff0c;那下面我引用个例子。 如下图所示#xff1a; 在D1这个数据集中有两类数据“”和“-”… 概述 一句话概述Adaboost算法的话就是把多个简单的分类器结合起来形成个复杂的分类器。也就是“三个臭皮匠顶一个诸葛亮”的道理。 可能仅看上面这句话还没什么概念那下面我引用个例子。 如下图所示 在D1这个数据集中有两类数据“”和“-”。 对于这个数据集你会发现不管是这么分 这么分 还是这么分 总有误分类点存在 那么如果我们把上面三种分发集合起来呢像下面这样 会发现把上面三个弱分类器组合起来会变成下面这个分类器 这样一来用这个分类器就可以完美的分类数据了。 这就是Adaboost的思想。 是不是十分简单粗暴 好下面我们来总结下Adaboost。 Adaboost是一种迭代算法其核心思想是针对同一训练集训练不同的分类器即弱分类器然后把这些弱分类请合起来构造一个更强的最终分类器。 Adaboost算法的优点 Adaboost的优点如下 1Adaboost是一种有很高精度的分类器 2可以使用各种方法构建子分类器Adaboost算法提供的是框架 3当使用简单分类器时计算出的结果是可以理解的。而且弱分类器构造及其简单 4简单不用做特征筛选 5不用担心过拟合(overfitting)! Adaboost算法的步骤 通过上面的内容我们已经知道Adaboost是将多个弱分类器组合起来形成一个强分类器那就有个问题了我们如何训练弱分类器我们总得用一个套路来训练不然每次都好无章法的弄个弱分类器那结果可能是即使你把一万个弱分类器结合起来也没办法将数据集完全正确分类。 那么我们来进一步看看Adaboost算法的思想 1Adaboost给每一个训练数据添加“权值”且最初这个权值是平均分配的。然后在之后的步骤中提高那些被前一轮弱分类器错误分类样本的权值并降低那些被正确分类样本的权值这样一来那些没有得到正确分类的数据由于其权值的加大而受到后一轮弱分类器的更大关注 2Adaboost给每一个弱分类器添加“权值”且采取多数表决的方法组合弱分类器。具体地加大分类误差率小的弱分类器的权值使其在表决中起较大的作用减少分类误差率大的弱分类器的权值使其在表决中起较小的作用。 Adaboost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。 下面来整理下Adaboost算法的步骤。 输入 训练数据集T {(x1, y1), (x2, y2), ..., (xN, yN)}其中xi∈X⊆Rnyi∈Y{-1, 1} 弱学习算法。 输出 最终分类器G(x) 解 1初始化训练数据的权值分布 D1 (w11, ..., w1i, ..., w1N)其中w1i 1/Ni1, 2, ..., N 2对m1, 2,..., M a使用具有权值分布Dm的训练数据集学习得到基本分类器 Gm(x): X - {-1, 1} b计算Gm(x)在训练数据集上的分类误差率 c计算Gm(x)的系数 这里的对数是自然对数。 d更新训练数据集的权值分布 这里Zm是规范化因子 它使Dm1成为一个概率分布。 3构建基本分类器的线性组合 得到最终分类器 然后对上面的步骤做一些说明 步骤1假设训练数据集具有均匀的全职分布即每个训练样本在基本分类器的学习中作用相同。这一假设保证了第1步中能用在原始数据上学习弱分类器G1(x)。 步骤2反复学习弱分类器在每一轮m 1, 2, ..., M顺次地执行下列操作 a使用当期分布Dm加权的训练数据集学习基本分类器Gm(x)。 b计算基本分类器Gm(x)在加权训练数据集上的分类误差率 这里wmi表示第m轮中第i个实例的权值且 。 这表明Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和由此可以看出数据权值分布Dm与弱分类器Gm(x)的分类误差率的关系。 c计算弱分类器Gm(x)的系数amam表示Gm(x)在最终分类器中的重要性。由式8.2可知当em 1/2时am 0并且am随em的减小而增大所以分类误差率越小的弱分类器在最终分类器中的作用越大。 d更新训练数据的权值分布为下一轮做准备。式8.4可以写成 由此可知被弱分类器Gm(x)误分类样本的权值得以扩大而被正确分类样本的权值却得以缩小。两相比较误分类样本的权值被放大 倍。 因此误分类样本在下一轮学习中起更大的作用。 而“不改变所给的训练数据而不断改变训练数据的全职分布使得训练数据在若分类器的学习中起不同的作用”就是Adaboost的一个特点。 步骤3中通过线性组合f(x)实现M个弱分类器的加权表决。系数am表示了弱分类器Gm(x)的重要性这里所有am之和并不为1。f(x)的符号决定实例x的类f(x)的绝对值表示分类的确信度。“利用弱分类器的线性组合构建最终分类器”是Adaboost的另一个特点。 例子 给定上面这张训练数据表所示的数据假设弱分类器由xv或xv产生其阈值v使该分类器在训练数据集上的分类误差率最低试用Adaboost算法学习一个强分类器。 解 1令m 1 则初始化数据权值分布 Dm (wm1, wm2,..., wm10)即D1 (w11, w12, ..., w110) wmi 0.1 i 1, 2,..., 10即w1i 0.1 i 1, 2, ..., 10 a用下面的方式从v1.5遍历到v9.5 for( v1.5;v9.5; v) { if(x v) G1(x)1; elseif (x v) G1(x) -1; } 并统计v取各个值使得误差率(误差率的计算方法是所有误分类点的权值之和)。 然后发现当v取2.5时误分类点为x6, 7, 8其权值和为0.3误差率最低此时当前弱分类器为 G1(x) 在训练数据集上的误差率e1 P(G1(xi) ! yi) 0.3 b计算G1(x)的系数a1 (1/2) log [(1-e1)/e1] 0.4236 c更新训练数据的权值分布 D2 (w21, w22, ...,w210) w2i (w1i/Z1)exp(-a1yiG1(xi))i 1, 2,..., 10 于是 D2 (0.0715, 0.0715, 0.0715, 0.0715,0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715) f1(x) 0.4236G1(x) 分类器sign[f1(x)]在训练数据集上有3个误分类点。 2令m 2做和上一步同上的操作。 发现在权值分布为D2的训练数据上v 8.5时误差率最低此时 当前弱分类器为 误差率是e2 0.2143 a2 0.6496 于是 权值分布为D3 (0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.1667, 0.1060, 0.1060, 0.1060,0.0455) f2(x) 0.4236G1(x) 0.6496G2(x) 分类器sign[f2(x)]在训练数据集上有3个误分类点。 3令m 3。 所以在权值分布为D3的训练数据上v 5.5时分类误差率最低此时的弱分类器为 G3(x)在训练样本上的误差率为e3 0.1820 a3 0.7514 于是 权值分布为D4 (0.125, 0.125, 0.125, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, 0.125) f3(x) 0.4236G1(x) 0.6496G2(x) 0.7514G3(x) 因为分类器sign[f3(x)]在训练数据集上的误分类点个数为0. 于是最终分类器为 G(x) sign[f3(x)] sign[0.4236G1(x) 0.6496G2(x) 0.7514G3(x)] 查看总分类器误分类点个数的方法 假设有一个分类器其有5个元素其正确的分类结果是 [1,1, -1, -1, 1] 然后 1权值初始为 D:[[ 0.2 0.2 0.2 0.2 0.2]] 2经过一次计算 alpha: 0.69314718056 classEst: [[-1. 1. -1. -1. 1.]] # 分类结果 3这时就算一下 aggClassEst alpha*classEst aggClassEst: [[-0.69314718 0.69314718 -0.69314718 -0.69314718 0.69314718]] 4对比aggClassEst和正确分类的正负号相同位置元素的正负号是否一致如 这里addClassEst的正负号从前向后依次是-,, -, -, 而正确分类的正负号依次是, , - ,-, 所以当前有1个被错误分类。 5重复上面4步直到第4步的对比完全一致或者达到循环次数上限。