1、首先要做什么(Prioritizing What to Work On)
本节节首先介绍在实际工作过程中,应该先处理哪些事情。
以一个垃圾邮件分类器算法为例进行讨论。
- 首先要做的决定是如何选择并表达特征向量?。可以选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得特征向量(出现为 1,不出现为 0),尺寸为 100×1。
- 事实上,会通过大量垃圾邮件统计高频单词,每个单词出现在10,000到50,000之间,将它们作为特征向量,而不是手动选择。
如何在有限的时间下让垃圾邮件分类器具有高精准度和低错误率?
- 收集更多的数据(honeypot项目)
- 基于邮件的路由信息开发一系列复杂的特征 (邮件头部)
- 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理 (discount 和discounts是否被对待一致,首字母大小写,关于标点符号的特征)
- 开发复杂的算法来检测出单词中故意出现的拼写错误(把 watch 写成 w4tch,可以逃避检查)
2、误差分析(Error Analysis)
本节主要介绍误差分析的概念,能帮助在众多方法中作出选择。
构建一个学习算法的推荐方法为:
- 从一个简单的能快速实现的算法开始,快速实现该算法,并用交叉验证集数据测试这个算法
- 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
- 进行误差分析:人工检查交叉验证集中算法产生预测误差的实例,看看这些