﻿1
00:00:15,920 --> 00:00:22,260
大家好！本课我们将学习一个非常重要的概念，基线精确度。

2
00:00:22,260 --> 00:00:30,610
我们将用一个新的数据集diabetes为例。

3
00:00:30,610 --> 00:00:37,260
打开Weka，载入diabetes.arff。

4
00:00:37,260 --> 00:00:38,600
好了。

5
00:00:39,000 --> 00:00:40,700
快速地浏览一下这个数据集。

6
00:00:40,700 --> 00:00:47,700
diabetes有两个类：tested_negative和tested_positive。

7
00:00:48,990 --> 00:00:55,670
我想，preg属性是代表调查对象怀孕的次数；

8
00:00:55,670 --> 00:00:59,020
age属性，也就是年龄。

9
00:00:59,020 --> 00:01:06,020
当然，我们可以通过查看ARFF文件本身更多地了解这个数据集。

10
00:01:07,590 --> 00:01:10,990
这就是数据集diabetes。

11
00:01:10,990 --> 00:01:14,020
你可以看到它是关于印第安人糖尿病的数据集。

12
00:01:17,500 --> 00:01:19,510
这里有很多相关的信息。

13
00:01:19,510 --> 00:01:26,510
属性有：怀孕的次数、血浆， 葡萄糖浓度，

14
00:01:26,510 --> 00:01:29,830
糖尿病家系函数， 等等。

15
00:01:31,070 --> 00:01:35,070
我将用百分比分割数据。

16
00:01:36,140 --> 00:01:38,970
我们将尝试用一些不同的分类器。

17
00:01:38,970 --> 00:01:45,970
先试一下我们熟悉的分类器J48。

18
00:01:50,380 --> 00:01:55,010
用J48，我们得到76%的精确度。

19
00:01:55,600 --> 00:01:57,280
再试其他的分类器。

20
00:01:57,280 --> 00:02:01,120
后面，我会介绍这些分类器，但是现在让我们

21
00:02:01,120 --> 00:02:02,600
先试着用一下。

22
00:02:02,600 --> 00:02:09,300
在bayes目录下找到“NaiveBayes”分类器，然后运行它。

23
00:02:09,300 --> 00:02:15,640
我们得到77%的准确度，高了一些，但并不显著。

24
00:02:15,640 --> 00:02:20,640
让我们选择一种懒惰分类器，IBK。

25
00:02:20,640 --> 00:02:25,170
再次说明，我们马上会讲到它。

26
00:02:25,170 --> 00:02:29,220
我们得到73%的精确度，这更加低了。

27
00:02:29,220 --> 00:02:36,220
我们再试最后一种分类器，规则目录下面的PART分类器。

28
00:02:40,110 --> 00:02:43,060
这次，我们得到74%的精确度。

29
00:02:43,060 --> 00:02:47,840
我们后面会讲到这些分类器，但现在只要知道它们是不同于

30
00:02:47,840 --> 00:02:49,750
J48的分类器。

31
00:02:49,750 --> 00:02:54,520
你可以看到J48和NaiveBayes的精确度是几乎是一样高。

32
00:02:54,520 --> 00:02:57,370
它们的精确度相差百分之一，可以说并不显著。

33
00:02:57,370 --> 00:03:00,110
IBk和PART的表现差不多。

34
00:03:00,110 --> 00:03:01,610
它们的精确度也是相差百分之一。

35
00:03:01,610 --> 00:03:06,720
我觉得第一组（J48和NaiveBayes）和第二组（IBk和PART）之间的差距是合理的，并且应该

36
00:03:06,720 --> 00:03:07,760
是显著的。

37
00:03:08,890 --> 00:03:10,900
我们来思考下这些数字。

38
00:03:10,900 --> 00:03:15,590
76%是否是一个令人满意的精确度呢？

39
00:03:15,590 --> 00:03:21,670
如果我们回到这个数据集，观察分类，

40
00:03:21,670 --> 00:03:28,720
我们会发现它包含500个negative的实例和268个positive的实例。

41
00:03:28,720 --> 00:03:35,720
如果让你猜一个实例的分类，你应该猜它是“negative”，这样你有500/768的能性是对的。

42
00:03:35,720 --> 00:03:38,800
（negative和“positive实例的总和，一共是768）。

43
00:03:39,000 --> 00:03:41,390
你有这么大的概率会猜对。

44
00:03:41,390 --> 00:03:48,390
500/768，如果你总是猜“negative”，正确率将是65%。

45
00:03:48,950 --> 00:04:00,670
实际上，有一个叫ZeroR的分类器就是这么做的。

46
00:04:00,670 --> 00:04:07,670
ZeroR分类器找到能性最大的分类，然后总是猜这个分类。

