1.预测中的错误解决方法
- Getting more training examples
- Trying smaller sets of features
- Trying additional features
- Trying polynomial features
- Increasing or decreasing λ
2.评估
假说评估:
1.a given dataset of training examples ---分为---> a training set and a test set.
2.Learn Θ and minimize Jtrain(Θ) using the training set
3.Compute the test set error Jtest(Θ)
测试集误差:
- 测试集的代价函数:
- 测试集误差(取平均值):
3.训练/交叉验证/测试集
- 学习算法仅对训练集拟合很好不能说明该算法很好
- 训练集的误差比其它数据集的误差都要小
- 为了选择假说,可以测试不同的多项式维度d来观察误差结果
------------------------------------------------------------------------------------------------------------------------
- 不选用验证集的方法:(不好)
将参数应用到其它数据集,误差会更大。
- 使用交叉验证集:
将交叉验证集( Cross Validation Set)作为训练d的中间集,这样的话我们得到的误差就不是最优化训练集的误差了。
通常将数据集这样划分:
Training set: 60%
Cross validation set: 20%
Test set: 20%
方法:(CV集上不用正规化)
note: CV集选择d时,lambda值不能变了。
4.偏差/方差诊断
多项式维度d与假说过拟合,欠拟合的关系:
-
High bias (underfitting): Jtrain(Θ) 和 JCV(Θ) 都会很高. 而且, JCV(Θ)≈Jtrain(Θ).
High variance (overfitting): Jtrain(Θ) 会很低,JCV(Θ) 会大于 Jtrain(Θ).
----------------------------------------------------------------------------------------------------------
正规化与假说过拟合,欠拟合的关系:
-
Low λ: Jtrain(Θ) 很低,JCV(Θ) 很高(high variance/overfitting).
Intermediate λ: Jtrain(Θ) and JCV(Θ) 有些低, Jtrain(Θ)≈JCV(Θ).
Large λ: Jtrain(Θ) 和 JCV(Θ) 都很高(underfitting/high bias)
---------------------------------------------------------------------------------------------------------
为了选择d和正规化项 λ,我们需要:
- 做一张λ 的表 (i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
- 选择一个λ 去计算;
- 做一个模型集(假说函数集)比如利用多项式维度d做的一个集合或者其他;
- 选一个模型去学习Θ;
- 用选择的λ 和选择的模型计算的Jtrain(Θ)去学习参数Θ (this will learn Θ for the next step);
- 在Jtrain(Θ)上以学习到的 Θ (以λ 计算的 ) 为参数用无正规化方式( λ = 0)计算训练集误差;
- 在JCV(Θ)上以学习到的 Θ (以λ 计算的 ) 为参数用无正规化方式( λ = 0)计算交叉验证集误差;
- 在整个模型集和lambda集上都进行这些步骤,然后选择在交叉验证集上产生误差最小的集合;
- 现在可以用(λ x Cost Jtrain(Θ)) , (λ x Cost JCV(Θ))像上面那样做图,可视化来帮助理解自己的决策;
- 现在用最好的组合 Θ ,λ, 应用在Jtest(Θ) 去看是否有很好的泛化能力.
- 为了决定哪个多项式维度值和 λ用起来是最好的, 我们可以用下面讲的学习曲线.
5.学习曲线
- 如果只有3个点,很容易找到正好过它们的多项式函数,但随着训练集的增大,多项式函数的误差也会随之增大,在训练集数量达到某个值之后,误差趋平。
- 高偏差:得到更多训练集表现不会变好.
少量训练集: Jtrain(Θ)低,JCV(Θ) 高.
大量训练集: Jtrain(Θ),JCV(Θ) 都高且Jtrain(Θ)≈JCV(Θ).
- 高方差:得到更多训练集会表现更好.
少量训练集: Jtrain(Θ)低,JCV(Θ) 高.
大量训练集: 随着训练集增大,Jtrain(Θ) 增加,JCV(Θ) 不趋平减少. 而且, Jtrain(Θ)<JCV(Θ)但它们的差距依然会比较明显.
6.解决方法
Getting more training examples,Trying smaller sets of features,Increasing λ ---> Fixes high variance
Adding features,Adding polynomial features,Decreasing λ ---> Fixes high bias
7.神经网络诊断
参数少,欠拟合,计算量小,反之同样道理,过拟合加λ,比较好的步骤是开始的时候用一层中间层,然后用交叉验证集在许多中间层上训练。
8.模型选择
- 选择 M 为多项式的阶.
-
如何确定留下模型中的哪个参数 Θ (模型选择)?
- 得到更多数据(很难).
- 选择没有过拟合最好的拟合数据的模型(很难).
- 用正规化减少过拟合.
----------------------------------------------------------------------------------------------------------
Bias: 近似误差 (期望值和最优值之间)
Jtrain(Θ) and JCV(Θ) 都高,Jtrain(Θ)≈JCV(Θ)
Variance: 估计误差
Jtrain(Θ) 低,JCV(Θ)≫Jtrain(Θ)
Intuition for the bias-variance trade-off:
Complex model => sensitive to data => much affected by changes in X => high variance, low bias.
Simple model => more rigid => does not change as much with changes in X => low variance, high bias.
One of the most important goals in learning: finding a model that is just right in the bias-variance trade-off.
其它还有,多项式阶数,λ等。