机器学习算法性能评价,改进的理论基础以及改进措施

1.introduction(介绍)

主要讲解一些机器学习中简单的模型评价,模型选择,模型改进的方法。主要分为性能评价理论基础改进措施三部分

content

  • 1.introduction(介绍)
  • 2.How to evaluate algorithm's performance(性能评价)
  • 3.theoretical foundation(理论依据)
    • 3.1诊断偏差和方差
    • 3.2正则化和偏差,方差
    • 3.3学习曲线
  • 4.improved method(改进方法)
  • 5.Additional words(额外的话)
  • 6.reference

2.How to evaluate algorithm’s performance(性能评价)

一般情况下我们会选择训练集测试集,按照70%和30%的比例进行分配。使用训练集来训练模型,使用测试集来评价训练的泛化性能,避免出现过拟合的情况。但是仔细想想,我们训练集训练的是系数 θ \theta θ,对于模型是否得当,用什么来评价呢?很自然的,我们会想到再来一个数据集用来评价模型怎么样,这就是进化版的性能评价训练集(training set)交叉验证集(cross validation set)测试集(Test set),一般按照60%,20%,20%来分配。

下面举一个例子说明一下引入交叉验证集的作用。

对与线性回归的问题,假设我们需要选择多项式的次数,即对于
机器学习算法性能评价,改进的理论基础以及改进措施_第1张图片
如果把模型和 θ \theta θ都放进测试集训练,训练出来的结果泛化性能不好,我们无法确定是 θ \theta θ选择的不好还是多项式次数选择的不好,加入交叉验证集后,我们这样评价性能:
首先针对各个模型训练得到不同的 θ \theta θ向量,计算他们在交叉验证集中的代价函数 J C V ( θ ) J_{CV}(\theta) JCV(θ),选择最小的 J C V ( θ ) J_{CV}(\theta) JCV(θ)作为我们要选择的模型,然后在测试集上验证性能怎么样。如下图所示,我们在交叉验证集上选择了假设函数为 h ( θ ) = θ 0 + θ 1 x + ⋯ + θ 3 x 3 h(\theta)=\theta_0+\theta_1x+\cdots+\theta_3x^3 h(θ)=θ0+θ1x++θ3x3,然后在测试集上计算 J t e s t ( θ ( 4 ) ) J_{test}(\theta^{(4)}) Jtest(θ(4))评价模型选择的怎么样。
机器学习算法性能评价,改进的理论基础以及改进措施_第2张图片

3.theoretical foundation(理论依据)

3.1诊断偏差和方差

知道我们的算法是偏差问题还是方差问题是很重要的,这为我们进行下一步的优化奠定了基础。
首先我们定义:偏差问题是由欠拟合导致的,方差问题是由过拟合导致的。即进行模型优化的第一步是判断模型到底是欠拟合还是过拟合。
机器学习算法性能评价,改进的理论基础以及改进措施_第3张图片
通过分析,我们可以得到这样一张图
机器学习算法性能评价,改进的理论基础以及改进措施_第4张图片
解释一下这个图。对于 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)曲线,显然多项式的次数越高,越能把数据集拟合的好,在训练集上的代价函数的值会越小;对于 J C V ( θ ) J_{CV}(\theta) JCV(θ),在开始欠拟合的时候代价函数会比较大,在后面过拟合的时候代价函数也很大,只有恰好拟合的时候代价函数才会比较小。
如何通过 J C V ( θ ) J_{CV}(\theta) JCV(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)来判断我们的算法是欠拟合还是过拟合呢?根据图我们可以得到结果: J C V ( θ ) J_{CV}(\theta) JCV(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)都很大的时候,算法处于欠拟合;当 J C V ( θ ) J_{CV}(\theta) JCV(θ)大, J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)小的时候,算法处于过拟合状态

3.2正则化和偏差,方差

正则化系数 λ \lambda λ对偏差方差问题有什么影响呢?正则化是对非零项的 θ \theta θ施加惩罚, λ \lambda λ大的话,对非零项的 θ \theta θ施加惩罚较大,即对各个项有惩罚,就会导致算法倾向于欠拟合, λ \lambda λ小的话,对非零项的 θ \theta θ施加惩罚较小,算法更容易处于过拟合。
机器学习算法性能评价,改进的理论基础以及改进措施_第5张图片
同理我们可以画出 J C V ( θ ) , J t r a i n ( θ ) − − λ J_{CV}(\theta),J_{train}(\theta)--\lambda JCV(θ),Jtrain(θ)λ的关系图
机器学习算法性能评价,改进的理论基础以及改进措施_第6张图片

3.3学习曲线

所谓学习曲线就是指代价函数 J C V ( θ ) J_{CV}(\theta) JCV(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)随着training set size变化的曲线。对于欠拟合和过拟合会呈现出不同的特性。
对于欠拟合,我们可以得到下面的曲线
机器学习算法性能评价,改进的理论基础以及改进措施_第7张图片
J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)肯定是随着训练样本的增多而变多, J C V ( θ ) J_{CV}(\theta) JCV(θ)随着训练样本的增多而变小,最后会很接近 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),且保持在较高的值。对于这种情况,增加样本数量是没用的
对于过拟合,我们可以得到下面的曲线
机器学习算法性能评价,改进的理论基础以及改进措施_第8张图片
和欠拟合不同的点是他的 J C V ( θ ) J_{CV}(\theta) JCV(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)会有较大的差距,因为算法的泛化性能不好,所以用在交叉验证集会有较大的值。在这种情况下,增加训练集会使得效果变好。

4.improved method(改进方法)

我们可以怎样来改进欠拟合和过拟合的不足呢?
对于欠拟合,我们可以

  • 增加额外的特征
  • 增加更高的多项式次数
  • 减小 λ \lambda λ

对于过拟合,我们可以

  • 减小特征数目
  • 减小多项式的次数
  • 增加样本数
  • 增大 λ \lambda λ

虽然前面主要是用线性回归来推导的,但是也适用于神经网络。一般情况下,我们把节点少,层数少的网络和线性回归中低次幂作为对照,要注意发没发生欠拟合的情况,把节点多,层数多的网络和线性回归中高次幂作为对照,要注意有没有发生过拟合的情况。
机器学习算法性能评价,改进的理论基础以及改进措施_第9张图片

5.Additional words(额外的话)

最后给出吴恩达在课上的一段话:
So if you like you can to think of this as a way of avoiding whats sometimes called premature optimization in computer programming. And this idea that says we should let evidence guide our decisions on where to spend our time rather than use gut feeling, which is often wrong.
想要表达的意思就是小步快走,在前期不要花太多时间去构建一个完美无缺的模型,而是使得模型尽可能地简单,以方便你尽可能快的去尝试模型是否可以起作用。在简单的模型上进行迭代,优化,让事实来指导我们。回过头来看真是感慨万千,重要的不是想着要做多好,而是开始做。

6.reference

吴恩达机器学习

你可能感兴趣的:(机器学习,机器学习,性能评价,改进措施)