1 00:00:16,320 --> 00:00:21,930 大家好!上节课我们学习了训练和测试。 2 00:00:21,930 --> 00:00:29,820 我们学习了通过独立的测试数据评估分类器;或者通过百分比分割, 3 00:00:29,820 --> 00:00:35,730 把数据集分为训练和测试数据; 4 00:00:35,730 --> 00:00:41,230 或者(这是一个非常不好的做法)使用训练数据来自我评估, 5 00:00:41,230 --> 00:00:45,550 这会导致过于乐观的结果。 6 00:00:45,550 --> 00:00:51,820 这节课,我们将继续拓展训练和测试的内容。 7 00:00:51,820 --> 00:01:03,640 实际上,我们要通过使用百分比分割来重复训练和测试的操作。 8 00:01:03,640 --> 00:01:08,420 上节课中我们看到,如果简单重复训练和测试, 9 00:01:08,420 --> 00:01:13,610 只会得到同样的结果,因为每次运行Weka都会初始化随机数生成器, 10 00:01:13,610 --> 00:01:18,500 这样可以保证当你明天做同样的测试时,也会得到相同的 11 00:01:18,500 --> 00:01:19,220 结果。 12 00:01:19,220 --> 00:01:22,090 但是,我们也可以重新设置。 13 00:01:22,090 --> 00:01:28,820 我们可以用不同的随机数来 14 00:01:28,820 --> 00:01:34,210 把数据集分割为训练和测试数据。 15 00:01:34,210 --> 00:01:37,780 载入segment-challenge数据集。 16 00:01:37,780 --> 00:01:40,130 我们之前已经用过这个数据集。 17 00:01:40,130 --> 00:01:44,700 可以看到这里有1500个实例, 18 00:01:44,700 --> 00:01:45,720 非常多。 19 00:01:45,720 --> 00:01:48,640 点击Classify, 20 00:01:48,640 --> 00:01:54,540 选择J48,我们最常用的分类器。 21 00:01:54,540 --> 00:02:00,710 我要用percentage split。因为我们有多达1500个实例,我要 22 00:02:00,710 --> 00:02:05,320 设定90%为训练数据,10%为测试数据。 23 00:02:05,320 --> 00:02:12,070 10%,150个实例,足够我们做合理的评估。 24 00:02:12,070 --> 00:02:16,720 我们可以尽可能多地运行以找到更为精确的分类器。 25 00:02:16,720 --> 00:02:25,520 点击开始,得到了和上次课中一样的精确度, 26 00:02:25,520 --> 00:02:27,740 96.6667%, 27 00:02:29,340 --> 00:02:34,940 一个误导性的高精确度。 28 00:02:34,940 --> 00:02:41,000 也可以说是96.7%,或0.967。 29 00:02:41,000 --> 00:02:45,560 我要再做一次,看看每次初始化随机数生成器 30 00:02:45,560 --> 00:02:49,500 为不同数字的不同结果。 31 00:02:50,460 --> 00:02:57,460 打开More options菜单,这里有很多有用的选项: 32 00:02:57,770 --> 00:03:00,150 Output model, 33 00:03:00,150 --> 00:03:01,680 Output statistics, 34 00:03:01,680 --> 00:03:03,890 Output evaluation measures, 35 00:03:03,890 --> 00:03:05,770 Output confusion matrix, 36 00:03:05,770 --> 00:03:08,060 Store predictions for visualization, 37 00:03:08,060 --> 00:03:10,860 Output presictions, 38 00:03:10,860 --> 00:03:14,370 Cost-sensitive evaluation。 39 00:03:14,370 --> 00:03:20,980 我们还可以设置随机种子,做交叉验证或百分比分割。 40 00:03:20,980 --> 00:03:22,300 随机种子的默认值为1。 41 00:03:22,300 --> 00:03:26,170 改为2,不同的随机种子。 42 00:03:26,170 --> 00:03:31,490 我们还可以输出分类器的源代码, 43 00:03:31,490 --> 00:03:32,950 但现在我只想更改随机种子。 44 00:03:32,950 --> 00:03:35,450 再次运行。 45 00:03:35,450 --> 00:03:42,450 之前,得到的准确度是0.967,这次是0.94,94%。 46 00:03:43,180 --> 00:03:45,310 可以看出,很不同。 47 00:03:45,310 --> 00:03:52,090 然后再改为3,再次运行。 48 00:03:52,090 --> 00:03:53,900 又得到94%。 49 00:03:53,900 --> 00:04:03,830 改为4,运行,得到96.7%。 50 00:04:03,830 --> 00:04:05,200 再试最后一次。 51 00:04:05,200 --> 00:04:12,200 改为5,运行,得到95.3%。 52 00:04:14,330 --> 00:04:15,710 这就是包含这些准确率的表格。 53 00:04:15,710 --> 00:04:21,480 如果我们运行10次,就会得到这样一组数据。 54 00:04:21,480 --> 00:04:26,330 有了实验数据,就可以计算平均值和标准差。 55 00:04:26,330 --> 00:04:33,770 样本的平均值是所有的准确率 56 00:04:33,770 --> 00:04:37,200 除以样本数,也就是10。 57 00:04:37,200 --> 00:04:41,760 得到0.949,接近95%。 58 00:04:41,760 --> 00:04:43,290 这是我们期望得到的数值, 59 00:04:43,290 --> 00:04:46,910 比之前得到的96.7%好得多。 60 00:04:46,910 --> 00:04:49,460 这是一个较为可信的估计。 61 00:04:49,460 --> 00:04:51,420 我们可以计算样本的标准差。 62 00:04:51,420 --> 00:04:57,200 样本方差等于构成样本的这些数值减去平均值的 63 00:04:57,200 --> 00:05:02,560 平方和,除以n-1,而不是n。 64 00:05:02,560 --> 00:05:04,730 你也许很难理解这点。 65 00:05:04,730 --> 00:05:11,730 使用n-1做除数,是因为我们已经计算了样本的平均值。 66 00:05:12,650 --> 00:05:19,060 n-1做除数,相比n而言, 67 00:05:19,060 --> 00:05:22,090 会得到较大的样本方差。 68 00:05:22,090 --> 00:05:32,740 标准差是方差的算术平方根,这里等于1.8%。 69 00:05:32,740 --> 00:05:39,190 现在我们可以看到对于数据集segment-challenge, 70 00:05:39,190 --> 00:05:44,460 J48可以得到约95%的准确率,加或减大约2%, 71 00:05:44,460 --> 00:05:50,550 即93%到97%的准确率。 72 00:05:50,550 --> 00:05:55,470 你会发现,从Weka中得到的数据有误导性。 73 00:05:55,470 --> 00:06:04,720 你需要小心地解读它,结果当然不是95.333%。 74 00:06:04,720 --> 00:06:08,550 这些数据会有很大的变化。 75 00:06:09,900 --> 00:06:13,870 记住,最基本原理是训练数据和测试数据是从相同的无限总体中 76 00:06:13,870 --> 00:06:18,940 取出的独立样本。结果自然会有误差, 77 00:06:18,940 --> 00:06:21,660 也许不只是微小的误差。 78 00:06:21,660 --> 00:06:27,680 我们通过来设定随机种子和重复实验来 79 00:06:27,680 --> 00:06:29,520 估算误差。 80 00:06:29,520 --> 00:06:33,520 我们还可以通过实验计算平均值和标准差。 81 00:06:33,520 --> 00:06:34,240 也就是我们刚才做的。 82 00:06:35,270 --> 00:06:38,740 现在,课程结束了。请大家完成课程的相关练习。 83 00:06:39,140 --> 00:06:40,240 下次课见! 84 00:06:40,540 --> 00:06:42,090 再见!