学会判断机器学习模型的性能——开发基线模型技能
2018年04月24日 由 浅浅 发表
446443
0
在为预测建模问题开发了机器学习模型之后,你该如何确定模型性能是否良好?
这是初学者常问到的问题。作为一个初学者,你经常会去寻找这个问题的答案,比如你希望别人为你解答,x%的准确性或者x的误差分数是否有效。这篇文章将告诉你如何自己来回答这个问题,以及确定你的模型技能是否良好。
读完这篇文章,你会明白:
- 基线模型可用来探索你的问题中性能的标准,同时也可以评估所有其他的模型。
- 因为数据和算法的随机性,所有的预测模型都包含着误差,完美的分数实际上是不存在的。
- 应用机器学习的真正目的是探索可能的模型空间,并探索相对于你的特定数据库基线,模型得分多少才算是优秀。
概述
这篇文章分为四个部分,分别是:
- 模型技能是相对的
- 基线模型技能
- 什么才算是最佳分数
- 探索模型技能的极限
模型技能是相对的
你的预测建模问题是独一无二的,包括你已有的特定数据、使用的工具以及你将达成的技能。你的预测建模问题是悬而未决的,因此,我们不可能知道什么才算是好的模型,也不知道它可能会有什么技能。你可能会根据领域内的知识设想出技能高的模型是怎样的,但你不知道是否可以达成这些技能分数。我们最多能做的只是用你特有的数据,使机器学习性能与其他基于相同数据训练的模型进行比较。
机器学习模型的性能是相对的,好的模型所能达到的分数只能代表它是有意义的,而且只有其他模型也基于相同的数据进行训练,并得出技能分数,才能对其进行分析解释。
基线模型技能
因为机器学习模型的性能是相对的,所以开发出强健的基线模型是至关重要的。在预测建模问题中,使用基线做出预测既简单又易于理解。基于你特有的数据库训练机器学习模型得出性能,而基线模型技能为性能提供了可接受的最低标准。基线模型的结果提供了一个方案,所有基于你的数据训练的其他模型技能都可被评估。
基线模型的三个例子:
- 预测回归问题的平均数结果。
- 预测分类问题的众数结果值。
- 当输出结果(也可称作持久性)作为单变量的时间序列预测问题时,可预测输入数据。
这样,你的问题的基线性能就可以作为与其他模型进行比较和评估的标准。
如果模型性能在基线之下,那么肯定是哪里出错了(比如有bug),或者模型并不适用于你的问题。
什么才算是最佳分数
如果是分类问题,那么100%准确的就是最佳分数;如果是回归问题,0误差就是最佳分数。这些分数其实不可能达到上限或下限。所有的预测建模问题都存在预测误差。
误差来源范围包括:
- 不完整的数据样本;
- 数据中的干扰信息;
- 建模算法的随机性。
你无法获取最佳分数,但有必要知道你所选择的方法最有可能得到什么性能。模型性能结果应落在最低基线和可能得到的最佳分数范围之间。你必须搜索数据库中可能模型的空间,发现什么才算是好或差的分数。
探索模型技能的极限
一旦有了基线,你可以在预测建模问题中探索模型性能的范围。事实上,这很困难,但也正是项目的目标:基于你特有的数据库做预测时,找到一个模型,能够让你充分证明预测的可靠性。对于解决这一问题有很多策略,其中有两种你可能会采用:
- 从高起点出发。选择精密的,且可以在大部分预测建模问题上表现良好的机器学习方法,比如随机森林法或梯度推进法。基于你的问题评估模型,将结果用作大致的上下限基线,然后找到能够得到类似性能的最简单的模型。
- 穷举搜索。评估所有你能想到的,适用于该问题的机器学习方法,并选择能得到相对于基线的最佳性能的方法。
“从高起点出发”这一方法很便捷,能够帮助你定义符合预期的模型技能界限,并且找到可获得相似结果的简单模型。同时也可以快速分析出问题是否可以解决或可以预测,这一点十分重要,因为不是所有的问题都可被预测。
用穷举搜索法速度较慢,这种方法主要是为长期运行的项目所设计,在这些项目中,模型技能比其他任何问题都重要。我经常应用这种方法的变体,分批测试类似的方法,称之为抽样检查。
这两种方法都会为你提供总体模型性能分数,你可以将它们与基线进行比较。这样你就会明白什么算是好的或差的分数。
总结
在这篇文章中,你了解到了你的预测建模问题是独一无二的。只有涉及到基线性能时,你才能区分出什么是好的模型性能分数。
具体来说,你学到了:
- 基线模型可用来探索你的问题中性能的标准,同时也可以评估所有其他的模型。
- 因为数据和算法的随机性,所有的预测模型都包含着误差,完美的分数实际上是不存在的。
- 应用机器学习的真正目的是探索可能的模型空间,并探索相对于你的特定数据库基线,模型得分多少才算是优秀。