47
00:04:08,420 --> 00:04:15,420
如果我们在训练数据上运行ZeroR，会得到一样的结果，500/768，

48
00:04:16,300 --> 00:04:17,330
65%。

49
00:04:19,470 --> 00:04:23,830
这是一种极其简单，以比例最大的类来分类

50
00:04:23,830 --> 00:04:25,650
的分类器。

51
00:04:25,650 --> 00:04:29,680
它可以用训练数据来评估，因为它几乎不用训练数据

52
00:04:29,680 --> 00:04:32,120
进行分类。

53
00:04:32,120 --> 00:04:37,240
这就是我们所说的基线。

54
00:04:37,240 --> 00:04:43,540
基线精确度是65%，分类器J48得到的精确度是76%。

55
00:04:43,540 --> 00:04:47,830
J48的结果明显高于基线精确度，但是高出的并不多。

56
00:04:47,830 --> 00:04:52,990
看以下最简单的分类器的精确度，也就是基线精确度，

57
00:04:52,990 --> 00:04:56,240
对于你评估分类器的精确度总是有帮助的。

58
00:04:56,240 --> 00:05:01,350
有时，基线精确度会是最好的结果。

59
00:05:01,350 --> 00:05:03,110
这里，我们载入一个数据集。

60
00:05:03,110 --> 00:05:05,050
我们不去研究这个数据集。

61
00:05:05,050 --> 00:05:11,660
这是个有一点奇怪的数据集，并不是用来进行分类的数据集。

62
00:05:11,660 --> 00:05:12,940
名字是supermarket。

63
00:05:12,940 --> 00:05:18,630
载入supermarket，我们不关心它的内容，直接

64
00:05:18,630 --> 00:05:19,950
应用一些分类器。

65
00:05:19,950 --> 00:05:26,930
应用ZeroR，我们得到精确度64%。

66
00:05:27,530 --> 00:05:32,130
应用J48。

67
00:05:34,530 --> 00:05:38,790
我们这里使用百分比分割进行评估，因为

68
00:05:38,790 --> 00:05:41,020
使用训练数据集评估并不公平。

69
00:05:41,020 --> 00:05:43,720
我们得到精确度63%。

70
00:05:43,720 --> 00:05:46,580
这比基线精确度还要低。

71
00:05:46,580 --> 00:05:48,180
如果我们应用NaiveBayes。

72
00:05:49,990 --> 00:05:53,520
这些是我们之前的结果。

73
00:05:53,520 --> 00:05:57,070
我们又得到精确度63%，比基线精确度还要低。

74
00:05:57,070 --> 00:06:04,070
如果选择IBk，这需要点时间，IBk分类器有点慢。

75
00:06:09,910 --> 00:06:11,670
好了，有结果了。

76
00:06:11,670 --> 00:06:13,500
精确度只有38%。

77
00:06:13,500 --> 00:06:17,010
这比基线精确度差多了。

78
00:06:17,010 --> 00:06:24,010
我们将尝试分类器PART，部分决策规则。

79
00:06:26,200 --> 00:06:28,000
这次，我们得到精确度63%。

80
00:06:30,160 --> 00:06:36,350
结果表明，实际上基线精确度比任何一种分类器的精确度都要高，

81
00:06:36,350 --> 00:06:41,580
而且IBk的精确度比基线精确度低的多。

82
00:06:41,580 --> 00:06:47,030
这是因为，对于这个数据集，属性并不作为分类的依据。

83
00:06:47,030 --> 00:06:52,310
这里要说的是，不要盲目地使用Weka分析任意的数据。

84
00:06:52,310 --> 00:06:54,900
你需要知道你在做什么。

85
00:06:54,900 --> 00:07:02,970
在你使用Weka之前，

86
00:07:02,970 --> 00:07:06,360
总是先尝试下基线分类器，ZeroR。

87
00:07:06,360 --> 00:07:09,100
一般来说，简单的是最好的。

88
00:07:09,100 --> 00:07:14,250
在尝试复杂的分类器前，先试一试简单的。

89
00:07:14,250 --> 00:07:18,210
并且，当精确度有微小的提高时，你需要考虑下这些提高

90
00:07:18,210 --> 00:07:19,830
是否是显著的。

91
00:07:19,830 --> 00:07:24,820
上节课中我们看到的1%的区别，就很可能并不显著。

92
00:07:24,820 --> 00:07:27,430
你应该去试一试简单的基线。

93
00:07:27,430 --> 00:07:29,180
你应该观察数据集。

94
00:07:29,180 --> 00:07:36,070
我们不应该盲目地使用Weka分析任意的数据，我们需要知道我们在做什么。

95
00:07:36,070 --> 00:07:37,140
这就是本课的内容。 

96
00:07:37,140 --> 00:07:44,140
请大家完成本课的课后练习。再见！
