﻿1
00:00:16,520 --> 00:00:23,450
大家好！欢迎来到Weka与数据挖掘。这里是新西兰。

2
00:00:23,450 --> 00:00:26,780
在第四部分,我们来学习一些很酷的机器学习方法。

3
00:00:26,780 --> 00:00:33,210
我们将要学习线性回归、回归分类、逻辑回归、

4
00:00:33,210 --> 00:00:38,210
支持向量机和集成学习法。最后几个是当代的方法，

5
00:00:38,210 --> 00:00:42,000
问世不久，是最先进的机器学习

6
00:00:42,000 --> 00:00:43,390
方法。

7
00:00:43,390 --> 00:00:49,960
记得吗，这门课共5部分，下周是第五部分，也就是最后一部分。

8
00:00:49,960 --> 00:00:56,260
我们会整理、总结学过的知识。我们已经学了过半的内容，

9
00:00:56,260 --> 00:00:59,210
大家都做得不错，只需要坚持下去。

10
00:00:59,210 --> 00:01:05,420
这节课，我们将要学习不同机器学习方法的分类边界。

11
00:01:05,420 --> 00:01:10,470
我们将要使用Weka的Boundary Visualizer（分界可视化工具），

12
00:01:10,470 --> 00:01:12,690
一个新的Weka工具。

13
00:01:12,690 --> 00:01:16,080
我们来看一个二维数据集，

14
00:01:16,080 --> 00:01:26,170
iris.2d.arff。这是鸢尾花数据集的二维版本。

15
00:01:26,170 --> 00:01:31,170
我删除了两个鸢尾花数据集的属性 

16
00:01:31,170 --> 00:01:36,920
（花萼长和花萼宽） 得到这个二维数据集，以及鸢尾花的种类。

17
00:01:36,920 --> 00:01:44,850
我们来使用Boundary Visualizer。点击Weka Chooser，就可以看到

8
00:01:44,850 --> 00:01:51,409
可视化菜单。Weka包含很多工具，我们

19
00:01:51,409 --> 00:01:57,009
现在只用Boundary Visualizer。我要使用Boundary Visualizer

20
00:01:57,009 --> 00:02:06,000
打开同样的文件，二维鸢尾花数据集。这里我们可以看到数据的图形。

21
00:02:06,000 --> 00:02:11,200
花瓣宽是y轴，花瓣长是x轴。

22
00:02:11,200 --> 00:02:17,489
这就是这个数据集的可视化图，图中有三种鸢尾花：红色是鸢尾花setosa，绿色是versicolor，

23
00:02:17,489 --> 00:02:20,859
蓝色是virginica。

24
00:02:20,859 --> 00:02:26,309
下面来选分类器，首先使用OneR分类器，在rules目录下。

25
00:02:30,700 --> 00:02:33,700
我们用训练数据作图，等它散开。

26
00:02:34,880 --> 00:02:41,420
这个有色图标显示了决策分界线，而训练数据叠加在分界之上。

27
00:02:43,489 --> 00:02:44,260
我们来看

28
00:02:44,260 --> 00:02:51,260
Explorer中OneR是如何处理这个数据集的。

29
00:02:53,220 --> 00:02:56,380
OneR选择从花瓣宽分支。

30
00:02:56,389 --> 00:03:00,140
如果花瓣宽小于某个值，就是鸢尾花setosa；如果值居中，就是鸢尾花versicolor；

31
00:03:00,140 --> 00:03:02,769
如果高于上限，就是鸢尾花virginica。

32
00:03:02,769 --> 00:03:08,949
这和图中标示的一样。我们以花瓣宽分支。如果小于

33
00:03:08,949 --> 00:03:14,650
某个值，就是鸢尾花setosa；如果值居中，就是鸢尾花versicolor；

34
00:03:14,650 --> 00:03:16,790
如果在顶端，就是鸢尾花virginica。

35
00:03:17,850 --> 00:03:22,379
这就是OneR产生的决策分界线的空间表示法，

36
00:03:22,379 --> 00:03:26,069
即Boundary Visualizer的功能，标示决策分界线。

37
00:03:26,069 --> 00:03:30,859
它显示OneR在这里选择一个属性（花瓣宽度）分支。

38
00:03:30,859 --> 00:03:35,309
它还可以选择花瓣长度，那么我们就会得到纵向的决策分界线。

39
00:03:35,309 --> 00:03:40,669
不论哪种方式，我们都会通过OneR得到些条形。

40
00:03:40,669 --> 00:03:45,779
我们再来看一些其他分类器的分界线。

41
00:03:45,779 --> 00:03:50,790
我们来看IBk，一个lazy分类器。

42
00:03:50,790 --> 00:03:55,629
这是上一部分我们讲到的基于实例的分类器。

43
00:03:55,629 --> 00:03:58,749
运行。

