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 再见!