通常改进算法性能有以下几种方法:
1、增加数据
但是有更多的数据不一定能获得更好的效果。
2、选用更少的特征
来防止过拟合。
3、选用更多的特征
也许特征不足,会导致欠拟合。
4、增加额外的多项式特征
例如x12x1x2x_{1}^{2},x_1,x_2
5、尝试减少正则化参数λ\lambda
6、尝试增大正则化参数λ\lambda

但是我们需要知道在什么情况下选择哪种方法更合适,而不是随便选一个会浪费时间。
因此就出现了机器学习诊断法,诊断法就是一种测试法,来洞察这样做是不是能提高性能。

一、评估假设

在改进算法之前,先要学习评估假设,看看好的程度、坏的程度是怎样。
对于特征少的训练样本,我们可以画图来看看训练loss的走向,来判断欠拟合或者过拟合。但是特征数量很多时,不能直观地可视化。
常用的评估方法:留出法。把数据划分为训练集和测试集(常用随机划分比例是7:3)。

例如线性回归的训练过程:
1)用训练样本来最小化训练误差J(Θ\Theta),来学习到参数Θ\Theta。这里仅仅用到训练数据。
2)计算测试误差。把上一步求到的参数,代入,求出误差。
【机器学习笔记】如何改进算法性能

类似的,对于Logistic回归:
1)用训练样本来学习到参数
2)计算测试误差。
【机器学习笔记】如何改进算法性能
还有另一种错误分类误差(也叫0/1分类误差,0和1代表正确或者错误):
【机器学习笔记】如何改进算法性能
也可以用0/1分类误差来定义为测试误差。

二、模型选择

模型选择,也就是确定你的模型多项式次数,例如1次(线性)、2次、3次等等。
常用交叉验证法:把数据划分为训练集、验证集、测试集(6:2:2)。
【机器学习笔记】如何改进算法性能
对于多个模型,分别求出对应的最小化误差参数,然后用交叉验证集去计算交叉验证误差,选择那个交叉验证误差最小的假设作为模型。然后可以用测试集来衡量这个被选出来的模型的泛化能力了。

相关文章:

  • 2022-02-14
  • 2022-02-15
  • 2021-05-13
  • 2022-12-23
  • 2021-07-25
  • 2021-11-30
  • 2021-08-25
  • 2021-11-01
猜你喜欢
  • 2021-08-22
  • 2021-10-24
  • 2021-04-27
  • 2021-11-13
  • 2021-09-09
相关资源
相似解决方案