机器学习day10——机器学习的系统设计

以一个垃圾邮件分类器算法为例进行讨论。

如何使垃圾邮件分类算法具有高精确度和低错误率/h2>
  1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
  2. 基于邮件的路由信息构造一系列复杂的特征
  3. 基于邮件的正文信息构造一系列复杂的特征,包括考虑截词的处理
  4. 为探测刻意的拼写错误(把 watch 写成 w4tch)开发复杂的算法

误差分析

构建一个学习算法的推荐方法为:

  1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
  3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势

以我们的垃圾邮件过滤器为例,误差分析要做的是检验交叉验证集中我们的算法产生错误预测的所有邮件,看:是否能将这些邮件按照类分组。例如医药品垃圾邮件,仿冒品垃圾邮件或者密码窃取邮件等。然后看分类器对哪一组邮件的预测误差最大,并着手优化;或者发现是否缺少某些特征,记下这些特征出现的次数,例如记录下错误拼写出现了多少次,异常的邮件路由情况出现了多少次等等,然后从
出现次数最多的情况开始着手优化。

误差分析并不总能帮助我们判断应该采取怎样的行动。有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用数值来判断哪一个模型更好更有效,通常我们是看交叉验证集的误差。
例如:在 我 们 的 垃 圾 邮 件 分 类 器 例 子 中 , 对 于 “ 我 们 是 否 应 该 将discount/discounts/discounted/discounting 处理成同一个词如果这样做可以改善我们算法,我们会采用一些截词软件。误差分析不能帮助我们做出这类判断,我们只能尝试采用和不采用截词软件这两种不同方案,然后根据单一规则数值检验的错误率比较来判断哪一种更好。可以使用交叉验证的方式来测试两种方案,比较两种采用不同特征的方法的实际应用错误率,最终采用最低的一种特征方案。

总结一下,在研究一个新的机器学习问题时,总是推荐先实现一个较为简单快速、即便不是那么完美的算法(不要担心你的算法太简单,或者太不完美,而是尽可能快地实现你的算法),当你有了初始的实现之后,它会变成一个非常有力的工具,来帮助你决定下一步的做法;先看看算法造成的错误,通过误差分析,来看看他犯了什么错,然后来决定优化的方式;另一件事是:假设你有了一个快速而不完美的算法实现,又有一个**数值的评估数据,**这会帮助你尝试新的想法,快速地发现你尝试的这些想法是否能够提高算法的表现,从而你会更快地做出决定,在算法中放弃什么,吸收什么误差分析可以帮助我们系统化地选择该做什么。

类偏斜的误差度量

类偏斜情况表现为我们的训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。此时,用分类精确度并不能很好地衡量算法,非常高的精确度和非常低的错误率并不能意味着我们有效提高了分类模型的质量。我们希望有不同的误差度量值或者不同的评估度量值

例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有 0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有 0.5%。然而我们通过训练而得到的神经 络算法却有 1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。

查准率(Precision)和查全率(Recall)

我们将算法预测的结果分成四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 机器学习day10——机器学习的系统设计

    关于机器学习的数据集

    事实上,如果你选择任意一个算法,可能是选择了一个”劣等的”算法,如果你给这个劣等算法更多的数据,那么从这些例子中看起来的话,它看上去很有可能会其他算法更好,甚至会比”优等算法”更好。

    那么在什么情况下这种现象成立呢/h3>

    特征信息充足
    假如有这样一些假设,在这些假设下有大量我们认为有用的训练集,我们假设在我们的机器学习问题中,特征值??包含了足够的信息,这些信息可以帮助我们用来准确地预测Y。
    例如,如果我们采用了一些容易混淆的词,如:two、to、too,假如说它能够描述??,捕捉到需要填写的空白处周围的词语,那么特征捕捉到之后,我们就希望有对于“早饭我吃了__鸡蛋”,那么这就有大量的信息来告诉我中间我需要填的词是“两个”(two),而不是单词 to 或too,因此特征捕捉,哪怕是周围词语中的一个词,就能够给我足够的信息来确定出标签Y;而在房价预测问题中,如果特征值只关于房子大小,而忽略其他的一些影响房价的因子,如:房间数、设施等,这个时候就算有足够多的训练集也不会得到很好的预测模型。

    另一种考虑这个问题的角度是为了有一个高性能的学习算法,我们希望它不要有高的偏差和方差
    偏差问题,我们将通过确保有一个具有很多参数的学习算法来解决,以便我们能够得到一个较低偏差的算法,并且通过用非常大的训练集来保证较小的方差,最终可以得到一个低误差和低方差的学习算法。

    文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33897 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月9日
下一篇 2021年9月9日

相关推荐