评估学习算法

在使用学习算法解决机器学习问题时,可能预测函数的误差很小,但是这个学习算法不确定是不是准确的,因为可能出现过拟合的情况。

因为仅仅用一个训练集来判断学习算法是否准确是不行的,为此我们需要将原始数据集拆分成三个:

  • 训练集 (Training set) 占60%
  • 交叉验证集 (Cross validation set) 占20%
  • 测试集 (Test set) 占20%

学习模型的选择

例如在线性回归问题中,训练集有一个特征值x,在选择模型时,选择几次项:
1 . h_\theta(x)=\theta_0+\theta_1x
2 . h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2
3 . h_\theta(x)=\theta_0+\theta_1x+...+\theta_3x^3
...
10 . h_\theta(x)=\theta_0+\theta_1x+...+\theta_{10}x^{10}

首先分成三个样本集:
训练集:(x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}), ..., (x^{(m)},y^{(m)})
交叉验证集:(x_{cv}^{(1)},y_{cv}^{(1)}), (x_{cv}^{(2)},y_{cv}^{(2)}), ..., (x_{cv}^{(m_{cv})},y_{cv}^{(m_{cv})})
测试集:(x_{test}^{(1)},y_{test}^{(1)}), (x_{test}^{(2)},y_{test}^{(2)}), ..., (x_{test}^{(m_{test})},y_{test}^{(m_{test})})

分开的三个样本集上的误差:
J_{train}(\Theta)=\frac{1}{2m} \sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})^2
J_{cv}(\Theta)=\frac{1}{2m_{cv}} \sum_{i=0}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2
J_{test}(\Theta)=\frac{1}{2m_{test}} \sum_{i=0}^{m_{test}}(h_\theta(x_{test}^{(i)})-y_{test}^{(i)})^2

选择模型的步骤:

  • 将上面十个模型在训练集上优化每个模型的参数\theta
  • 在交叉验证集上找出一个误差最小的模型;
  • 在测试集上用J_{test}(\Theta)来估计泛化误差。

这样的操作是的测试集与训练集,交叉验证集完全分离开,互不影响。在测试集上的泛化误差比较准确。

偏差(Bias)和方差(Variance)

当一个算法在使用时并不理想,会有两种情况,高偏差(欠拟合)或高方差(过拟合)。

还是上面的线性回归例子。通过选择不同模型,比较它们在训练集和交叉验证集上的表现结果:

上图中,x轴是多项式的次数,可以看作是函数的复杂程度,y轴是代价函数的值。

在训练集上:当函数简单时,代价函数值很大,预测函数效果不好,随着多项式的增加,函数复杂度的增加,拟合效果越来越小,代价趋向于零。
在交叉验证集上:当函数简单时,代价函数值很大,预测函数效果不好,多项式在增加到一定程度前,代价一直在下降,当下降到一定程度是,代价函数又会上升,拟合效果又变差了。

高偏差(Bias):J_{train}(\Theta)J_{cv}(\Theta)都很高,而且两者非常接近,J_{train}(\Theta)\approx J_{cv}(\Theta)
高方差(Variance):J_{train}(\Theta)很小,J_{cv}(\Theta)远远大于J_{train}(\Theta)

在实际使用时,需要在中间找一个平衡点,避免高偏差和高方差

正则化

通过正则化能够解决过拟合的问题,但是它在欠拟合也就是高偏差情况下效果并不明显。

上面的线性回归例子,选择一个模型:
h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4
它的正则化后的代价函数:
J(\theta)= \frac{1}{2m} \sum_{i=0}^m (h_\theta(x^{(i)})-y^{(i)})^2 + \frac{\lambda}{2m} \sum_{j=1}^n\theta_j^2

PS: 上面的J_{train}(\Theta),J_{cv}(\Theta),J_{test}(\Theta)定义里面没有加上正则化,所以上面的训练集,交叉验证集,测试集都是在没有正则化的情况的误差

现在我们要做的是先选择一系列的\lambda值,比如:
0, 0.01, 0.02, 0.04, 0.08, 0.16, 0.32, 0.64, 1.28, 2.56, 5.12, 10.24
通过正则化得出优化的参数\theta

然后使用这些优化参数得出J_{train}(\Theta),J_{cv}(\Theta)
J_{train}(\Theta)=\frac{1}{2m} \sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})^2
J_{cv}(\Theta)=\frac{1}{2m_{cv}} \sum_{i=0}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2
注意,这里的误差都没有加上正则化项目

比较每个\lambda值下的代价函数的曲线:

在训练集上: 随着\lambda的增大,代价函数的值越来越大,效果越来越差。
在交叉验证集上: 先随着\lambda在一定范围下增大,代价函数的值在减小,超过一个程度后,代价函数会增大。

\lambda为0,或很小时,是高方差;当\lambda过大时,是高偏差。

同样的需要找一个\lambda使得代价函数在训练集和交叉验证集上平衡的。

学习曲线(Learning Curves)

画出随着样本集数量的增加,代价函数的值的变化曲线。
训练集和交叉验证集的误差:
J_{train}(\Theta)=\frac{1}{2m} \sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})^2
J_{cv}(\Theta)=\frac{1}{2m_{cv}} \sum_{i=0}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2

当样本集数量很少时,训练集的误差很小,因为两三个样本总能够用一个直线达到不错的拟合效果,但是在交叉验证集上体现的并不好。
随着样本数量的增大,训练集的误差增大,而在交叉验证集上的体现会改善,误差会减小。

高偏差
在高偏差情况下,随着样本数量的增大,训练集和验证集的误差趋向于相等,但是都会偏高,与预期效果不符。

高偏差学习曲线

高方差
在高方差下,随着样本增加,训练集的误差会增加,但是增加的幅度很小;在验证集上,误差会减小,但是仍然大于训练集误差。

高方差学习曲线

可以看出,在高方差下,增加样本数量会有助于算法的优化。但是在高偏差下,增加样本数量并没有多少用处。

通过以上方法,在解决机器学习问题中,有以下方法可以帮助优化算法:

  • 获取更多样本:优化高方差
  • 减少特征值的数量:优化高方差
  • 添加特征值:优化高偏差
  • 添加多项式次数,复杂的预测函数:优化高偏差
  • 减小\lambda:解决高偏差
  • 增加\lambda:解决高方差

转载自:
https://codeeper.com/2020/01/26/tech/machine_learning/evaluating_learning_algorithm.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容

  • 应用机器学习的建议 第八十三课:决定下一步做什么? 在懂得学习算法的人中仍然存在着很大的差距,一些人掌握了怎样高效...
    带刺的小花_ea97阅读 1,356评论 1 6
  • 之前浏览Coursera上机器学习方面的课程,Andrew Ng的《Machine Learning》课程评分一直...
    黑洞王阅读 1,573评论 0 2
  • 一、机器学习策略的原因 机器学习是无数重要应用程序的基础,包括网络搜索,电子邮件反垃圾邮件,语音识别,产品推荐等。...
    阳光前阅读 676评论 0 0
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,520评论 0 6
  • 村里▏喀克时光 初春时节,夏日里浩浩荡荡的跃进渠里此刻还一片安静,只有渠沿不知何时散落的芦苇种子长得很茁壮,飘荡的...
    蔡立鹏阅读 232评论 0 0