﻿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
再见！

