人工智能 集成学习报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 3-1 (2)决策树 J48 的分类结果
图 3-2 (3)Random Forests 的分类结果 A.5 棵树的情况
图 3-3 B.10 棵树的情况
图 3-4 C.20 棵树的情况
图 3-5 【结果分析】 结果对照表: 分类器 Bagging J48 Random Forests(5) 误分率 运行时间 (s) 1.由分类的结果得知, 在对本数据 segment-challenge.arff 数据集进行分类时, Random Forests 算法得到的组合模型的预测误差要小于 Bagging 模型和决策树 J48 模型。由于结果是在测试集上产生,说明的 Random Forests 在泛化能力上具 有更好的特性。 3.33% 0.40 4.90% 0.13 2.55% 0.22 Random Forests(10) 1.57% 0.42 Random Forests(20) 1.57% 0.8
2.当 Random Forests 树的数量由 5 增加到 10 时,误差率有一定的减小,但同 时运行时间也相应的增加,且当继续增加到 20 棵树的过程中误差率没有减小, 而运行时间也成倍的增加,所以选择适当的树的数量对分类的效果较为重要。
பைடு நூலகம்
9 10 average
0.230449 0.248840 0.248274
0.260883 0.311751 0.308143
【实验分析】 由上表可知, 采用不同的分量分类器构造算法将得到不同的分类性能且可能 差异较大,在本实验中,采用决策树比 KNN 性能更优,这可能与 KNN 算法本 身有关,因为 KNN 对 K 值的选取比较敏感。
H ( x) arg max I (hi ( x) Y )
Y i 1 k
其中, H ( x) 表示组合分类模型, hi 是单个决策树分类模型, Y 表示输出变量 I () 为示性函数。最后,该系统的最终分类结果采用简单多数投票法。
【实验结果】 用 weka 工具进行分析,选择工具包自带的 segment-challenge.arff 数据集 (1500 条数据,20 个特征变量,7 分类问题) 。通过与 begging 方法和决策树 J48 进行比较分析。 在仿真过程中选择数据集中的 66%作为训练集, 即其中的 510 个数据作为测 试集。 (1)bagging 分类的结果
【总结】 Ada boost 算法是机器学习中一种比较重要的特征分类算法,已被广泛应用 人脸表情识别、图像检索等应用中,也已有人将它运用在交通管理信息系统中。 就目前而言,对 Ada boost 算法的研究以及应用大多集中于分类问题,在一些回 归问题上也有所应用。Ada boost 主要解决的问题有:两类问题、多类单标签问 题、多类多标签问题、回归问题。
【算法框架】 假设样本数 m,特征维数 n,S 表示样本,A 表示特征,D 表示样本权重, Y 表示类标,总体矩阵信息如下所示:
A1 S1 S2 ... Sm 给定样本
A2
...
An
Dt(i)
Y{+1,-1}
( x1 , y1 ),..., ( xm , y m )
,其中 , 其中
xi X Dt (i )
【算法性能】 大量的理论和实证研究都证明了 RF 具有很高的预测准确率, 对异常值和噪 声具有很好的容忍度, 且不容易出现过拟合。可以说, RF 是一种自然的非线性建 模工具, 是目前数据挖掘、生物信息学的最热门的前沿研究领域之一。
【算法步骤】 RFC 的基本步骤: 一、利用 bootstrap 抽样从原始训练集抽取 k 个样本, 且每个样本的样本容量 都与原始训练集一样; 二、对 k 个样本分别进行训练,建立 k 个决策树模型 h1 ( X ), h2 ( X ),...hk ( X ), 建立如下的多分类模型系统
【比较分析】 与 Bagging 算法进行比较,它们之间思想基本相同,它们都主持一个观点: 任一个弱学习算法可以通过加强提升到一个任意正确率的强学习算法, 并通过构 造一种多项式级的算法来实现这一加强的过程,它们的主要区别在于:Bagging
是随机选择、重复采样,各轮的训练集相互独立,每个个体分类器所采用的训练 样本都是从训练集中按等概率抽取的, 因此 Bagging 的各子网能够很好的覆盖训 练样本空间,从而有着良好的稳定性;而 Ada boost 各轮的训练集不独立,它的 选择与上一轮的结果有关, 它在每次弱学习之后调整样本空间分布,更新所有训 练样本的权重, 把样本空间中被正确分类的样本的权重降低,被错误分类的样本 权重提高, 这样下一次弱学习算法更能关注这些被错误分类的样本。由于该算法 可能会将噪声样本或分类边界样本的权重过分累积,因此很不稳定,但其在通常 情况下,其泛化能力是最理想的集成算法之一。
【算法分析】 每个样本都赋予一个权重,进行 T 次迭代。每次迭代后,对分类错误的样 本加大权重, 使得下一次的迭代更加关注这些样本,每次迭代得到一个最优弱分 类器。 每次迭代改变的是样本权重的分布,而不是重复采样。样本权重分布的改变 取决于样本是否被正确分类, 总是分类正确的样本权值低,分类错误的样本权值 高。 最终的结果是若分类器的加权组合,权值表示该弱分类器的性能。
1-20 次训练分别计算训练集错误率和测试集错误率,从中简要的分析 Ada boost 算法的特性。 仿真结果如下图所示:
图 2-1 【实验分析】 通过多组实验,我们得出 Ada boost 的两个特性: 1、训练错误率的上界随着训练次数的增加 (弱分类器的增多) , 会逐渐下降。 关于这个结论,我们在文献中有找到数学上的证明。 2、即使训练次数很多,也不会出现过拟合的问题:通常说,过拟合是指随 着模型训练误差的下降,实际上,模型的泛化误差(测试误差)在上升。在上述 实验中,可以观察到 Ada boost 算法并没有出现这样的情况,即当训练误差小到 一定程度后,继续训练,泛化误差仍然不会增加。
【算法框架】 for t=1,2,…,T 1、从数据集 S 中取样(放回选样)训练得到模型 Ht。 2、对未知样本 X 分类时,每个模型 Ht 都得出一个分类,得票最高的即为未 知样本 X 的分类。 3、也可通过得票的平均值用于连续值的预测 for end
【仿真实验】 采用 diabetes 数据集,分量分类器的构造分别采用决策树和 KNN(K=10), 进行 10 次实验,比较分类结果如下表所示: 实验次数 1 2 3 4 5 6 7 8 Bagging-决策树 0.242188 0.279274 0.262188 0.269579 0.247840 0.226101 0.226101 0.252188 Bagging-KNN 0.305360 0.286970 0.282622 0.347838 0.334795 0.308708 0.300013 0.343490
,
yi Y {1, 1}
,
初始化样本权重 算法框架如下:
Dt (i ) 1/ m
表示第 t 次训练中第 i 个样本的权重,
For t=1...T 进行 T 次训练,每次训练产生一个最优弱分类器 将弱学习算法在当前的权重分布
X {1, 1} Dt Dt h 进行训练,得到弱分类器 t :
更新样本权重: 其中
Zt
,
是归一化使所有样本权重之和为 1 的归一化因子
For end
H ( x) sgn( t ht ( x))
t 1 T
经过 T 轮训练,得到最终的分类器
【仿真实验】 为了便于画图,我们采用随机生成的数据集,具有两维特征,横坐标大于纵 坐标的为正类,反之为负类。共生成训练样本 200 个,测试样本 200 个,最大训 练次数 20,即最多生成 20 个弱分类器,弱分类器的构造采用阈值分类算法。对
计算该弱分类器在权值
下的错误率:
t Dt (i )[ht ( xi ) yi ]
i 1
m
1 1 t t ln( ) 2 t 计算该弱分类器的权重:
Dt (i ) e t | ht ( xi ) yi Dt (i ) exp( t yi ht ( xi )) Dt 1 (i ) Zt Zt e t | ht ( xi ) yi
【算法分析】 Bagging 方法中,各学习器的训练集由从原始训练集中随机选取若干示例组 成,训练集 的规模通常与原始训练集相当,训练示例允许重复选取。这样,原始训练集中某 些示例可 能在新的训练集中出现多次,而另外一些示例则可能一次也不出现。Bagging 方 法通过重新 选取训练集增加了集成学习的差异度,从而提高了泛化能力。 Breiman 指出,稳定性是该算法能否发挥作用的关键因素,Bagging 能提高 不稳定学习算法的预测精度, 而对稳定的学习算法效果不明显,有时甚至使预测
精度降低。 如果训练数据的较小变化, 就能够导致分类器的显著改变,以及分类准确率 的较大变化,那么这种分类或学习算法就可以被非正式的称为“不稳定” 。例如 使用“贪心算法”训练的判定树,就有可能是不稳定的—仅仅由于单个样本点的 位置微小变化,都有可能导致最后的判定树完全不同,一般说来,Bagging 算法 能够提高“不稳定”分类器的识别率,因为它相当于对不连续处进行了平均化处 理。 然而并没有理论推导或仿真实验表明它可以适用于所有的 “不稳定” 分类器。
人工智能实验(三) Random Forest 算法
【实验目的】 熟悉 Random Forest 算法原理、框架及应用。通过 weka 工具包的仿真并与 bagging 方法和决策树 J48 的结果进行比较,分析 Random Forest 的性能。
【算法思想】 Random Forest( RF) 是利用 bootsrap 重抽样方法从原始样本中抽取多个样本, 对每个 bootsrap 样本进行决策树建模, 然后组合多棵决策树的预测, 通过投票得 出最终预测结果。RF 通过构造不同的训练集增加分类模型间的差异, 从而提高 组合分类模型的外推预测能力。
《人工智能》实验报告(一)
人工智能实验(一) Bagging 算法
【实验目的】 熟悉 Bagging 算法原理、 框架及应用场景, 并在 Matlab 中采用 Bagging 算法 对数据集进行进行分类,分析在同一数据集下,不同的弱学习算法产生的结果。
【算法思想】 从大小为 N 的原始数据集 D 中,分别独立随机地抽取 n 个数据(n<N)形 成自助数据集, 并且将这个过程独立进行许多次,直到产生很多个独立的自助数 据集。然后,每一个自助数据集都被独立地用于训练一个“分量分类器” ,最终 的分类判决将根据这些“分量分类器”各自的判决结果投票来决定。通常,这些 分量分类器的模型形式都是一样的,例如,他们可能是都是 HMM 分类器,或者 都是神经网络分类器,或者都是判定树,等等。当然它们的具体模型参数可能不 同,这是由于各自的训练集的不同而引起的。 Bagging 算法是一个“多分类器系统” ,其中,最后的分类结果取决于许多 分量分类器的输出。而 Bagging 算法中的最基本的判决规则,就是对各个分量分 类器的判决结果使用投票表决原则。
人工智能实验(二) Ada boost 算法
【实验目的】 熟悉 Ada boost 算法原理、框架及应用场景,并在 Matlab 中采用 Ada boost 算法对数据集进行进行分类,分析算法特性。
【算法思想】 针对同一个训练集合训练出不同的分类器(弱分类器) ,然后把这些弱分类 器集合起来,构成一个性能更加强大的分类器(强分类器) 。强分类器对数据进 行分类,是通过弱分类器采用加权投票机制进行的。