是因為loss為交叉熵的原因,還是因為分布不同局部最優點不同?假如測試集的正負樣本比例差距非常大,訓練集的正負樣本比例該如何設置


公開diss民科回答 @aluea 。

數據有個underlying distribution,這個分布intractable,就是你沒有它的density,你只能採樣。

為了訓練,你從這個分布獨立同分布採樣訓練集,驗證集,測試集。因為獨立同分布,在二分類任務上其結果就是你說的「訓練集正負比例接近測試集」。iid採樣是公認的基本假設,否則用非iid的訓練集不具備到測試集的泛化能力,因為訓練集本身存在bias。

針對某民科回答,不是所有模型都是擬合數據分布。該民科回答提到的圖像分類就不是。圖像分類任務的模型屬於discriminative model,學的是圖像這種高維數據在低維上的流形到label space的映射。

還有包括svm適用於少量數據,不知道這位答主敢不敢給出出處。svm的少只體現在支持向量上,誰說訓練數據可以少量了,數量少意味著訓練集bias大,相同情況效果一定比bias小的大數據集差。

還有用海量數據不是因為中心極限定理嗎,數量大了訓練集的bias才能逼近真實分布。

針對某民科回答開頭的機器學習沒有理論指導,個人表示公開譴責,說話要負責任,希望不要給題主留下機器學習=鍊金術的印象。


瀉藥

這就是機器學習沒有明確的理論指導的弊端。

我打算從統計學派的觀點來解釋這個問題。

首先模型的本質是在擬合一個概率分布。

模型要解決的問題(比如分辨貓狗圖片),就是目標分布,即真實概率分布。

顯然真實概率分布是無法被完全描述的(不然直接編程多好)。

只能通過大量冗餘樣本來近似描述,而樣本只是分布的一個子集,所以樣本能夠描述近乎無限的分布,即近似分布域,模型擬合的就是這個近似分布域中的一個元素。

暫不考慮模型的擬合能力以及過擬合問題。

如果訓練集和測試正負比例差距很大,那麼其各自表示的近似分布域就會有所區別。

模型擬合的這個元素基本不太可能恰好也在另一個域里。

用一個分布去預測另一個不同的分布效果肯定不會太好。

Ps:從統計學派的觀點來看,在設計和訓練模型的時候至少有兩條理論指導。1)找到一個元素,使其在儘可能多的近似分布域里。2)數據所描述的近似分布要儘可能的接近真實分布。

第一條解釋了為什麼小樣本下支持向量機更加有效,以及正則化為什麼能防止過擬合。

第二條解釋了為什麼海量數據的端到端硬莽往往比精心設計的特徵工程效果還好。


如果使用交叉熵作為loss函數,則模型在訓練的過程中會盡量保證儘可能多的樣本被正確分類。當正負樣本不平衡時,很容易出現幾乎全都判別為樣本多的那一類別的情況,陷入局部最優。這是損失函數決定的。所以在這種情況下,需要使用降採樣或者過採樣對正負樣本進行均衡。或者在交叉熵損失函數中設置權重參數,加大模型將較少類樣本誤判為多類樣本帶來的損失。

訓練集的正負比例越接近於測試集的比例,只能保證模型在測試集上有較高的準確率,但是測試集正負樣本比例如果不均衡,幾乎不可能使用準確率作為評價指標,因為完全沒有意義。基本上會使用AUC或者F1 score等。這時候如果在訓練的時候不對正負樣本的比例進行均衡,訓練出來的模型很可能在以上指標上表現很差。或者使用其他的損失函數,比如focal loss,或者在語義分割領域常用的dice loss,這樣就減少了正負樣本比例的不良影響了。

所以還是建議在訓練過程中對正負樣本比例進行均衡,而不是盡量接近測試集的比例。


剛好在用Pytorch處理序列的二分類問題,回答一下自己的看法。

訓練集的正負樣本比例當然越接近測試集的正負比例越好!但現實中你能做到這一點嗎?我們很難讓訓練集的正負比例接近我們要預測的真實數據中的正負比例,並且訓練集中的正負比例應該要均衡才比較好(這一點請參考訓練集樣本不平衡問題對CNN的影響 - CSDN 人工智慧 - CSDN博客)。

所以我覺得我們訓練模型的時候,訓練集的正負比例最好保證在1:1,而測試集中的正負比例無所謂。


為什麼這麼多回答都是從肯定的角度出發回答的?KNN這種懶惰學習的模型就無所謂訓練集和測試集的正負樣本比例。。。。。大部分有監督學習的模型本質上擬合輸入到輸出之間的某種映射關係,例如lr,gbdt等都是通過訓練集的數據來訓練得到自身的參數的(比如樹的葉子結點權重,比如lr的權重w),自然訓練之後的模型更加符合訓練集的數據內部隱含的映射關係,換句話說如果測試集的輸入與輸出的隱含關係與訓練集能保持完全一致,(例如都滿足同一顆決策樹的決策規則),那麼測試集的比如無論是多少都可以良好的預測,如果訓練集和測試集中間隱含的映射關係完全不相同那麼即使訓練測試樣本的正負樣本比例完全相同也無濟於事。一般來說我們很注重訓練集和測試集的比例大小關係的原因在於盡量使得訓練集擬合出來的模型也能適應測試集(正則化起到的效果也是類似盡量擬合二者共有的某種映射的關係),但這並不意味著一看到樣本比例不均就去無腦處理,要根據實際的情況來進行調整,《data shift in machine learning》,推薦。


這裡要看使用的模型是什麼樣子的模型。

如果是貝葉斯之類的模型,那麼先驗概率會有很大的影響。

但是你試試看現在的深度學習,主要是從已有的很多的數據中統計學習到所謂的特徵,這裡是對訓練集的多樣性(當然,也有要求必須要出現測試集中會出現的case類型)以及正負樣本的均衡性提出了要求。


小菜雞占坑

坐等大佬解釋

順便提個句,很多文獻中提到,使用對比損失訓練的時候會慢慢增加負樣本比例。


這個比例就是模型的先驗,當然越接近真實情況越好


瞎說,萬一測試集全是正例咋辦!準確的說應該是訓練集正負樣本比例要均衡!


個人感覺好像沒有必要啊。。只要訓練數據和測試數據同分布,那測試數據挑選部分數據進行預測,仍然符合訓練模型,為什麼要正負比例一樣呢?訓練數據假設1:1, 訓練好之後,測試集就拿100個正例,都預測為正不也挺好么。

當然上面是理想情況,感覺一定要正負比例接近的話,像ctr預估類似的任務,對預估值敏感的任務,最好還是保證測試集與訓練集比例一致,比如真實點擊率1%, 你採樣正負1:10,點擊率變為10%,那模型預估相當於預估平均水平,高估了點擊率,實際這個人點擊率沒有這麼高,就會產生誤差。

採樣,加權都可以保證訓練集和測試集的比例接近。


推薦閱讀:
相关文章