优先考虑什么工作
系统设计实例:
给定一个数据集的电子邮件,我们可以构建一个向量的每一封电子邮件。在这个向量的每个条目代表一个字。该向量通常包含10000到50000个条目,这些集合是通过查找数据集中最常用的词来收集的。如果在电子邮件中找到一个词,我们将把它的条目指定为1,否则如果找不到,该条目将是0。一旦我们所有的X向量准备好了,我们就训练我们的算法,最后,我们可以用它来分类一封电子邮件是否是垃圾邮件。
所以你如何花你的时间,提高分类的准确性?
1.收集大量的数据(例如“蜜罐”项目,但并不总是工作)
2.形成精妙的变量(例如:使用垃圾邮件电子邮件标头数据)
3.开发算法用不同的方法来处理你的输入(在垃圾邮件识别拼写错误)。
很难说出哪一个选择将是最有帮助的。
误差分析
推荐的方法来解决机器学习问题是:
1.从一个简单的算法开始,快速实现它,并在交叉验证数据上尽早测试它。
2.绘制学习曲线来决定如果更多的数据,更多的变量,是否有帮助。
3.手动检查交叉验证集中的示例中的错误,并试图指出大多数错误产生趋势。
例如,假设我们有500封邮件,我们的算法的误分了100人。我们可以手动分析100电子邮件和分类基于他们是什么类型的电子邮件。然后我们可以想出新的线索和特征,帮助我们正确地分类这100封电子邮件。因此,如果我们的大多数错误的电子邮件是那些试图窃取密码,然后我们可以找到一些特别的电子邮件并将它们添加到我们的模型的特点。我们还可以看到每个词的分类根据其根本改变我们的错误率:
它是作为一个单一的得到错误的结果很重要,数值。否则很难评估算法的性能。例如,如果我们使用词干,即用不同的形式处理同一个单词(失败/失败/失败)作为一个词(失败),得到3%的错误率而不是5%的过程,那么我们肯定会把它添加到我们的模型中。但是,如果我们试图区分大写字母和小写字母,最终得到3.2%的错误率而不是3%,那么我们应该避免使用这个新特性。因此,我们应该尝试新事物,得到错误率的数值,并根据我们的结果决定是否保留新特性。