本文介绍机器学习算法的性能评估的方法,包括算法高偏差还是高方差的诊断,学习曲线等。从工程应用的角度来讲,算法只需要知道原理,并不需要真正去实现,数值专家们帮我们实现了大量的开源算法可供我们使用。而怎么样评估某个算法的性能以及怎么样去优化性能反而是工程应用领域最重要的问题。
为什么需要评估机器学习算法的性能
当我们辛苦开发出来的机器学习算法不能很好地预测新数据时,我们该怎么办呢?一般情况下,有以下几个方法:
- 获取更多的训练数据
- 减少输入的特征数量,避免出现过拟合
- 增加有价值的特征,即重新解读并理解训练数据
- 增加多项式特征
- 减小正则化参数 λ
- 增大正则化参数 λ
如何评估机器学习算法,以便遇到问题时能知道用上面方法中的哪个方法?
- 对机器学习算法的性能进行评估,接下来就要介绍机器学习算法性能评估的方法
- 对机器学习算法进行诊断,诊断是指通过对机器学习算法进行测试,以便找出算法在哪种情况下能良好地工作,哪种情况下无法良好地工作。进而找出算法性能优化的方向和方法。
预测函数模型性能评估
怎么样判断我们的预测函数模型的性能是可以接受的呢?
我们可以把训练数据集分成两部分,随机选择 70% 的训练数据作为训练数据集,用来训练机器学习算法;另外 30% 作为测试数据集,用来验证训练出来的机器学习算法针对这些测试数据集的误差。一个好的机器学习算法应该是对训练数据集成本比较低,即较准确地拟合数据,同时对测试数据集误差比较小,即对未知数据有良好的预测性。
如何计算测试数据集的误差呢?
简单地说,就是用测试数据集和训练出来的机器学习算法参数,代入相应的成本函数里计算测试数据集的成本。
针对线性回归算法,我们可以使用下面的公式计算测试数据集的误差,其中 m 是测试数据集的个数:
针对逻辑回归算法,可以使用下面的公式计算测试数据集的误差,其中 m 是测试数据集的个数:
针对分类问题时,还可以用分类错误率来代替成本函数算法,从而更直观地观察到一个算法对测试数据集的误差情况。我们定义错误率为: