日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

机器学习系统设计与建议

發布時間:2024/7/23 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习系统设计与建议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我們在運用訓練好了的模型來預測未知數據的時候發現有較大的誤差,我們下一步可以 做什么?
1. 獲得更多的訓練實例——通常是有效的,但代價較大,下面的方法也可能有效,可 考慮先采用下面的幾種方法。
2. 嘗試減少特征的數量
3. 嘗試獲得更多的特征
4. 嘗試增加多項式特征
5. 嘗試減少歸一化程度 λ
6. 嘗試增加歸一化程度 λ

我們不應該隨機選擇上面的某種方法來改進我們的算法,而是運用一些機器學習診斷法
來幫助我們知道上面哪些方法對我們的算法是有效的。

評估一個假設
當我們確定學習算法的參數的時候,我們考慮的是選擇參量來使訓練誤差最小化,有人 認為得到一個非常小的訓練誤差一定是一件好事,但我們已經知道,僅僅是因為這個假設具 有很小的訓練誤差,并不能說明它就一定是一個好的假設函數。而且我們也學習了過擬合假 設函數的例子,所以這推廣到新的訓練集上是不適用的。

因此,我們需要另一種方法來評估我們的假設函數過擬合檢驗。
為了檢驗算法是否過擬合,我們將數據分成訓練集和測試集,通常用 70%的數據作為訓 練集,用剩下 30%的數據作為測試集。很重要的一點是訓練集和測試集均要含有各種類型的 數據,通常我們要對數據進行“洗牌”,然后再分成訓練集和測試集。

模型選擇和交叉驗證集
假設我們要在 10 個不同次數的二項式模型之間進行選擇:
顯然越高次數的多項式模型越能夠適應我們的訓練數據集,但是適應訓練數據集并不代 表著能推廣至一般情況,我們應該選擇一個更能適應一般情況的模型。我們需要使用交叉驗 證集來幫助選擇模型。
即:使用 60%的數據作為訓練集,使用 20%的數據作為交叉驗證集,使用 20%的數據 作為測試集

模型選擇的方法為:
1. 使用訓練集訓練出 10 個模型
2. 用 10 個模型分別對交叉驗證集計算得出交叉驗證誤差(代價函數的值)
3. 選取代價函數值最小的模型
4. 用步驟 3 中選出的模型對測試集計算得出推廣誤差(代價函數的值)

診斷偏差和方差
當你運行一個學習算法時,如果這個算法的表現不理想,那么多半是出現兩種情況:要 么是偏差比較大,要么是方差比較大。換句話說,出現的情況要么是欠擬合,要么是過擬合 問題。那么這兩種情況,哪個和偏差有關,哪個和方差有關,或者是不是和兩個都有關?搞 清楚這一點非常重要,因為能判斷出現的情況是這兩種情況中的哪一種。其實是一個很有效 的指示器,指引著可以改進算法的最有效的方法和途徑。

這個問題對于弄清如何改 進學習算法的效果非常重要,高偏差和高方差的問題基本上來說是欠擬合和過擬合的問題。

對于訓練集,當 d 較小時,模型擬合程度更低,誤差較大;隨著 d 的增長,擬合程度 高,誤差減小。
對于交叉驗證集,當 d 較小時,模型擬合程度低,誤差較大;但是隨著 d 的增長,誤差呈現先減小后增大的趨勢,轉折點是我們的模型開始過擬合訓練數據集的時候。

如果我們的交叉驗證集誤差較大,我們如何判斷是方差還是偏差呢? 根據上面的圖表, 我們知道:

訓練集誤差和交叉驗證集誤差近似時:偏差/欠擬合
交叉驗證集誤差遠大于訓練集誤差時:方差/過擬合

歸一化和偏差/方差
在我們在訓練模型的過程中,一般會使用一些歸一化方法來防止過擬合。但是我們可能 會歸一化的程度太高或太小了,即我們在選擇 λ 的值時也需要思考與剛才選擇多項式模型次 數類似的問題。

我們選擇一系列的想要測試的 λ 值,通常是 0-10 之間的呈現 2 倍關系的值(如: 0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 共 12 個)。 我們同樣把數據分為訓練 集、交叉驗證集和測試集。

選擇 λ 的方法為:
1. 使用訓練集訓練出 12 個不同程度歸一化的模型
2. 用 12 模型分別對交叉驗證集計算的出交叉驗證誤差
3. 選擇得出交叉驗證誤差最小的模型
4. 運用步驟 3 中選出模型對測試集計算得出推廣誤差,我們也可以同時將訓練集和交叉驗證集模型的代價函數誤差與 λ 的值繪制在一張圖表上:

