机器学习(3)- 学习建议<误差出现如何解决?>

根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。

1 学习建议

误差太大,如何改进?

  • 使用更多的训练样本→解决高方差
  • 选用更少的特征→解决高方差
  • 选取更多的特征→解决高偏差
  • 增加多项式特征→解决高偏差
  • 减小(lambda)→解决高偏差
  • 增大(lambda)→解决高方差

评估机器学习算法的性能

对数据进行“洗牌”,然后再分成训练集和测试集。通常用70%的数据作为训练集,用剩下30%的数据作为测试集。

  1. 对训练集进行学习,得到参数( heta)

  2. 计算测试误差(不加入正则项):对于线性回归,可以用之前的代价函数;对于逻辑回归,除了之前的代价函数,还有一种称为0/1错误分类的方法

    [err(h_ heta(x),y)=left{ egin{aligned} 1 && if h_ heta(x) ge 0.5,y=0 \ && or h_ heta(x) lt 0.5,y=1 \ 0 && otherwise end{aligned} ight. ]

    [Test error = frac{1}{m_{test}}sum_{i=1}^{m_{test}}err(h_ heta(x_{test}^{(i)}),y_{test}^{(i)}) ]

模型选择

使用测试集选择次幂(d),因此需要验证集→可参考交叉验证

使用60%的数据作为训练集,使用20%的数据作为交叉验证集,使用20%的数据作为测试集

  1. 对训练集进行学习,得到参数( heta^{(i)}),即多个模型
  2. 用验证集计算验证误差(不加入正则项),得到参数(d),即选择模型
  3. 计算测试误差(不加入正则项),即对模型进行测试

机器学习诊断法(偏差or方差?)

(d)大,则高方差;(d)小,则高偏差

偏差:训练误差和验证误差都很大

方差:训练误差小,但是验证误差大,即验证误差远大于训练误差

正则化和偏差、方差

(lambda)大,则高偏差;(lambda)小,则高方差

选取一系列可能尝试的(lambda)值:0,0.01,0.02,0.04,...,20

  1. 训练出12个(lambda)值正则化的模型
  2. 计算验证误差,得到(lambda)
  3. 计算测试误差

绘制学习曲线

用来判断学习算法中的问题

高偏差时,随着训练集数量增加,验证误差不会明显下降,基本变平,此时使用更多的训练样本无用

高方差时,随着训练集数量增加,验证误差一直增大,训练误差一直减小,此时使用更多的训练样本有用

原文地址:https://www.cnblogs.com/angelica-duhurica/p/10948753.html