其他分享
首页 > 其他分享> > [C5]机器学习诊断

[C5]机器学习诊断

作者:互联网

机器学习诊断(Machine learning diagnostic)

Diagnostic : A test that you can run to gain insight what is / isn't working with a learning algorithm, and gain guidance as to how best to improve its performance. Diagnostics can take time to implement, but doing so can be a very good use of your time.

划分数据集(Train / Cross Validation / Test)

一个算法在训练集上拟合的好,但泛化能力未必好。所以可改进一下,将原有训练集重新划分(如果训练集非随机分布,先随机打散,之后再划分,可防止样本数据倾斜)为三个部分(Train Set / Cross Validation Set / Test Set),让算法在相对独立的数据集上 训练 / 交叉验证(泛化)/ 测试

用误差评估假设(Evaluating a Hypothesis with error)

线性回归逻辑回归cost function 可用来配合求解假设的最优参数 \(\Theta\),还可用来评估假设,此时称 J 为 误差(error)。

回顾 线性回归逻辑回归cost function

\(J(\theta)=\frac{1}{2m} \Bigg[ \sum\limits_{i=1}^m \Big( h_\theta(x^{(i)}) - y^{(i)} \Big)^2 + \lambda \sum\limits_{j=1}^n \theta_j^2 \Bigg]\)

\(J(\theta)=-\frac{1}{m} \sum\limits_{i=1}^m \Bigg[ y^{(i)} \cdot log \bigg(h_\theta(x^{(i)}) \bigg) + (1-y^{(i)}) \cdot log \bigg(1-h_\theta(x^{(i)}) \bigg) \Bigg] + \frac{\lambda}{2m} \sum\limits_{j=1}^n \theta_j^2\)

对于分类问题(e.g. 逻辑回归),除了使用 J (标准的)来表示误差之外,还可以使用误分率(Misclassification Error)来表示,如下:

\(\begin{cases} err(h_{\Theta}(x),y) = \begin{cases} 1 \quad & \text{if } h_\Theta(x) \geq 0.5 \text{ and } y=0 \text{ or } h_\Theta(x) < 0.5 \text{ and } y = 1 \\ 0 \quad & otherwise \end{cases} \\ \\ Error=\frac{1}{m} \sum\limits_{i=1}^{m}err(h_\Theta(x^{(i)}),y^{(i)}) \end{cases}\)

三个数据集和误差结合使用

将误差对应到不同的数据集,可对应得到三个误差:

应用:在不同角度下,观察多种场景对应的 Errors 的变化情况,可监测算法的性能。

举例 说明:

实际的例子


Suppose your learning algorithm is performing less well than you were hoping.
训练误差很低,但是泛化误差很高,所以你需要优化算法。
对于大多数机器学习需要解决的是以下 两个问题 :

1. 欠拟合(Underfitting),即 高偏差(High Bias)
2. 过拟合(Overfitting),即 高方差(High Variance)

而针对 欠拟合过拟合,有以下 6 种方法 可以用来优化算法和解决对应的问题:

1. Get more training examples -> fixes high variance
2. Try smaller sets of features -> fixes high variance
3. Try getting additional features -> fixes high bias
4. Try adding polynomial features (\(x_1^2,x_2^2,x_1x_2,etc.\)) -> fixes high bias
5. Try decreasing lambda -> fixes high bias
6. Try increasing lambda -> fixes high variance

学习曲线(Learning curves) 诊断 欠拟合 / 过拟合 / 均衡状态

高偏差(Figure 1 和 Figure 4)
Figure 1 为用线性回归拟合数据,Figure 4 为它对应的学习曲线。这是一个高偏差的例子,可以看到:

高方差(Figure 2 和 Figure 5)
通过上面的学习曲线,发现算法存在高偏差问题,假定我们决定使用引言中所示的 6种方法 中的第4种(即添加多项式特征)来改善高偏差的情况,假定我们已经选择了 8 次多项式。如下:
Figure 2 为用多项式回归拟合数据,Figure 5 为它对应的学习曲线。这又变成了一个高方差的例子,可以看到:

比较均衡的情况(Figure 3 和 Figure 6)
通过上面的学习曲线,发现算法存在高方差问题,假定我们决定使用引言中所示的 6种方法 中的第6种(即增加正则化参数 \(\lambda\))来改善高方差的情况,假定我们已经选择了 \(\lambda\) = 1。如下:
Figure 3 为用多项式回归拟合数据,Figure 6 为它对应的学习曲线。这次是一个比较均衡(Just Right)的例子,可以看到:随着训练样本增加,训练误差和泛化误差非常接近,并且处于很低的位置。

以下为三个学习曲线的绘图数据,可供参考:

模型选择曲线(Model Selection curves)

这里展开说明一下,上面例子中 多项式次幂数 = 8 和 \(\lambda\) = 1 的由来。

上面 9 张图对应 9 个 \(\lambda\) 的值,其中每张图中,x轴为多项式次数从1 ~ 10,y轴为 Error,两条线分别为训练误差和交叉验证(泛化)误差。

可以看到

Diagnosing Neural Networks

A neural network with fewer parameters is prone to underfitting.
It is also computationally cheaper.

A large neural network with more parameters is prone to overfitting.
It is also computationally expensive.
In this case you can use regularization (increase λ) to address the overfitting.

Using a single hidden layer is a good starting default.
You can train your neural network on a number of hidden layers using your cross validation set.
You can then select the one that performs best.

程序代码

直接查看Machine Learning Diagnostics & Bias-Variance & Learning Curve.ipynb可点击

获取源码以其他文件,可点击右上角 Fork me on GitHub 自行 Clone。

标签:误差,机器,泛化,训练,Figure,诊断,拟合,C5,lambda
来源: https://www.cnblogs.com/keyshaw/p/10891278.html