當 λ 較小時,訓練集誤差較小(過擬合)而交叉驗證集誤差較大
隨著 λ 的增加,訓練集誤差不斷增加(欠擬合),而交叉驗證集誤差則是先減小后 增加

學習曲線

學習曲線就是一種很好的工具,我經常使用學習曲線來判斷某一個學習算法是否處于偏 差、方差問題。學習曲線是學習算法的一個很好的合理檢驗(sanity check)。學習曲線是將 訓練集誤差和交叉驗證集誤差作為訓練集實例數量(m)的函數繪制的圖表。

即,如果我們有 100 行數據,我們從 1 行數據開始,逐漸學習更多行的數據。思想是: 當訓練較少行數據的時候,訓練的模型將能夠非常完美地適應較少的訓練數據,但是訓練出 來的模型卻不能很好地適應交叉驗證集數據或測試集數據。

如何利用學習曲線識別高偏差/欠擬合: 作為例子,我們嘗試用一條直線來適應下面的 數據,可以看出,無論訓練集有多么大誤差都不會有太大改觀:

也就是說在高偏差/欠擬合的情況下,增加數據到訓練集不一定能有幫助。

如何利用學習曲線識別高方差/過擬合: 假設我們使用一個非常高次的多項式模型,并 且歸一化非常小,可以看出,當交叉驗證集誤差遠大于訓練集誤差時,往訓練集增加更多數 據可以提高模型的效果。

也就是說在高方差/過擬合的情況下,增加更多數據到訓練集可能可以 高算法效果。

