標籤:

機器學習中如何用交叉驗證來驗證是否過擬合?

收到審稿人的意見如下。我用的是隨機森林演算法來做分類器,十折交叉驗證來算準確率(由於數據集比較小,沒有分出數據集做測試集),但是審稿人要我驗證下過擬合性,請高人指點。(我的準確率其實也不是很高,才93.3%。)

Your last line in section 7 says you avoid overfitting but I do not buy
it. In fact, I think by using 160 trees (far more than 60 trees, which
is the point where cross-validation performance stabilizes) you run a
high risk of overfitting. You can check this by instead plotting the
mean error of your classifier over the 9 training and 1 cross-validation
fold, across all ten cross-validation trials. If the mean performance
of the classifier over training data is higher than the mean performance
over the validation fold, you are likely overfitting. Adding an
analysis like this to 5.3 would really strengthen the paper.

我實驗的驗證結果就是用十折交叉驗證來驗證的,為什麼他又讓我用十字交叉驗證來驗證過擬合?是不是這樣:在訓練模型的時候,9 分用來訓練,並計算誤差(如何計算?),1 分用來驗證,也計算下誤差(這個我會算)。十輪之後算一下平均誤差,做下比較?

應該怎麼回複審稿人呢,過擬合就一定說明實驗模型不好嗎?


看了下面的幾個回答,我覺得還是有必要更新一下答案的

沒有任何的learning algorithm可以徹底避免overfitting的。這是由機器學習的本質決定的,不是在技術層面可以修復的。 機器學習的核心在於generalization,但是數據又不可避免的包含noise,所以generalization走到最後就會開始考慮是不是要把noise也generalize一下。對於一個演算法,它是沒有辦法區分noise和『good』 data的。因為這些通常是人也無法知道的,我們說一個toy dataset中某些data是noise,這是我們的prior,機器是沒有辦法知道的。

random forest 雖然我沒有在實際中運用過,並且Breiman確實說過它不會overfitting,見Random forests,但是他的意思是隨著tree數目的增多,testing error不會急劇的增大,會穩定在一個數值。但是我們通常討論的overfitting是說testing error比training error大很多,這個Random forest顯然是無法避免的,儘管RF會限制error的limit。

簡單說random forest會隨著tree的增多而減少variance,但是它不會去修改bias啊

關於random forest會不會overfit,一個很有意思的討論:Random Forests does not overfit?

--------------------------------------------------------------------------------------------------

每次的training set 紅色, validation set白色


作者:許鐵-巡洋艦科技

鏈接:知乎專欄

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

稍微了解一點機器學習的都會知道cross-validation,作為一個驗證演算法是否靠譜(具有可推廣到新數據的能力)的主要方法。然而,魔鬼往往藏在細節中,這篇文章調查了之前學者做的cross validation 是那個版本的,為後來的研究者指出了一些方法論上需要注意的地方。

BioRivx是生物界的論文預印本網站,目前生物界的還沒有把文章放到preprint上的習慣,不過很多和計算相關的文章,都可以在這裡找到。這篇文章的標題是「Voodoo Machine Learning for Clinical Predictions」。Voodoo 就是巫毒教的意思,這個題目夠逗吧。

開篇介紹背景,智能手機和可穿戴設備的普及使得研究者積累了人類行為的大量數據,從而使得使用機器學習的方法來預測精神類疾病成為了可能。當越來越多的演算法被使用,如何量化的評估這些方法的好壞變成了一個重要的問題。

接著作者介紹了這篇文章的核心概念,record-wise vs subject-wise cross-validation,作者發現record-wise cross-validation often massively overestimates the prediction accuracy of the algorithms,同時this erroneous method is used by almost half of the retrieved studies that used accelerometers, wearable sensors, or smart phones to predict clinical outcomes. 因此,為了讓之後的研究成果更加靠譜,作者提倡我們都要用正確的交叉驗證方法。

這幅圖看懂了就明白了這兩種方法的區別了,subject wise的不會讓test集合中的數據進入訓練集,而record wise則會對於每一個data,使用其他所有的數據作為訓練集。The problem is, that if the algorithm can (implicitly) detect the identity of the person based on the features, it can automatically also 「diagnose」 the disease.這句說的是如果演算法能夠看出test set是對應的哪一個樣本,那麼其就可以判斷出這個樣本是否患病。

