Toggle navigation
Yang's Blog
主页
week 9
Machine Learning
week 2
week 3
week 4
week 5
week 6
week 7
week 8
week 10
End_to_End_Learning
About Me
归档
标签
week 6
0
无
2017-11-06 04:24:16
2
0
hljyy96@126.com
1.evaluating a hypothesis 以之前的房价问题为例,当我们运用已经训练好的线性回归模型来预测房价时,如果出现较大的误差,我们可以采取什么措施来减小这个误差?一般来说有以下几种方法: ① 获得更多的training data 一般来说是有用的,但是代价较大,花费的时间较长 ② 尝试减少特征数量 ③ 尝试获得更多的特征 ④ 尝试增加多项式特征 ⑤ 尝试减少正则化参数$\lambda$ ⑥ 尝试增加正则化参数$\lambda$ 对于这几种方法的选择,我们不应该采取随机选择的方法,而是按照接下来的诊断方法来选择采取的优化方式。 为了减少过拟合和欠拟合带来的问题,我们将传统的训练集分为2个部分,其中70%作为training set,剩下的30%作为test set,这些数据需要随机选择: ![](https://leanote.com/api/file/getImage?fileId=599109b2ab644147bd000cf3) 对于测试集的评估,在通过训练集得出参数后,对测试集运用该模型,我们有如下对应的方式: ① 对于线性回归模型,我们利用测试集的数据计算代价函数J ② 对于逻辑回归模型,我们除了可以利用测试集数据来计算如下的代价函数外: ![](https://leanote.com/api/file/getImage?fileId=599109b2ab644147bd000cf4) 我们还可以采用如下的方式,对于每一个测试集实例,计算: ![](https://leanote.com/api/file/getImage?fileId=599109b2ab644147bd000cf5) 然后求求平均值: Test error=$\frac 1 {m_{test}} \sum \limits _{i=1} ^{m_{test}}err(h_\theta(x_{test}^{(i)}),y_{test}^{(i)})$ 2.model selection and train_validation_Test sets 在拟合模型的选择方面,如果我们要在10个不同次数的二项式模型中选取一个合适的模型进行拟合: ![](https://leanote.com/api/file/getImage?fileId=59910c58ab6441459b000d58) 显然模型中的次数越高越能更好地拟合训练集,但是这并不代表它能完美地拟合推广到的一般情况,所以我们需要使用cross validation set来帮助选择模型。 与上面不同的是,我们要将training set分为3个部分,即60%作为training set,20%作为cross validation set,20%作为test set: ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001110) 模型选择的方法如下: ① 使用训练集训练出10个模型 ② 用这10个模型分别对交叉验证集计算得出交叉验证误差 ③ 选取代价函数值最小的模型 ④ 用步骤3选出的模型对测试集进行计算得出推广误差,也就是代价函数的值 ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd00110e) 3.diagnosis bias versus variance 当运行一个拟合算法时,如果效果不理想,要么是偏差比较大,要么是方差比较大,换句话说,要么是欠拟合,要么是过拟合,我们将采用下面的方法来判断究竟一个算法时偏差过大还是方差过大。 我们通常将训练集和交叉验证集的代价函数误差和多项式的次数d共同绘制在一个坐标系中来帮助分析: ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001115) 由于training error和validation error分别如下所示: ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001113) 所以对于交叉验证集来说,当多项式的次数d较小时,拟合的不好,误差较大,但是当d逐渐增大的时候,误差会呈先小后大的趋势,这是因为交叉验证误差实际上对应的就是实际数据,也就是说我们用过拟合的模型来预测实际情况,与实际的偏差会很大,所以方差会很大。 那么如果我们的交叉验证集误差较大,如何判断是bias亦或是variance呢,根据上面的坐标曲线我们可以看出来,当training error和cross validation error接近的时候,一般是欠拟合的情况,也就是bias;当training error和cross validation error相差较大时,一般是过拟合的情况,也就是variance。 ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001111) 4.regularzation and bias_variance 在选择模型的过程中,我们会加入正则化参数来防止过拟合,但是当$\lambda$选取的过高或者过低的时候也会出现上述与多项式次数相似的问题,所以在正则化系数的选择上,我们通常采用0-10之间,步长依次为2倍的数值,比如 ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001112) 我们同样将训练集分为3部分,在已选取了合适的模型的情况下选取合适的正则化系数: ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd00110f) 选择的方法为: ① 使用训练集训练出12个不同程度的正则化模型 ② 用这12个模型分别对交叉验证集进行计算得出12个交叉验证误差 ③ 选取交叉验证误差最小的模型 ④ 运用步骤3的模型计算出推广误差 将代价函数与$\lambda$绘制到同一个坐标系中: ![](https://leanote.com/api/file/getImage?fileId=59912686ab644147bd001114) 当$\lambda$较小时,训练集误差较小(过拟合)而交叉验证集误差较大;随着$\lambda$的增加,训练集误差不断增加(欠拟合),而交叉验证集误差先减小后增加。 5.learning curves learning curves是一个很好地工具,可以用于判断一个算法究竟是处于偏差或是方差问题,它是对学习算法一个sanity check,实质上是将训练集和交叉验证集的误差作为样本数m的函数在同一坐标系挥着得到的图像。 ![](https://leanote.com/api/file/getImage?fileId=59925e44ab644131d3000960) 很明显,随着m的增加,在总体趋势上,$J_{train}$会逐步增加,而$J_{cv}$会逐渐减少。如果我们以一条直线作为拟合的hypothesis,显然无论样本量如何增加,它都无法很好地拟合,其学习曲线如下: ![](https://leanote.com/api/file/getImage?fileId=59925e44ab644131d3000961) 虽然最后$J_{train}$和$J_{cv}$十分接近了,但是在总体上还是一个较大的误差,也就是说当拟合函数处于high bias的情况下,增加training samples并不能帮助训练。 假如我们采用一个高达100次项的二项式来拟合,并且正则化系数非常小,那么很明显在样本数相同的情况下,二者的误差会相差的很大,因为其并不能很好地拟合一般情况,但是如果给予它足够多的样本的话,误差会逐步的减小,知道贴近训练集误差,也就是说对于high variance的模型,增加样本可以帮助训练: ![](https://leanote.com/api/file/getImage?fileId=59925e44ab644131d3000962) 回到我们之前的模型改进的问题上,我们可以根据这些得到如下的模型改进方法: ① 获得更多的training data——解决高方差 ② 尝试减少特征数量——解决高方差 ③ 尝试获得更多的特征——解决高偏差 ④ 尝试增加多项式特征——解决高偏差 ⑤ 尝试减少正则化参数$\lambda$——解决高偏差 ⑥ 尝试增加正则化参数$\lambda$——解决高方差 关于神经网络的偏差和方差的问题上: ![](https://leanote.com/api/file/getImage?fileId=59925fd2ab644131d30009ab) 使用较小的神经网络的话,类似于参数较少的情况,显然会造成高偏差的问题,导致欠拟合;同样的,使用较复杂的神经网络的话,类似于参数较多的情况,会造成高方差的问题,导致过拟合。但是通常情况下复杂的神经网络比简单的神经网络拟合效果要好,所以在选择神经网络的hidden layer时,可以将训练数据分为3部分,从1到多逐步训练神经网络,然后选取交叉验证集误差最小的模型。 6.error metrics for screwed class 在之前的误差评估分析时,设定某一个实数来评估我们的学习算法是非常重要的,选取一个合适的误差度量值是非常重要的,因为这有时会对算法产生微妙的影响,这就是screwed class问题,表现为在分类上,我们的训练集有非常多的同一类实例,没有或几乎没有其它类的实例。 比如在肿瘤问题上,如果我们的训练集中只有0.5%是恶性的,那我们将所有的预测样本都设定为良性的,在误差上也是只有0.5%的,显然这种方法的误差评估并不适用这种情况,我们在这里引入 precision和recall,即查准率和查全率: true positive:预测为真,实际为真 true negative:预测为假,实际为假 false positive:预测为真,实际为假 false negative:预测为假,实际为真 则: 在查准率$\frac{TP}{TP+FP}$上,我们希望在我们所有预测的恶性肿瘤的患者中,实际上的恶性肿瘤的患者比例越多越好; 在查全率$\frac{TP}{TP+FN}$上,我们希望在所有实际有恶性肿瘤的患者中,成功预测出的比例越高越好。 这样在我们刚才提到的预测全良的算法中,虽然其查准率较高,但是其查全率为0。 关于衡量查准率和查全率的阙值上,我们可以采用一个公式: $F_1Score=2\frac {PR}{P+R}$ 我们选择F1最高对应的阙值。
week 7
week 9
0
赞
2 人读过
新浪微博
微信
更多分享
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航