決定下一步做什么
我們已經介紹了怎樣評價一個學習算法,我們討論了模型選擇問題,偏差和方差的問題。 那么這些診斷法則怎樣幫助我們判斷,哪些方法可能有助于改進學習算法的效果,而哪些可 能是徒勞的呢?
讓我們再次回到最開始的例子,在那里尋找答案,這就是我們之前的例子。回顧 1.1 中 出的六種可選的下一步,讓我們來看一看我們在什么情況下應該怎樣選擇:

  • 獲得更多的訓練實例——解決高方差
  • 嘗試減少特征的數量——解決高方差
  • 嘗試獲得更多的特征——解決高偏差
  • 嘗試增加多項式特征——解決高偏差
  • 嘗試減少歸一化程度 λ——解決高偏差
  • 嘗試增加歸一化程度 λ——解決高方差
  • 神經網絡的方差和偏差:

    使用較小的神經網絡,類似于參數較少的情況,容易導致高偏差和欠擬合,但計算代價 較小使用較大的神經網絡,類似于參數較多的情況,容易導致高方差和過擬合,雖然計算代 價比較大,但是可以通過歸一化手段來調整而更加適應數據。
    通常選擇較大的神經網絡并采用歸一化處理會比采用較小的神經網絡效果要好。

    對于神經網絡中的隱藏層的層數的選擇,通常從一層開始逐漸增加層數,為了更好地作選擇,可以把數據分為訓練集、交叉驗證集和測試集,針對不同隱藏層層數的神經網絡訓 練神經網絡, 然后選擇交叉驗證集代價最小的神經網絡。

    機器學習系統的設計

    首先要做什么
    以一個垃圾郵件分類器算法為例進行討論。
    為了解決這樣一個問題,我們首先要做的決定是如何選擇并表達特征向量 x。我們可以 選擇一個由 100 個最常出現在垃圾郵件中的詞所構成的列表,根據這些詞是否有在郵件中 出現,來獲得我們的特征向量(出現為 1,不出現為 0),尺寸為 100×1。
    為了構建這個分類器算法,我們可以做很多事,例如:

  • 收集更多的數據,讓我們有更多的垃圾郵件和非垃圾郵件的樣本
  • 基于郵件的路由信息開發一系列復雜的特征
  • 基于郵件的正文信息開發一系列復雜的特征,包括考慮截詞的處理
  • 為探測刻意的拼寫錯誤(把 watch 寫成 w4tch)開發復雜的算法
  • 在上面這些選項中,非常難決定應該在哪一項上花費時間和精力,作出明智的選擇,比隨著感覺走要更好。

    誤差分析
    構建一個學習算法的推薦方法為:
    1. 從一個簡單的能快速實現的算法開始,實現該算法并用交叉驗證集數據測試這個算 法
    2. 繪制學習曲線,決定是增加更多數據,或者添加更多特征,還是其他選擇
    3. 進行誤差分析:人工檢查交叉驗證集中我們算法中產生預測誤差的實例,看看這些實例是否有某種系統化的趨勢

    類偏斜的誤差度量
    在前面的課程中,我 到了誤差分析,以及設定誤差度量值的重要性。那就是,設定某 個實數來評估你的學習算法,并衡量它的表現,有了算法的評估和誤差度量值。有一件重要 的事情要注意,就是使用一個合適的誤差度量值,這有時會對于你的學習算法造成非常微妙 的影響,這件重要的事情就是偏斜類(skewed classes)的問題。類偏斜情況表現為我們的訓 練集中有非常多的同一種類的實例,只有很少或沒有其他類的實例。

    例如我們希望用算法來預測癌癥是否是惡性的,在我們的訓練集中,只有 0.5%的實例 是惡性腫瘤。假設我們編寫一個非學習而來的算法,在所有情況下都預測腫瘤是良性的,那 么誤差只有 0.5%。然而我們通過訓練而得到的神經網絡算法卻有 1%的誤差。這時,誤差的 大小是不能視為評判算法效果的依據的。

    查準率(Precision)和查全率(Recall) 我們將算法預測的結果分成四種情況:
    1. 正確肯定(True Positive,TP):預測為真,實際為真
    2. 正確否定(True Negative,TN):預測為假,實際為假
    3. 錯誤肯定(False Positive,FP):預測為真,實際為假
    4. 錯誤否定(False Negative,FN):預測為假,實際為真

    則: 查準率=TP/(TP+FP)例,在所有我們預測有惡性腫瘤的病人中,實際上有惡性腫瘤的病
    人的百分比,越高越好。

    查全率=TP/(TP+FN)例,在所有實際上有惡性腫瘤的病人中,成功預測有惡性腫瘤的
    病人的百分比,越高越好。

    這樣,對于我們剛才那個總是預測病人腫瘤為良性的算法,其查全率是 0。

    查全率和查準率之間的權衡

    在之前的課程中,我們談到查準率和召回率,作為遇到偏斜類問題的評估度量值。在很 多應用中,我們希望能夠保證查準率和召回率的相對平衡。

    在這節課中,我將告訴你應該怎么做,同時也向你展示一些查準率和召回率作為算法評 估度量值的更有效的方式。繼續沿用剛才預測腫瘤性質的例子。假使,我們的算法輸出的結 果在 0-1 之間,我們使用閥值 0.5 來預測真和假。

    查準率(Precision)=TP/(TP+FP) 例,在所有我們預測有惡性腫瘤的病人中,實際上 有惡性腫瘤的病人的百分比,越高越好。
    查全率(Recall)=TP/(TP+FN)例,在所有實際上有惡性腫瘤的病人中,成功預測有惡 性腫瘤的病人的百分比,越高越好。
    如果我們希望只在非常確信的情況下預測為真(腫瘤為惡性),即我們希望更高的查準 率,我們可以使用比 0.5 更大的閥值,如 0.7,0.9。這樣做我們會減少錯誤預測病人為惡性 腫瘤的情況,同時卻會增加未能成功預測腫瘤為惡性的情況。
    如果我們希望 高查全率,盡可能地讓所有有可能是惡性腫瘤的病人都得到進一步地檢 查、診斷,我們可以使用比 0.5 更小的閥值,如 0.3。

    我們可以將不同閥值情況下,查全率與查準率的關系繪制成圖表,曲線的形狀根據數據 的不同而不同:

    機器學習的數據
    大部分算法,都具有相似的性能,其次,隨著訓練數據集的增大, 在橫軸上代表以百萬為單位的訓練集大小,從 0.1 個百萬到 1000 百萬,也就是到了 10 億規 模的訓練集的樣本,這些算法的性能也都對應地增強了。
    事實上,如果你選擇任意一個算法,可能是選擇了一個”劣等的”算法,如果你給這個劣 等算法更多的數據,那么從這些例子中看起來的話,它看上去很有可能會其他算法更好,甚 至會比”優等算法”更好。

    我覺得關鍵的測試:首先,一個人類專家看到了特征值 x,能很有信心的預測出 y 值嗎? 因為這可以證明 y 可以根據特征值 x 被準確地預測出來。其次,我們實際上能得到一組龐 大的訓練集,并且在這個訓練集中訓練一個有很多參數的學習算法嗎?如果你能做到這兩 者,那么更多時候,你會得到一個性能很好的學習算法。

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的机器学习系统设计与建议的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。