接下來舉一個簡單的例子。Imagine we recruit 4 subjects, 2 healthy and 2 affected by Parkinson』s disease (PD). We have a machine learning algorithm that estimates if a person has PD based on their walking speed. Let our two healthy subjects have constant walking speeds of 1 meter per second (m/s) and 0.4 m/s, and our two PD patients 0.6 m/s and 0.2 m/s. If we do subject-wise CV, we will be unable to predict the performance of the slow healthy subject as well as the fast PD subject, resulting in a prediction accuracy of roughly 50%.

然而如果是Leave-One-Subject-Out的方式,那麼這個問題就簡化了,在這種情況下,演算法給出的預測準確度會是100%,然而這樣的結果是不能泛化的。

接著看看作者做到對已有文獻的調查分析時用的流程圖吧

那這些文章的結論質量如何了,下圖給出了總結,左邊的是不同類項文章的預測錯誤的箱圖,右側是這些文章的引用次數。我們可以看出,使用了subject wise的文章預測錯誤率更高。

說了這麼多,用作者的句子總結一下這篇小文。The use of machine learning for clinical predictions is growing in popularity. Yet, such erroneously positive results threaten the progress in the field. Such results might contribute to the problem of irreproducibility of research findings and thereby undermine the trust in both medicine and data science. Only with meaningful validation procedures can the transition into machine learning driven, data-rich medicine succeed.


好吧...

你用的是標準的隨機森林嗎?也就是Random Forest。把用的軟體包說一下吧。

看起來你和審稿人都搞糊塗了——隨機森林是不會過擬合的。自然也就不需要Cross-validation。這也是隨機森林的優勢之一。

我建議你把paper中過擬合的部分刪掉,然後回複審稿人這是怎麼回事。如果還不清楚的話,翻一下Elements of Statistic Learning第9章,第15章。


「leave one out 」cross validation


用Validation集合上的正確率來說明模型的性能確實存在問題,因為Validation集合也是被輕度污染過的數據。這個結果是會有過度擬合的。

不管數據如何少,Test集合還是不能少的,否則模型的性能就沒有說服力。


謝謝邀請。

當你用交叉驗證時要留意三個集合,training set ,validation set, and test set.

是不是overfitting只能由前兩個集合決定。根據前兩個集合上的結果,你可以調整樹的數量,使得在training和validation上的結果比較接近。具體的說是,當你增加樹的數量時發現validation上的結果會下降,就表明有overfitting.當然用隨機森林還有些別的參數可以控制overfitting。

所以,要說明沒有overfiiting,只要畫張折線圖:x軸是你的樹的數量(或其它參數),y軸是在validation上的結果(10份平均)。這圖顯示你用的樹的數量正好對應y的一個局部最大值處即可。


審稿人說的很明白了:

1. cross-validation的結果穩定並不能說明沒有過擬合。

2. 確定是否過擬合,要看variance是否比較高。

3. 判斷variance是否比較高,要看test error是否比traing error明顯高很多。// Andrew Ng的課程里專門講到了用learning curve來分析bias與variance,可以參考。

4. test error和training error的比較可以用你十輪交叉驗證的test error與training error的均值進行。


把數據集分成train和test,再對train進行cross validation


你裡面提到樣本量較小,而你在進行交叉驗證的時候k=10,有過度擬合的傾向,可以降低k值,另外,將樣本分為3部分更合理,訓練集、交叉驗證集、測試集更合理。


我理解隨著樹的數目的增加,確實訓練集有過擬合的傾向,你可以把數據集分為訓練集,驗證集,測試集,比如比例為6:2:2,或其他你認為合適的比例,不斷增加樹的數目,分別測試訓練集和驗證集的錯誤率,如果過了一定樹的數目,驗證集錯誤率明顯高於訓練集,這就是過擬合的一種表現,而測試集才是用來衡量這個樹或森林的準確性的,具體過擬合判斷參考ng的機器學習課程,上述是個人理解,僅供參考,非標準答案


比如在做10-kold交叉驗證時,做完第一組數據驗證後,接下來第二組訓練是在第一組訓練的模型基礎上繼續訓練,還是用同樣的超參另外構建新的模型然後訓練驗證呢


如果本身數據集就維度過多,雖然使用random forest 可以到達防止過擬合的情況,但是會不會這樣的模型就會欠擬合而不準確呢?


推薦閱讀:

機器學習方面高質量的論文怎麼找?
有沒有講sklearn的書?
你的科研課題是完全根據興趣的嗎?
怎樣看待Ali Rahimi 獲得 NIPS 2017 Test-of-time Award後的演講?
使用強化學習做出的拆單和下單演算法,和傳統的下單演算法相比,有哪些優勢?

TAG:機器學習 |