機器學習-2
本文來自於網易雲課堂
這一部分和之前的內容有相當多的重合!之前的文章已經介紹過這一部分內容了深度學習的實用層面
設立訓練集、驗證集和測試集
設立訓練集,驗證集和測試集的方式大大影響了你或者你的團隊建立機器學習應用方面取得進展的進度。不同的團隊即使是大公司的團隊,錯誤的設立這些集合的方式會讓團隊的進度變慢。那麼我們該如何設立這些資料集來讓你的團隊效率最大化呢?
dev集,也就是開發集(development set),有時也叫做交叉驗證集(cross validation set)。機器學習的工作流程是,你嘗試很多思路,用訓練集訓練很多不同的模型,然後使用開發集來評估不同的思路,然後選擇一個,然後不斷迭代去改善開發集的效能。直到最後你得到一個令人滿意的成本,然後你在用測試集去評估。
假設你在訓練一個貓分類器,你使用了前4個國家和地區的資料作為驗證集,使用了後面幾個的資料作為測試集。然後,你設定了一個指標。那麼這個dev set和這個指標就相當於圖中的靶心,意思就是讓團隊不斷朝著靶心努力。一旦建立了這樣的目標,整個團隊就會不斷的快速迭代,嘗試不同的想法,做實驗,可以很快的開發出不同的模型並選出最好的那個。機器學習團隊一般都很擅長使用不同的方法去逼近目標。但是,dev set和test set的設定是有問題的,那麼可能經過幾個月的不斷的嘗試迭代之後,團隊“驚喜”的發現,花了那麼多月的時間針對開發集做優化,在測試集上的表現卻不佳。
針對這樣的情況,Andrew Ng 建議你將所有資料洗牌,放入開發集和測試集,所有的開發集和測試集都含有8個國家的資料並符合同一分佈。
這裡給出了一個方針:
choose a dev set and test set (same distribution) to reflect data you expected to get in the future and consider important to do well
資料集的規模
那麼驗證集和測試集的規模需要多大呢?可以見這篇文章
深度學習的實用層面
測試集的目的是完成了系統開發後,測試集可以幫你評估投產系統的效能,方針(guideline)就是令測試集足夠大,能夠以高置信度評估整體效能和不同的想法。
之前講了設定開發集和評估指標,如同設定一個靶子,讓團隊去瞄準,但有時候可能這個專案在進行的過程中,你意識到目標的位置放錯了,這種情況下,你應該移動你的目標。
什麼時候改變指標
為什麼是人的表現?
在過去的幾年裡,更多的機器學習團隊一直在討論,如何比較機器學習系統和人類的表現。為什麼會這樣呢?Andrew Ng認為主要有2個原因,首先因為深度學習的進步,機器學習演算法突然變得更好了,在許多領域機器學習演算法以及威脅到人類的表現了。其次,事實證明,當你試圖讓機器做人類能做的事情時,可以精心設計機器學習的流程讓你的工作流程效率更高。所以,在這些場合,比較人類和機器是很自然的。
隨著時間的增長,機器學習的效能無法超過某個理論上限,就是所謂的貝葉斯最優誤差,也就是說沒有任何辦法設計出1個x->y的函式讓它能夠超過一定的準確度。比如對於貓分類,給一個非常模糊的圖片,無論是人還是機器都無法識別出裡面是否有貓,也就是準確率無法達到100%。而貝葉斯誤差就是從x到y對映的理論最優函式。對於人類擅長的東西,包括看圖識別實物,聽寫音訊,或者閱讀語言,人類一般很擅長處理這些自然資料,只要機器學習比人類差,你就可以從讓人幫你標記例子(花錢),這樣有更多的資料可以餵給學習演算法或者分析誤差和偏差方差,然後提高機器學習演算法的效能。
可避免偏差
之前討論過,你希望你的學習演算法能在訓練集上表現良好,但有時你實際上並不想做的 太好。你得知道人類水平的表現是怎樣的,可以確切告訴你演算法在訓練集上的表現。
還是以貓分類為例,假如說人的誤差為1%,而訓練誤差和開發誤差分別打到8%、10%,那麼我們可能會集中精力去減少偏差。而如果說人的誤差差不多,這時我們可能會集中精力去減少方差。這裡我們稱貝葉斯誤差(這裡我們可以認為人類表現近似就是貝葉斯誤差)和訓練集誤差的差值稱為可避免誤差。它表明了你可以一直接近但實際上你做不到比貝葉斯誤差更好,除非過擬合。訓練集和驗證集的差大概說明你的演算法在方差問題上還有多少改善空間。在這個例子中,當你理解人類水平誤差,理解你對貝葉斯誤差的估計,你就可以在不同的場景中專注於不同的策略如使用避免偏差 策略還是避免方差策略。
理解人的表現
人類水平誤差用來估計貝葉斯誤差(human-level error as a proxy for Bayes error)
這個時候我們應該如何界定人類水平誤差?是3%,1%,0.7%還是0.5%?思考人類誤差最有用的方式之一是把它作為貝葉斯誤差的替代或估計,從這個例子來看,經過團隊討論,誤差可以達到0.5%,那麼根據定義貝葉斯誤差必須在0.5%以下,那麼在這個背景下我就可以用0.5%估計貝葉斯誤差,所以將人類水平定義為0.5%。但是如果是為了發表論文或者是部署系統,可能只需要超過一個醫生的水平就達到應用的地步了。
具體的應用是和你的目標相關的。而在具體分析的時候更大程度上是看可避免偏差和方差,哪個更大我們實際上更關注哪個。
改善你的模型表現
如何提高演算法表現的指導方針:
假如說你已經完成了這麼兩件事
1. 首先你的演算法對訓練集擬合的很好。這意味著你你能做到可避免偏差很低。
2. 在訓練集上表現很好,推廣到開發集和測試集上表現也很好。這就是說方差不是太大。
相關文章
- 機器學習(2)機器學習
- 機器學習2-特徵工程機器學習特徵工程
- 《機器學習實踐》程式清單2-2機器學習
- 機器學習導圖系列(2):概念機器學習
- (轉)機器學習:偏差處理(2)機器學習
- 機器學習之統計分析(2)機器學習
- 【機器學習】Logistic迴歸ex2data2機器學習
- 嘗試 H2o 做機器學習機器學習
- MCMC-2|機器學習推導系列(十六)機器學習
- 機器學習筆記(2): Logistic 迴歸機器學習筆記
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)機器學習
- 吳恩達《構建機器學習專案》課程筆記(2)– 機器學習策略(下)吳恩達機器學習筆記
- 【2】使用MATLAB進行機器學習(迴歸)Matlab機器學習
- 機器學習4-分類演算法2機器學習演算法
- 機器學習回顧篇(2):最小二乘法機器學習
- P2 鄒博機器學習logistic迴歸機器學習
- 史丹佛機器學習教程學習筆記之2機器學習筆記
- 機器學習筆記(2):線性迴歸-使用gluon機器學習筆記
- 我的《機器學習實戰》讀書筆記(2)機器學習筆記
- 機器學習實戰ByMatlab(2):PCA演算法機器學習MatlabPCA演算法
- Python機器學習筆記:SVM(2)——SVM核函式Python機器學習筆記函式
- 機器學習 第2篇:資料預處理(缺失值)機器學習
- 機器學習總結(2)—分類中的代數模型機器學習模型
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記2 — 機器學習的主要挑戰機器學習筆記
- 【機器學習】機器學習建立演算法第2篇:K-近鄰演算法【附程式碼文件】機器學習演算法
- 【機器學習】機器學習簡介機器學習
- 機器學習之機器學習概念機器學習
- TensorFlow.NET機器學習入門【2】線性迴歸機器學習
- 機器學習演算法原理與程式設計學習(2)機器學習演算法程式設計
- 吳恩達機器學習課程:程式設計練習 | (2) ex2-logistic regression吳恩達機器學習程式設計
- 機器學習之簡化正則化:L2 正則化機器學習
- 美團O2O廣告營銷中的機器學習技術機器學習
- 第二週 機器學習(ML)策略(2):2.6 定位資料不匹配機器學習
- 機器學習程式碼筆記-2-簡單線性迴歸機器學習筆記
- 合體!模擬-數位電路(2)——用SPICE搞機器學習機器學習
- Coursera上的Andrew Ng《機器學習》學習筆記Week2機器學習筆記
- 吳恩達機器學習筆記(1-1到2-1)吳恩達機器學習筆記
- (一) 機器學習和機器學習介紹機器學習