帮助运行诊断的最重要的方法是选择下一步要尝试的内容,提高你的学习算法性能,偏差和方差可能是最重要的想法,然后是错误分析。
假设Mcv=500,即有500个交叉验证示例,你的算法错误的分类了100个,错误分析过程只是指手动查看这100个例子,试图洞察算法哪里出了问题,首先找到一组算法错误分类的示例,来自交叉验证集的示例,把它们分成共同的主题、共同的属性或共同的特征,例如,如果你注意到相当多的错误分类垃圾邮件是药品销售,试图出售药品,通过这些例子用手数数,有多少错误分类的电子邮件是药品垃圾邮件,有两封,一封电子邮件药品垃圾邮件和你怀疑故意拼写错误可能会绊倒垃圾邮件分类器,数一数有多少错误分类的例子,故意拼写错误,假设我找到了100个中的3个,浏览电子邮件路由信息,发现7号有不寻常的电子邮件路由,18号是试图窃取密码或网络钓鱼电子邮件的电子邮件,垃圾邮件有时也代替在电子邮件正文中写垃圾邮件,相反,它们创建了一个图像,然后将垃圾信息写在电子邮件中出现的图像中,这让它变得有点难,对于一个学习算法来说,所以也许其中一些电子邮件是这些嵌入式图像垃圾邮件,如果最终得到这些计数,这就告意拼写错误诉你垃圾邮件以及试图窃取密码或网络钓鱼电子邮件的电子邮件似乎是个大问题,而故意拼写错误虽然是个问题,它是一个较小的,尤其是,这个分析告诉你的是,即使你要建立非常复杂的算法找出,它只能解决你100个错误分类的例子中的3个,因此,净影响似乎没有那么大,不意味着不值得去做,但是当你优先考虑做什么的时候,可能决定不将此作为高度优先事项。关于这个过程的注意事项,这些类别可能重叠,换句话说,它们并不相互排斥,例如,可能有一个药品垃圾邮件也有不寻常的路由或者故意拼写错误的密码,同时还试图实施钓鱼袭击,所以一封电子邮件可分为多个类别,在这个例子中,算法错误的分类了100个例子,我们会手动查看100个例子,如果你有一个较大的交叉验证集,假设你有5000个交叉验证的例子,如果算法错误分类1000个,那可能没有时间,取决于团队的规模和你在这个项目上工作的时间,可能根本没有时间手动查看,在这种情况下,算法错误分类的1000个例子,通常会随机抽取大约100个,也许有几百个例子,因为这是你可以在合理时间内浏览的数量,大概有100个例子将为你提供关于最常见错误类型的足够统计数据,因此,最有效的方法是把你的注意力集中,所以在这个分析之后,如果发现很多错误是药品垃圾邮件,然后这可能会给你一些想法或灵感,让你下一步做什么,例如,你可能会决定收集更多的数据,但不是任何更多的数据,但试着找到更多关于药品垃圾邮件的数据,让学习算法更好的发挥作用,识别这些药品垃圾邮件,或者你可能会决定想出一些与特征相符的具体的名称,或者垃圾邮件发送者试图出售的药品的具体名称,为了帮助你的学习算法更好的识别这种类型的制药垃圾邮件,这可能会启发你对算法进行特定的更改,与检测网络钓鱼电子邮件有关,例如,你可以查看电子邮件中的UPL,并编写带有额外功能的特殊代码,查看是否链接到可疑的URL,或可能会决定获取更多网络钓鱼电子邮件的数据,特别是为了帮助学习算法而更好的识别它们,所以这个错误分析的重点是通过手动检查一组示例,你的算法被错误分类或错误标记,通常,这将为下一步可能有用的尝试创造灵感,有时它还可以告诉你某些类型的错误是足够罕见的,不值得花太多时间去修复。
所以回到这个列表,偏差方差分析应该告诉你,根据我们的错误分析,收集更多的数据是否有帮助,在示例中,看起来更复杂的电子邮件功能可能会有所帮助,但只有一点点,而更多的特征需要检测,垃圾邮件或网络钓鱼电子邮件可以帮助很多,这种检测拼写错误的方法也没有那么大的帮助。
总的来说,偏差方差诊断以及进行这种形式的误差分析,对筛选或决定模型的哪些变化更有希望下一步尝试,错误分析的一个局限性是,它更容易为人类擅长的问题,所以你可以看着电子邮件,说你认为这是一封垃圾邮件,算法为何出错,对于连人类都不擅长的任务,错误分析可能会有点困难,例如,如果你想预测,有人会在网络上点击哪些广告,我无法预测有人会点击什么,所以那里的误差分析实际上更困难,但是当你将错误分析应用于问题时,这对你把注意力集中在更有希望尝试的事情上是非常有帮助的。