大家好！很高兴又见面了。
我的业余爱好之一是演奏音乐，大家在课程开始前听到的
那一小段莫扎特的曲子
就是我和三个朋友演奏的单簧管弦乐四重奏。
我在一个交响乐团演奏的，昨天晚上我演奏了一些爵士三重奏。
如果你想听，可以在Google搜到我的个人主页。
输入我的名字，Ian Witten。
你会看到我的个人主页，而且每次你访问的时候，我都会为你演奏一段。
如果你刷新页面，我会演奏另一段。
这就是我。
不管怎样，这不是我们课程的内容。
我们开始学习2.6，关于交叉验证结果。
我们上节课，学习了交叉验证的原理。
我说过交叉验证是一种比重复预留法更好的
评估机器学习算法的方法。
交叉验证会评估10次。
你可以运行10次预留法，
但是交叉验证更好。
让我们做一个简单的实验。
打开Weka，载入diabetes数据集。
基线精确度，即ZeroR的精确度
（顺便提一下，rules/ZeroR是默认的分类器）
如果我们运行它，它用交叉验证法进行评估。
实际上，为了得到真实的基线，我们应该用训练数据集。
那就是我们简单猜测最有可能的分类所能达到的
正确率，在这个例子中是65.1%。
这就是基线精确度。
对于任何数据集，这是你要做的第一件事情。
我们在树分类器的目录下寻找J48。
在这里。
用10层交叉验证评估J48。
做这些只用了一秒钟。
结果是73.8%，我们可以像之前一样改变随机种子。
默认值是1，改为2。
再次运行。
结果是75%。
再试一次。
随机种子改为3，当然，我们可以输入任何值。
再运行，结果是75.5%。
幻灯片上这些数值是10个不同的随机种子的结果。
幻灯片上右手边那些是我得到的10个精确度，
73.8%，75.0%，75.5%，等等。
我们计算这些精确度的均值，得到74.5%，
计算样本标准差，
用以前用过的公式，得到0.9%，。
在我们计算预留法的均值和标准差之前，
我们先重复使用预留法10次。
这些是运行结果，如果你重复预留，即用90%的数据做
训练和10%的数据做测试，就像我们在10层交叉验证中做的一样。
我们将得到这些结果，求均值，会得到74.8%，
这和74.5%足够接近，但是我得到了一个更大的标准差。
相比较交叉验证的0.9%，4.6%大多了。
现在，你也许会问自己为什么用10层交叉验证。
使用Weka，我们可以用20层交叉验证或者其他值，我们只需在
cross-validation旁输入我们想要的份数。
所以，我们是可以用20层交叉验证的。
那样会将数据集分为20等份
并且重复20次。
拿出一份（做测试），用剩余95%的数据做训练，然后第21次
使用整个数据集。
所以，为什么是10，不是20呢？
这是一个很好的问题，
但没有太好的答案。
我们想要用大部分数据做训练，因为最终我们
将用整个数据集做训练。
如果我们采用10层交叉验证，那么我们用的是90%的数据做训练。
也许用95%的数据会更好一些，
采用20层交叉验证。
另一方面，我们想要确保
我们使用的是有效的统计样本。
所以，一般来说，分割较多份数进行交叉验证并不一定是好主意。
同时，当然20层交叉验证需要两倍的10层交叉验证时间。
结论是这个问题并没有一个好的答案，但标准的
做法是采用10层交叉验证，这就是为什么Weka的默认值是10。
本节课我们演示了交叉验证优越于重复预留法。
记住，在最后一页幻灯片上，我们看到交叉验证和重复预留法
有相同的的均值，但是交叉验证的误差要小得多。
我们知道了机器学习方法J48在数据集diabetes上达到的精确度
是74.5%，大约在73.5%和75.5%之间。
这远大于基线精确度。
所以，J48分类器比基线分类器更好。
交叉验证减少了估计的误差。
这节课就到这里，
请完成课后练习。
我们下节课见。
再见！