机器学习系统设计——误差分析

Rcommended approach

  • Start with a simple algorithm that you can implement quickly. Implement it and test it on your cross-validation data.
  • Plot learning curves to decide if data, more features, etc. are likely to help.
  • Error analysis: Manually examine the example (in cross validation set) that your algorithm make errors on. See if you spot any systematic trend in what type of examples it is making errors on.

建议的方法

  • 从一个可以快速实现的简单算法开始。 实现它并在交叉验证数据上进行测试。
  • 绘制学习曲线以确定数据,更多功能等是否可能有所帮助。
  • 错误分析:手动检查算法发生错误的示例(在交叉验证集中)。 看看出现错误的哪种类型的例子的任何系统趋势。

误差分析的具体例子(垃圾邮件)

交叉验证集有500组数据(mcv=500)

算法分类错误100个邮件

手动检查这100个错误的邮件,并基于以下几点分类:

  • 错误邮件的类型
    • 比如你发现这100个中有12个关于“制药”的、4个关于“复制品”的、53个关于“钓鱼网站”的和31个其他的。你就会发现你的算法对于“钓鱼网站”的识别是比较欠缺的,这时你就可以针对性的优化算法。
  • 你觉得什么线索(特征)能帮助算法正确分类
    • 比如你发现有5个有“蓄意的误解”(m0rgage, med1cine, etc)的特征、16个“异常路由”的特征、32个“异常标点”特征等,然后针对性的优化算法。

数值评估的重要性

有些算法会取单词中的前几个字母来加快算法的运行等,比如取 discount/discounts/discounted/discounting 的前6个字母,这样这些词就会被视为是一个词。

那么该不该使用这种方法呢?

最简单的方法就是“试试”。试试使用和不使用的时候“交叉验证误差”的差别,比如,不用这种方法得到5%的误差,用了3%的误差,那就用。

另外是大小写问题,比如 Mom/mom 需要做同样的处理吗?“试试”就知道了。比如,处理后得到3.2%的误差,不用3%,那就不用。

 

posted @ 2018-11-01 09:12  qkloveslife  阅读(711)  评论(0编辑  收藏  举报