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 请大家完成本课的课后练习。再见!