斯坦福机器学习第六周(模型选择、高偏差、高方差、学习曲线)
这篇文章主要讲解的是如何来对训练出来的代价函数进行评估,一起怎么处理
所遇到的各种问题。
0.引例
假如你已经训练好了一个代价函数来预测房价,然而你却发现用来预测新数据集时,其效果异常的糟糕。那我们接下来该怎么办呢?
可以看到方法有很多种,但是到底应该怎么来进行选择呢?当然绝对不能凭着感觉来。
1. Evaluating your hypothesis
评价一个模型(代价函数)的好坏总体上都是从训练过程中的代价值来进行评判的,其结果无非有三种:欠拟合,恰拟合,过拟合。我们都希望在训练的过程中能够得到最小的代价值,但是最终或许这并不是一个特别好的结果。因为此时有可能就出现了过拟合。所以,说一千道一万首先需要弄清楚的就是这个问题。
假若模型的特征维度只有1个维度,我们可以很直观的通过在数据集上画出代价函数的图像,来判断属于三种情况的哪一种。但问题是,几乎绝大多数问题面临的都是大于1维度的情况,很明显画图就不太现实了。
1.1 Cross Validation
对于已经确定好的模型(e.g. 多项式的次幂
1.2 Hyper parameter and Model selection
超参数(hyper parameter),大多数机器学习算法都有超参数,可以设置来控制算法行为。超参数的值不是通过学习算法本身学习出来的,是因为这样的参数太难优化(例如
如果仅仅是因为摸个模型的在训练集上表现得异常出色(代价值特别低)我们就选择该模型的或,未免就显得太武断了。因为此时就可能出现了过拟合的现象,所以我们就为数据集选择一个合适的模型,虽然特征冗余也会出现过拟合。而方法就是将原有的数据集分成训练集60%(training set)、交叉验证集20%(cross validation set)和测试集20%(test set),分别用于计算得到training error,cross validation error以及test error(即generalization error)。
1.2.1 对于不含有规则项的代价函数来说:
假定现在有10个备选模型,分别如下:
- 用训练集分别将10个模型以对应的
Jtrain(θ) 进行训练; - 用交叉验证集将10个模型训练得到的参数(
θ ),分别代入到对应Jcv 中计算得到cross validation error; - 选择第2步中最小cv error对对应的参数
θ 以及超参数d ,用测试集将其代入Jtest(θ) 中计算得到泛化误差;
1.2.2 对于含有规则项的代价函数来说:
我们知道
- 先随机创建一系列的
λ,i.d.λ∈{0,0.01,0.02,0.04⋯,10.24} (这是Ag的方法); - 使用不同的
d 创建一系列的模型,也就是不同的假设函数hθ(x) ; - 使用不同的
d 和不同的λ 所构成的J(θ) 在训练集上来训练得到参数θ (也就是两层嵌套的for循环来完成); - 使用步骤3中得到的参数
θ ,分别在验证集上计算得到cv errorJcv(θ) ; - 选择cv error最小情况下所对应的参数
θ,λ ; - 使用第5步中得到的参数
θ 在测试集上计算得到generalization errorJtest(θ) ,以此来判断其泛化能力;
2. Bias and Variance
关于偏差和方差的详细解释可以参见这篇博客;下面是摘自知乎关于什么是偏差(bias),什么是方差(variance)的直观解释:
想象你开着一架黑鹰直升机,得到命令攻击地面上一只敌军部队,于是你连打数十梭子,结果有一下几种情况:
1.子弹基本上都打在队伍经过的一棵树上了,连在那棵树旁边等兔子的人都毫发无损,这就是方差小(子弹打得很集中),偏差大(跟目的相距甚远);
2.子弹打在了树上,石头上,树旁边等兔子的人身上,花花草草也都中弹,但是敌军安然无恙,这就是方差大(子弹到处都是),偏差大(同1);
3.子弹打死了一部分敌军,但是也打偏了些打到花花草草了,这就是方差大(子弹不集中),偏差小(已经在目标周围了);
4.子弹一颗没浪费,每一颗都打死一个敌军,跟抗战剧里的八路军一样,这就是方差小(子弹全部都集中在一个位置),偏差小(子弹集中的位置正是它应该射向的位置);
方差,是形容数据分散程度的,偏差,形容数据跟我们期望的中心差得有多远
由此我们就可以知道:
欠拟合等价于高偏差(high bias),因为训练得到的模型不能很好的拟合目标数据集,即过大的偏离了数据集;
过拟合等价于高方差(high variance),因为在训练集上过拟合,其图像走势的离散程度必定很大(如下图中的黑点)
因此,1.2.1中
我们可以看出,如果
1.2.2中
当
3. Learning curve
学习曲线(learning curve)是一个能有效帮助我们分析训练模型是否出现问题的工具。
3.1 Learning curve for high bias
从这个曲线我们可以看到:
当m很小的时候,
3.2 Learning curve for high variance
从这个曲线我们可以看到:
当m较小时,同上面一样;随着m的增大,
3.2 Neural networks and overfitting
4.Conclusion
5.Precise and recall
True Positive: 预测值是1,真实值也是1;
False Positive: 预测值是1,真实值是0;
False Negative:预测值是0,真实值是1;
True Negative:预测值是0,真实值也是0;
举例:
在逻辑回归中,P与R的关系:
如何确定threshold?
一个字,试