1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        從 0 開始機(jī)器學(xué)習(xí) - 機(jī)器學(xué)習(xí)算法診斷

        共 3439字,需瀏覽 7分鐘

         ·

        2020-07-20 00:18

        5f231198117e1d145ee81f770c47022b.webp


        登龍

        這是我的第 135?篇原創(chuàng)


        今天跟大家分享下如何診斷一個算法是否存在偏差或者方差的問題,以及如何選擇優(yōu)化算法的方向。

        一、如何確定下一步的計(jì)劃?

        當(dāng)我們設(shè)計(jì)了一個機(jī)器學(xué)習(xí)算法,比如線性回歸或邏輯回歸,并且算法已經(jīng)能夠正常工作,只是效果還不是太好,那用什么方法來提高算法的性能或者準(zhǔn)確度呢?或者說在想辦法提升性能之前,有沒有一種方法來告訴我們下一步對我們設(shè)計(jì)的機(jī)器學(xué)習(xí)算法該采取什么步驟,比如:

        1. 獲得更多的訓(xùn)練樣本
        2. 嘗試減少特征的數(shù)量
        3. 嘗試獲得更多的特征
        4. 嘗試增加多項(xiàng)式特征
        5. 嘗試減少正則化程度
        6. 嘗試增加正則化程度
        7. ...

        上面 6 種思路都可以作為提升一個算法性能的選擇,可是我們對一個算法到底該選擇哪一種優(yōu)化的思路呢?今天就跟大家分享下如何來評估一個機(jī)器學(xué)習(xí)算法,也稱為機(jī)器學(xué)習(xí)診斷法,這個方法可以明確地告訴我們:要想進(jìn)一步提升算法的性能,我們到底該采取什么方法是比較有效地,是增加訓(xùn)練集數(shù)量,還是增加或者減少特征數(shù)等。

        使用這個方法的必要性是可以幫助我們節(jié)省時間,讓我們可以更加明確優(yōu)化算法的方向,不至于像無頭蒼蠅一樣胡亂的選擇優(yōu)化思路,最終效果還不行。

        二、訓(xùn)練集、交叉驗(yàn)證集,測試集

        在學(xué)習(xí)診斷法之前,需要先對訓(xùn)練數(shù)據(jù)集進(jìn)行處理,對于特征變量比較少的情況,我們可以直接畫出假設(shè)函數(shù)在訓(xùn)練集上的擬合效果,比如:

        2438e70aae5130970080787d986ddc5d.webp

        但是當(dāng)特征數(shù)量很多以至于不能用曲線表示擬合效果時,就需要用另外一種代價函數(shù)誤差指標(biāo)的方法來衡量假設(shè)函數(shù)的擬合效果,為此需要把原始數(shù)據(jù)集進(jìn)行拆分:

        • 70% 作為訓(xùn)練集 training set
        • 30% 作為測試集 test set

        這樣我們就有了用來評估模型效果的測試數(shù)據(jù)集了,首先把模型在訓(xùn)練集上進(jìn)行訓(xùn)練,然后用測試集計(jì)算模型的代價函數(shù)誤差 ,但是在訓(xùn)練集上擬合較好的模型不一定能適應(yīng)新的樣本,為此我們再拆分一個 交叉驗(yàn)證集幫助我們選擇訓(xùn)練集上訓(xùn)練的模型,為此再對數(shù)據(jù)集拆分:

        • 60% 作為訓(xùn)練集 training set
        • 20% 作為交叉驗(yàn)證集 cross validation set
        • 20% 作為測試集 test set

        之后使用這 3 個數(shù)據(jù)集對多個模型進(jìn)行訓(xùn)練或者評估:

        1. 在訓(xùn)練集上訓(xùn)練個模型,并計(jì)算訓(xùn)練誤差
        2. 在交叉驗(yàn)證集上計(jì)算代價函數(shù)的交叉驗(yàn)證誤差
        3. 選擇交叉驗(yàn)證誤差最小的模型
        4. 在測試集上計(jì)算上一步選擇的最小模型的代價函數(shù)推廣誤差

        以上的 3 個誤差均為平方誤差代價函數(shù),只是在不同的數(shù)據(jù)集上進(jìn)行的計(jì)算:

        接下來我們分別在訓(xùn)練集和交叉驗(yàn)證集上用曲線做對比分析,以此來分析當(dāng)前算法存在高偏差問題還是高方差問題。

        三、多項(xiàng)式次數(shù)與偏差和方差的曲線

        通過之前博客的學(xué)習(xí)我們已經(jīng)知道:

        • 高偏差問題:模型欠擬合 (underfitting)
        • 高方差問題:模型過擬合(overfitting)

        通過前面拆分的訓(xùn)練集合交叉驗(yàn)證集,我們可以畫出一個模型的多項(xiàng)式次數(shù) - 代價函數(shù)誤差的曲線,以此通過曲線來幫助我們分析當(dāng)前的模型是欠擬合還是過擬合,比如下面的曲線:

        c1cf461ea33517b7de3f35f1baa9f91d.webp

        解釋下:

        • 橫坐標(biāo)代表假設(shè)函數(shù)(模型)的多項(xiàng)式次數(shù) d
        • 縱坐標(biāo)表示代價函數(shù)的誤差 error
        • 表示模型在交叉驗(yàn)證集上的代價函數(shù)誤差
        • 表示模型在訓(xùn)練集上的代價函數(shù)誤差

        從上面的曲線中我們可以發(fā)現(xiàn) 3 個關(guān)鍵位置及其含義:

        78874870f7272a77d8ac96465d5d2789.webp

        3.1 多項(xiàng)式次數(shù) d 較小

        因?yàn)槟P偷拇螖?shù)低,所以擬合訓(xùn)練集和交叉驗(yàn)證集的誤差都比較大,從曲線上看 與 誤差近似,都挺大的。

        3.2 多項(xiàng)式次數(shù) d 合適

        當(dāng)我們選擇一個合適的模型時,訓(xùn)練集和交叉驗(yàn)證集的誤差都比較小,并且交叉驗(yàn)證集的誤差處于最低點(diǎn),這說明當(dāng)前多項(xiàng)式次數(shù)對應(yīng)的模型擬合交叉驗(yàn)證集的效果最好。

        3.3 多項(xiàng)式次數(shù) d 較大

        但是當(dāng)我們繼續(xù)增大模型的多項(xiàng)式次數(shù)后,會發(fā)現(xiàn)訓(xùn)練集誤差繼續(xù)減少,但是交叉驗(yàn)證誤差卻反而增大了,這是因?yàn)槲覀冞x擇的多項(xiàng)式次數(shù)太高,模型在交叉驗(yàn)證集上產(chǎn)生了過擬合,也即方差太大。

        通過以上 3 個關(guān)鍵的位置,可以得出以下的結(jié)論:

        • 與 近似時:模型欠擬合,偏差(Bias)較大
        • 遠(yuǎn)大于 時:模型過擬合,方差(Variance)較大

        四、正則化系數(shù)與偏差和方差的曲線

        除了分析模型的多項(xiàng)式次數(shù)與偏差方法的關(guān)系,我們還可以分析正則化系數(shù),這可以幫助我們選擇一個合適的正則化系數(shù)來防止過擬合,通過前面的學(xué)習(xí)我們知道:

        • 正則化系數(shù) 太大:模型容易欠擬合,偏差較大
        • 正則化系數(shù) 合適:模型擬合效果較好
        • 正則化系數(shù) 太?。耗P腿菀走^擬合,方差較大

        如:

        ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/multi_lamda .jpg)

        為了分析正則化系數(shù)對模型的影響,我們同樣可以在前面的 3 個數(shù)據(jù)集上進(jìn)行多組不同正則化系數(shù)模型的誤差計(jì)算:

        • training set 上訓(xùn)練多組不同正則化系數(shù)的模型
        • 分別在 cross validation set 上計(jì)算每組的代價函數(shù)交叉驗(yàn)證誤差
        • 選擇交叉驗(yàn)證誤差最小的模型
        • 將誤差最小的模型在 test set 上計(jì)算推廣誤差

        在這個過程中,我們可以畫出正則化系數(shù)與代價函數(shù)誤差的關(guān)系:

        bb18475b089e0bfb45c7edf7d5e11f41.webp

        解釋下曲線上關(guān)鍵的 3 個位置:

        4.1 較小

        因?yàn)檎齽t化系數(shù)較小,模型在訓(xùn)練集上產(chǎn)生過擬合,雖然誤差 比較小,但是在交叉驗(yàn)證集上的誤差 很大,這是因?yàn)樵谟?xùn)練集上過擬合的模型不能很好的適應(yīng)未知的樣本。

        4.2 合適

        當(dāng)選擇了一個合適的正則化系數(shù)時,模型在訓(xùn)練集和交叉驗(yàn)證集上的誤差都比較小,這也是我們想要的情況。

        4.3 較大

        當(dāng)正則化系數(shù)很大,模型在訓(xùn)練集上都不能很好地?cái)M合數(shù)據(jù)(欠擬合),更別說在未知上交叉驗(yàn)證集上測試了,所以這兩者的誤差都很大。

        也簡單總結(jié)下這個曲線:

        • 當(dāng) 較小:訓(xùn)練集誤差小,交叉驗(yàn)證集誤差大
        • 當(dāng) 不斷增大:訓(xùn)練集誤差逐漸增大,而交叉驗(yàn)證集誤差先減小再增大

        五、學(xué)習(xí)曲線

        除了以上的多項(xiàng)式次數(shù)、正則化系數(shù)與誤差的關(guān)系之外,還有一種很重要的稱為「學(xué)習(xí)曲線」的關(guān)系,它主要用來說明交叉驗(yàn)證誤差和訓(xùn)練集誤差隨著樣本數(shù)量變化的關(guān)系,可以用這個曲線幫助我們判斷一個算法在給定樣本規(guī)模的情況下是否存在偏差或者方差的問題。

        我們還是分析以下 2 個代價函數(shù)誤差:

        我們把這 2 者和樣本數(shù)量的關(guān)系畫成學(xué)習(xí)曲線:

        5c89ebe78d79a37817f3e4616eae1c70.webp

        因?yàn)槭欠治鰳颖緮?shù)量與這 2 個誤差的關(guān)系,所以我們分 2 種情況來討論。

        5.1 模型存在高偏差(欠擬合)問題

        當(dāng)模型欠擬合時,比如多項(xiàng)式次數(shù)太少(特征太少了),不管把樣本數(shù)量增大到多少,訓(xùn)練集誤差和交叉驗(yàn)證集誤差都不會下降很多,這種情況就說明我們的模型存在高偏差問題,也就是欠擬合了:

        81b05997926df5625923b79dc0d68483.webp

        這種情況下,如果你不用學(xué)習(xí)曲線來分析,而是直接憑感覺出發(fā)覺得我應(yīng)該多增加一些數(shù)據(jù),這樣模型的擬合效果應(yīng)該會更好,那就選錯了優(yōu)化的方向,從曲線上來看,不管你增加多少樣本,誤差是不會降低的。

        5.2 模型存在高方差(過擬合)問題

        現(xiàn)在假設(shè)我們有一個非常高次的多項(xiàng)式模型(特征很多),并且正則化系數(shù)很小時,如果訓(xùn)練樣本數(shù)很少,那么在訓(xùn)練集上會過擬合,導(dǎo)致在交叉驗(yàn)證集上誤差較大(過擬合不能很好的適應(yīng)新樣本),而當(dāng)增加樣本數(shù)量的時候,因?yàn)槲覀兡P陀凶銐蚨嗟奶卣?,所以不會輕易的過擬合,這樣隨著數(shù)量增多,訓(xùn)練集和交叉驗(yàn)證集的誤差都會減?。?/p>85d768bd03f3ba092d5cbc24660b2e51.webp

        簡單總結(jié)下就是:

        • 高偏差(欠擬合)的模型,增大樣本數(shù)量不一定對算法有幫助
        • 高方差(過擬合)的模型,增大樣本數(shù)量可能提升算法的效果

        這里也只可能的情況,因?yàn)閷?shí)際的模型可能很復(fù)雜,可能會存在一些特殊情況。

        六、現(xiàn)在決定下一步的思路

        學(xué)習(xí)完了如何診斷一個算法是否存在偏差或者方差問題后,我們就可以回答文章開頭提出的問題了,到底如何選擇優(yōu)化方向:

        1. 獲得更多的訓(xùn)練樣本 - 適用于高方差的模型
        2. 嘗試減少特征的數(shù)量 - 適用于高方差的模型
        3. 嘗試獲得更多的特征 - 適用于高偏差的模型
        4. 嘗試增加多項(xiàng)式特征 - 適用于高偏差的模型
        5. 嘗試減少正則化程度 - 適用于高偏差的模型
        6. 嘗試增加正則化程度 - 適用于高方差的模型

        知道如何診斷算法存在的問題后,就可以選擇對應(yīng)的優(yōu)化方向進(jìn)行針對性的工作,就不用盲目地選擇優(yōu)化方向,最后還可能是無用功。

        OK!今天就到這,大家下期見:)

        推薦閱讀:

        從 0 開始機(jī)器學(xué)習(xí) - 神經(jīng)網(wǎng)絡(luò)反向 BP 算法!

        從 0 開始機(jī)器學(xué)習(xí) - 神經(jīng)網(wǎng)絡(luò)識別手寫字符!

        從 0 開始機(jī)器學(xué)習(xí) - 邏輯回歸識別手寫字符!



        廈大同學(xué),與你分享編程,AI 算法等技術(shù)干貨!精品文章創(chuàng)作不易,謝謝關(guān)注,歡迎在看。


        26ecdf834452a5cb27555dd688697094.webp

        點(diǎn)擊閱讀原文,查看更多原創(chuàng)文章!

        瀏覽 39
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            伸进女同桌乳沟里摸爽了小说 | AAA大片免费看 | 中文字幕一二三区 | 依人在线 | 91亚洲欧美激情 | 国产福利一区在线 | 日韩无码插逼 | 做爱网址直接能看 | 俱乐部yin乱聚会小说 | 欧美一级婬片A片免费播放绣春 |