44
00:03:58,749 --> 00:04:02,139
我们得到了不同的图形。

45
00:04:02,139 --> 00:04:03,489
先来停止运行。

46
00:04:03,489 --> 00:04:05,849
我们得到了对角线图形。

47
00:04:05,849 --> 00:04:12,409
这条对角线下是鸢尾花setosa，中间区域是鸢尾花versicolor，

48
00:04:12,409 --> 00:04:16,979
而鸢尾花virginica大体在右上角。

49
00:04:16,979 --> 00:04:18,979
这就是IBK的工作原理。

50
00:04:18,979 --> 00:04:21,759
它根据一个测试实例。

51
00:04:21,759 --> 00:04:28,800
比方说这个实例，在分界线的这边，红色的区域。

52
00:04:28,900 --> 00:04:31,810
然后，IBK选择离它最近的实例。

53
00:04:31,810 --> 00:04:36,150
我猜是这个点。

54
00:04:36,150 --> 00:04:38,199
比那个点近些。

55
00:04:38,199 --> 00:04:38,939
这是一个红点。

56
00:04:38,939 --> 00:04:45,449
如果跨越分界线去找，它会选择绿色分类，

57
00:04:45,449 --> 00:04:47,169
因为绿色是最近的实例。

58
00:04:47,169 --> 00:04:54,110
如果你认真去看，会发现这条分界线划在最近的红点和

59
00:04:54,110 --> 00:04:55,780
绿点之间。

60
00:04:55,780 --> 00:05:01,689
同样的，如果在这里找一个点，我想最近的两个实例会是这个蓝点

61
00:05:01,689 --> 00:05:03,659
和这个绿点。

62
00:05:03,659 --> 00:05:05,710
蓝点更近一些。

63
00:05:05,710 --> 00:05:08,710
这回，分界线沿着这条直线。

64
00:05:08,710 --> 00:05:14,669
可以看到这不只是一条线，而是逐段的线。

65
00:05:14,669 --> 00:05:19,189
分界线的这部分穿过离它最近的两点中间。

66
00:05:19,189 --> 00:05:24,300
再往下，分界线穿过这两点的正中间。

67
00:05:24,300 --> 00:05:27,949
它是两点连线的中垂线。

68
00:05:27,949 --> 00:05:31,990
我们得到的是由一小段一小段组成的是逐段线性分界线。

69
00:05:31,990 --> 00:05:36,919
如果我们改变参数，结果会很有趣：如果我们

70
00:05:36,919 --> 00:05:41,849
把最近的点数改为5，而不是1。

71
00:05:41,849 --> 00:05:53,870
现在我们得到了一张稍微模糊的图表，因为在下面纯红的区域

72
00:05:53,870 --> 00:06:00,199
距离这点最近的5个点都是红点。如果我们看中间区域，

73
00:06:00,199 --> 00:06:05,520
离这点最近的点为（这会是5个点中之一），

74
00:06:05,520 --> 00:06:08,969
这可能是另一点，可能还有两三点在这里。

75
00:06:08,969 --> 00:06:14,509
这里是过渡色，IBK投票来决定。

76
00:06:14,509 --> 00:06:21,400
如果有三个红点、两个绿点，就会是红色区域，

77
00:06:21,400 --> 00:06:24,659
也就是这个深红色的区域。

78
00:06:24,659 --> 00:06:29,300
反之，如果绿点比红点多，就会是绿色区域。

79
00:06:29,300 --> 00:06:33,710
因此，我们会得到模糊的分界。

80
00:06:33,710 --> 00:06:36,979
这就是对分界的概率化的描述。

81
00:06:36,979 --> 00:06:43,979
我们来把k值改为20，看会发生什么。

82
00:06:46,949 --> 00:06:52,219
现在我们得到了同样的形状，但分界更为模糊。

83
00:06:52,219 --> 00:06:57,469
如果你愿意，我们可以说分界可视化显示了

84
00:06:57,469 --> 00:06:58,210
机器学习法的工作原理。

85
00:06:58,210 --> 00:07:02,180
是数据集的内在形式的表达。

86
00:07:02,180 --> 00:07:08,520
可视化帮助我们像机器学习法一样思考。

87
00:07:08,520 --> 00:07:11,340
我们来选择另一种方法，

88
00:07:11,340 --> 00:07:13,529
NaiveBayes。

89
00:07:13,529 --> 00:07:19,529
当介绍NaiveBayes时，我们只提到过离散属性。

90
00:07:19,529 --> 00:07:27,000
针对连续属性，我们要选择一个监督离散方法（supervised discretization method）。

91
00:07:27,009 --> 00:07:32,550
不用担心这些细节，这是使用NaiveBayes处理数值属性的

92
00:07:32,550 --> 00:07:34,720
最常用的方法。

93
00:07:36,120 --> 00:07:38,430
我们来看图表。

