【Day 7】机器学习基本功(五)

误差(Error)来自什麽地方?

  • 来自於偏差(Bias)
  • 来自於方差(Variance)

假设我们需要估测靶的中心 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f,收集了一些资料进行一次训练结果找到的可能是 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*
我们只要做很多次实验把所有 https://chart.googleapis.com/chart?cht=tx&chl=f%5E* 的期望值 https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20f 算出来,就可以发现 https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20fhttps://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 有一个Bias,而 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20f 之间的距离就是Variance。因此我们最希望找到的是图中左上角的状况,没有什麽bias,variance也很小。

方差(Variance)

我们只要抓不同的训练资料进行训练就可以找到很多的 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*,而当今天模型比较简单的时候,Variance就会比较小,相反的,模型比较复杂的时候,Variance就会很大,会这样是因为简单的模型比较不会受到资料的影响。

偏差(Bias)

前面有提到Bias就是把所有 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*的平均值 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 算出来,并去看 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 的差距,但事实上我们并不会知道 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 是什麽,因此我们就要自己假设一个 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f

在前几天的机器学习基本功(一)里有提到,我们要找的function就是从我们定义的model里面找出来的,但如果是简单的模型,它包含的范围是比较小的,就有可能根本就没有包含我们要找的目标,但如果模型是比较复杂的就很有机会会是包含我们要找的目标。

Bias v.s. Variance

  • Error = Bias + Variance

简单的model就是Bias比较大但是Variance比较小,而复杂的model就是Variance比较大,Bias比较小。当我们同时考虑了Bias跟Variance就会是我们的Error。
当我们的误差来自於Variance很大的时候就会产生Overfitting,而当我们的误差来自於Bias很大的时候就会产生Underfitting。

如何判断Large Bias?

Large Bias就是你的model没有办法fit你的训练资料的时候,就代表你的model跟正确的model有很大的差距,也就是Underfitting。
如果遇到Underfitting的情况发生,就需要重新设计模型,像是考虑更多feature或是让模型变得更复杂等等。

如何判断Large Variance?

Large Variance就是你可以fit你的训练资料,你在训练资料上得到的误差很小,但是在测试资料上却得到很大的误差,即Overfitting。
昨天在机器学习基本功(四)也介绍过Overfitting了,解决方法就是增加更多的训练资料或是正规化(Regularization),但是正规化可能会影响到你的Bias,必须要调整你的权重来在Variance跟Bias之间取得平衡。

交叉验证(Cross Validation)

如果使用全部的训练资料去训练模型,就会导致那些实际的测试资料得到的误差大於你在自己的测试资料上面反映的误差,也就是说找到的就不会是最好的模型。

因此我们必须要将训练资料分成两组,一组是要拿去训练模型的Training set,另一组是拿来选模型的Validation set。先在Training set上找出最好的 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*,再用Validation set来选择模型,当找到一个最好的model时,就可以再用全部的训练资料去训练,这时候拿去测试资料反映出的误差才是真正的误差。

N-fold Cross Validation

顾名思义就是将训练资料分成 https://chart.googleapis.com/chart?cht=tx&chl=N 份,拿某一份出来当Validation set,其他当作Training set。去计算平均误差找到最好的模型後,一样再将全部的训练资料拿去训练。


参考资料

李宏毅老师 - ML Lecture 2


<<:  [Day19] Esp32用AP mode + AHT10

>>:  第 5 天 还我漂漂拳| property binding、interface

图的深度广度检查 - DAY 25

深度优先检查 像是走迷宫一样,摸着同一面(左或右)墙,一路走,遇到已经标住过的节点,就选择其他节点走...

【Day28】一些面试相关的题目

7年资深 iOS 开发工程师,5 道题全面考察候选人,看看你能过几招? 今天看到觉得好像蛮重要的,所...

前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day16 文章留言区块

连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...

qpushbutton 不同的字不同大小和顔色

由於不同的字用不同的样式,所以需要用到html来设定: //add take buttons wit...

档案服务器架构设计备忘

档案服务器架构设计备忘.docx ...