mhout in action : 13.4.1 阶段1(训练分类模型)的流程

边看边译.

13.4.1 阶段1(训练分类模型)的流程

 

在分类项目的第一个阶段, 你需要把目标变量记在心里, 这既能帮助你选择合适的历史数据(用于训练过程), 也能帮你选择合适的算法. 这些选择密切相关.

在下面的讨论中, 我们将考察几个特定的例子,  在这些例子中,你选择的特性(feature)将会影响哪一个mahout学习算法在你的分类器中可以工作。

为目标变量定义分类:

定义目标变量,带出定义目标变量分类。目标变量并不是一个开放集合。你对分类的选择,会影响你对学习算法的选择,因为一些算法只适用于二元目标变量。强烈推荐较少的目标变量分类,如果你可以把目标变量分类减少到只有两个值,就可以使用更多的学习算法。

如果目标变量“抵制”缩减为简单形式,你可能需要建立多个分类系统, 每个针对某个方面的目标变量。在最终的系统中,你可以把上述分类系统的输出结合,生成你需要的选择或预测。

收集历史数据

你选择的历史数据源会因为需要通过已知值(为目标变量使用的)收集历史数据而被部分地导向。对于某些问题,困难在于确定目标变量的值。

俗语“垃圾导向垃圾”用到这里很贴切,需要特别关注确保历史数据的目标变量的值是正确的。许多忠实复制错误目标变量或者数据收集过程机制的模型都已经有了,你不肯定不想再建一个。

定义预测变量

选择好目标变量、定义了目标变量的值的集合之后,你需要定义预测变量。这些变量是从培训和测试例子中抽取的特征的具体编码。

再次强调,你需要检查你的例子,确信它们包含有用的特征,这些特征的值在记录中可以保存成合适的格式。就象你在图13.3中看到的, 预测变量出现在培训数据、测试数据和生产数据的记录中。

警告 选择和定义预测变量中的错误,将在预测变量中包含所谓的“目标泄露”问题。定义预测变量时一个重要的考虑就是避免“目标泄露”。正如其名,目标泄露是一个缺陷;在选择预测变量时,该缺陷引入了与目标变量无关的数据。该缺陷不能与在训练记录中加入目标变量混为一谈。

目标泄露严重影响分类系统的准确性。当你告诉分类器(classifier)目标变量是预测变量,这个问题会相对明显,显而易见的错误更易伤人。

目标泄露也可能不易察觉。设想你在建立一个垃圾邮件拦截器,你把垃圾邮件例子和非垃圾邮件的例子保存在不同的文件中,然后在每个文件中为样本顺序加标签(label the examples sequentially within each file)。同一文件的样本的连续的序号会局限在一个范围内并拥有相同的垃圾邮件状态和非垃圾邮件状态。这种类型的目标泄露,许多分类算法会很快计算出spam和non-spam序号的范围,并找到一个特征(因为该特征,在训练数据中,表现得完全可靠)。这就是问题所在。当你把新的数据输入模型,该模型完全基于序号,模型的最佳做法就是啥也不做(throw up its hands), 因为新样本中的序号会在前面所说的序号范围之外。最可能的情况,模型会把新的样本归于任一个有最高序号的范围。

目标泄露有可能很隐蔽,难于发现。最好的建议是,对效果太好的模型保持怀疑。

例1:使用位置作为预测变量

让我们看一个简单的例子,使用综合数据举例说明怎么选择预测变量以使Mahout模型准确预测目标变量。图13.4中的数据是历史数据的集合。假定你要搜索填充图形--颜色填充是你的目标变量。对这个问题,什么特征是最好的预测变量呢?

图13.4 使用位置区分颜色填充形状: 本例的历史数据中,目标变量是颜色填充,可以用做预测变量的特征包括形状和位置。位置看起来比较靠普,水平(X)座标就足够了。形状并不敏感。

 

对分类问题,你必须为你的目标变量选择分类,当前实例的是颜色填充。 颜色填充是一个明确的分类,有两个可能的值,你可以打上“填充”和“未填充”标签。或者你可以把目标变量设置为一个问题“该图形填充了吗?”,答案是“yes”,“no”。

任何事都不要想当然:要检查历史数据,确信该数据包含目标变量。这里这一点比较明显,确信无误(好!),但是现实世界的情况,并不总是明显的。

现在你必须选择用作预测变量的特征。什么特征比较合适呢?“颜色填充”已经out了(它是目标变量),但你可以使用位置或者形状作为变量。你可以通过x,y座标描述位置。你可以为每一个样本创建一个记录,包括目标变量的字段、你考察的预测变量的字段。图13.5显示了两个训练样例的记录。(这个例子的完整数据可以在Mahout的例子模型中找到。)

再次审视图13.4中的历史数据,你会发现,虽然训练数据拥有位置和形状信息,但是x座标足以区分填充和非填充图形。形状和y座标则都做不到。

小提示: 并非所有特征对每一个分类问题都有用。特定环境和你要解决的问题确定哪些特征可以成为预测变量。研究你的数据很关键。

当你设计分类系统的时候,你会根据你的经验选择最有效的特征,你的模型的准确率会说明你的选择是否明智。但是越少包含多余或者无用的特征,你的分类器的越准确。例如,图13.4中的数据,你最好只使用x座标,忽略y座标和形状。

图13.5 两个训练数据记录。  图13.4中的数据的记录拥有以下字段:目标变量的,预测变量的。在这个例子中,与位置相关的值(x,y座标)和形状相关的值包含在两条样本的每一条中。

例2:不同数据需要不同的预测变量

因为新的数据集证明,与以前的数据集拥有同样的特征,并不意味着你应该使用与之前数据集同样的特征,作为预测变量。图13.6说明了这个观点。这里你可以看到另一个历史数据的集合,该集合拥有与图13.4中的数据相同的特征。但是,在此例中,x或者y座标都不能预测图形是否填充。位置不在有用,但是形状现在成了有用的特征。

本例中,预测变量(形状)的特征有三个值(圆形、三角形、方形)。如果必要,你还可以通过方向进一步区分形状(方形-->钻石形;朝上三角形--〉朝下三角形)。

给训练模型选择学习算法

在任何项目中,考虑到参数,诸如训练数据的量、预测变量的特性、目标变量的分类数,你都必须选择使用哪一个算法。Mahout的分类算法包括:朴素贝叶斯,补充朴素贝叶斯随机梯度下降(SGD随机森林。朴素贝叶斯,补充朴素贝叶斯随机梯度下降(SGD)在第14章详述(14.5节)。

 

 

 

 

 

 

发布了30 篇原创文章 · 获赞 6 · 访问量 13万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章