94
00:07:40,120 --> 00:07:41,370
非常有意思。

95
00:07:41,370 --> 00:07:46,080
NaiveBayes认为两个属性

96
00:07:46,080 --> 00:07:48,550
平等而独立地参与决策。

97
00:07:48,550 --> 00:07:53,099
它算出针对这个属性的值和针对另一个属性的值

98
00:07:53,099 --> 00:07:56,490
再把两者相乘。

99
00:07:56,490 --> 00:08:00,499
还记得NaiveBayes中乘法么。

100
00:08:00,499 --> 00:08:05,499
当相乘这些数时，我们用一个概率的棋盘格局，

101
00:08:05,499 --> 00:08:06,840
来将它们相乘。

102
00:08:06,840 --> 00:08:10,289
这是因为所有属性都被认为是独立的。

103
00:08:10,289 --> 00:08:16,629
这和我们之前见到的基于实例的方法的决策分界线完全不同。

104
00:08:16,629 --> 00:08:21,370
这就是分界可视化的好处，它可以帮助我们思考

105
00:08:21,370 --> 00:08:21,870
内部的运作方法。

106
00:08:21,870 --> 00:08:24,809
我们再来看一个例子。

107
00:08:24,809 --> 00:08:30,650
我要用J48，在trees目录下。

108
00:08:30,650 --> 00:08:37,650
我们得到了这样的图形。

109
00:08:39,190 --> 00:08:46,190
选择J48，来看Explorer中的处理结果。

110
00:08:48,230 --> 00:08:55,230
我们来看这个小决策树，首先以花瓣宽分支，如果值小于0.6，

111
00:08:57,300 --> 00:08:59,260
就是鸢尾花setosa。

112
00:08:59,260 --> 00:09:05,620
再以花瓣宽分支，如果值大于1.7,就是鸢尾花virginica。

113
00:09:05,620 --> 00:09:11,540
然后，在中间，先以花瓣长，再以花瓣宽分支，得到

114
00:09:11,540 --> 00:09:14,339
鸢尾花versicolor和鸢尾花virginica的混合。

115
00:09:14,339 --> 00:09:20,010
我们先以花瓣宽划分，就是这个分支。

116
00:09:20,010 --> 00:09:22,690
竖轴表示花瓣宽。

117
00:09:22,690 --> 00:09:26,510
如果小于这个值，就是鸢尾花setosa。

118
00:09:26,510 --> 00:09:28,930
然后我们在同一个坐标轴再次划分。

119
00:09:28,930 --> 00:09:32,899
如果大于这个值，就是鸢尾花virginica。

120
00:09:32,899 --> 00:09:38,980
如果在中间区域，我们以另一个轴划分，也就是花瓣长。

121
00:09:38,980 --> 00:09:47,000
这个区域是鸢尾花versicolor。我们再以花瓣宽划分。

122
00:09:49,670 --> 00:10:04,700
我们来更改参数minNumObj，它控制叶节点最小实例数。

123
00:10:04,709 --> 00:10:08,430
如果加大，会得到一个较简单的树。

124
00:10:08,430 --> 00:10:12,100
我们在第三部分的某节课中讲到过这个参数。

125
00:10:12,100 --> 00:10:19,100
运行，得到一个较为简单的树，和通过这个参数得到的

126
00:10:19,209 --> 00:10:20,399
较为简单的规则一致。

127
00:10:20,399 --> 00:10:27,399
我们还可以给参数设更大的值，例如10，再次运行。

128
00:10:28,610 --> 00:10:34,089
我们得到更为简单的规则，和OneR产生的规则很相似。

129
00:10:37,200 --> 00:10:40,410
我们学习了分类分界线。

130
00:10:40,410 --> 00:10:45,990
分类器在实例空间创建分界线，不同的分类器

131
00:10:45,990 --> 00:10:48,410
创建实例空间的方式不同。

132
00:10:48,410 --> 00:10:53,630
这就叫做分类器的偏差 （不同的创建实例空间

133
00:10:53,630 --> 00:10:56,560
的方法）。

134
00:10:56,560 --> 00:11:02,300
我们学习了OneR、IBk、NaiveBayes和J48，看到了完全不同的偏差，

135
00:11:02,300 --> 00:11:04,579
完全不同的创建实例空间的方式。

136
00:11:04,579 --> 00:11:11,440
当然，这种可视化仅限数值属性和二维视图。

137
00:11:11,440 --> 00:11:17,529
这不是一个可以广泛使用的工具，但却能够帮助你学习不同的分类器。

138
00:11:17,529 --> 00:11:23,930
请阅读教材17.3章分类边界。

139
00:11:23,930 --> 00:11:27,840
请做这节课的课后练习。

140
00:11:27,840 --> 00:11:29,220
祝好运！回头见！

141
00:11:29,220 --> 00:11:30,400
再见！
