大家好！这是Weka在数据挖掘中的运用的第三部分，在这部分
我们将学习些简单的机器学习方法，了解它们的工作原理。
我们要再次强调简单的算法通常能取得很好的效果。
在数据挖掘中，也如同在生活中，
在试复杂的事之前，你应先试一试简单的。
简单的形式有多种。
例如，数据集中有一个起决定作用的属性，
或有一个起决定作用的属性的值。
或者，所有属性都起同样的，独立的作用。
或者，简单的形式是一个只使用一小部分属性的决策树
我们或许只用计算一个未知样本离最近的训练样本的距离。
或者，分析结果取决于属性的线性组合。
我们将在以后的几节课中学习这些简单的形式。
世上没有完美的机器学习算法。
机器学习算法的成功取决于适用的领域。
数据挖掘是一门试验性的科学。
我们来看一下OneR规则算法，
这里一个属性决定一切。
它实际上非常简单，琐细。
但我们从简单的开始，再到复杂的。
OneR创建所谓的一层决策树，
或者一组只检测某个属性的规则
一棵只在根节点根据某个属性值分叉的树，
或者，同样的，一组只检测某个属性值的规则。
OneR的基本版本是
每个属性值都有一个分支
我们选择从某个属性开始，
然后为它的每个值建立一个分支。
将这个分支所含最多的类作为它的分类。
错误率是在这个分支中不属于多数分类的
实例的比例。
我们选择错误率最小的属性。
我们来解释下它的原理。
算法是这样的。 Here's the algorithm.
我们为每个属性建立一组规则。
为每个属性值，
我们建立一个规则。 它累计每个分类出现的次数，
找出最多的分类。
这个规则由这个最多的分类和这个属性值组成。
然后，我们来计算这个规则的错误率。
我们对这个数据集的每一个属性重复这个过程，
然后选择错误率最低的属性。
这是天气（weather）数据集。
OneR用以上的方法为天气数据集的每一个属性，
展望（outlook）， 温度（temperature）， 湿度（humidity），和风速（wind）建立一组规则。
展望（outlook）有三个分类值：晴（sunny），阴（overcast），和雨（rainy）
我们计算在5个晴（sunny）的实例中，
有2个是yes，有三个是no。
我们来选一个规则，
如果是晴（sunny）选no，
在五个中有两个是错的。
对于阴（overcast）来说，展望是阴的四个实例的分类play的值都是yes
所以，我们选择这个规则，
如果展望是阴，选yes。这样我们的错误率是零。
最后，如果展望是雨（rainy），
我们也选yes，
这样在五个实例中两个是错的。
我们将得到4个错的如果我们用展望（outlook）分支，
我们可以用温度（temperature）分支，重复同样的过程。
如果温度（temperature）是热（hot），
有两个no和两个yes。
如果是平手，我们任选其一。
如果是热（hot），
我们来选no，有两个错误。
如果温度（temperature）是温和（mild），
我们选yes，六个中有两个错误，
如果温度（temperature）是冷（cool），
我们选yes，四个中有一个错误
对湿度（humidity）和风速（wind）重复同样的过程。
我们来看一下总错误率；我们选一个总错误率最低的，
要么是展望（outlook），要么是湿度（humdity）。
这是个平手，所以我们任选其一，
选展望（outlook）。
这就是OneR的原理。
就那么简单。
来试一下。
打开Weka。
载入名词性的天气数据。
选择分类器。
这是个非常简单的数据集，结果可能没多大意义。
如果我就以ZeroR开始，
我得到的错误率是64%。
我来选OneR，
运行一下。
我得到一个用展望（outlook）分支的规则
如果是晴（sunny）就选no，
阴（overcast）选no，雨（rainy）选yes。
用训练数据集，我们得到的结果是十四个实例中有十个正确。
我们用交叉验证法评估一下。
这对这么小的数据集不是太合理。
有意思的是，我们得到的正确率是42%，
非常糟糕，比ZeroR的差。
事实上，对二分类问题，
我们期望的正确率至少应该是50%。
抛硬币也能得到50%的正确率。
OneR算法在这个简单的数据集上的效果不是很好。
请注意，规则终于输出了，由于我们使用了10层交叉验证，
它共运行了10次，第十一次用整个数据集
来计算规则，这就是输出。
这就是这个规则如何生成的。
OneR，一个属性决定一切。
这是在1993年发表的一个简单的机器学习方法，
二十年前，它出现在一篇叫“一个非常简单的分类规则在多数常见的数据上取得好效果”
的文章中， 它由一个生活在
加拿大的叫Rob Holte的人提出。
他在16组常用的数据集上用OneR进行试验。
他用了我们教过你的交叉验证法，
他发现一些OneR产生的规则要比为这些数据集
专门设计的复杂得多的算法更有效。
为什么这么简单的方法会那么好呢？
有些数据集真的很简单，
其它的很小，杂乱，或复杂，
以至于很难从中找到规律。
所以，应该先试试最简单的。
课本的第4.1节介绍了OneR。
现在做一下课后的练习。
再见！