回歸問題中,訓練集和當前測試集1的目標值分布差距較大(後期會換成測試集2,分布未知),請問這種情況下,有好的處理辦法嗎?樣本並不大,訓練集有5000個樣本,測試集1有1000個,數據中的特徵有40幾列


不同情況處理辦法都不一樣

第一,分布差距大是重要特徵數值差距大,比如一個是 0-1,另外一個 0.5-2,如果是這種情況無解,你能做的只能擴大訓練集合,因為重要特徵一旦偏離,哪怕數學上都是有交集,現實上下文都是差距極大的,這和數據採集流程和規範等非技術問題有關。

第二,重要特徵數據差距不大,不太重要的差距較大,這種情況可以屏蔽這些特徵,或者利用類似遷移學習 prototype 那種思路約束特徵輸入不過於偏離訓練集。

第三,所有特徵數值差距都不大,但是特徵之間相關性統計差距大,比如訓練集當中 A 和 B 相關性更加強,但是測試集合 A 和 C 的相關性更加強,這對你模型本身高階組合就要約束,比如上DNN 的話,前期就不是明智的選擇。

第四,特徵數值差距不大,特徵相關性差距也不大,但是目標數值差距過大,這個好辦,改變任務設置共同的中間目標,比如你說的目標值是否可以採取相對值,增長率,夏普等,而非絕對值

第五,你心大,感覺差距大,但是懶得論證那裡大,這時候,for 循環所有已知模型,找最好的交差。


當然要用遷移學習啦。搜索遷移學習簡明手冊吧。


這個時候當然要關注一下遷移學習來解決你遇到的問題。遷移學習的研究背景就是應對訓練樣本與測試樣本的分布不一致的:

當目標任務(對應的領域稱為目標領域)很難準備足夠多的訓練數據,此時如果有一個相關任務(對應的領域稱為源領域)已經有了大量的訓練數據,遷移學習實現把從源領域學習到的東西應用到目標領域上去(源領域的數據和目標領域的數據往往遵循不同的分布)。

我推薦的讀物有楊強老師的《遷移學習》

我可以簡單介紹一下遷移學習的演算法一般的想法(也參考了上面楊老師的書):

基於樣本的遷移學習方法:從源域中篩選出符合目標域數據的相似分布的樣本將它們運用於訓練以降低新模型的偏差和方差。

基於特徵的遷移學習方法:將數據映射到一個特徵空間上,在這個特徵空間上,源域和目標域樣本的分布差異得以縮小

基於模型的遷移學習方法:也稱為基於參數的遷移學習(parameter-based transfer learning),其假設是在模型層次上源任務和目標任務共享模型參數等知識。

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

如果你是做這方面的理論研究的,現在比較流行通過深度學習技術來解決遷移學習,可以嘗試在這上面做創新工作。如果你只是應用,可以先從簡單的基於樣本的遷移學習方法開始。


可以使用Adversarial Validation確定驗證集。只選擇和測試集分布最像的那部分訓練數據作為驗證集。參考https://www.kdnuggets.com/2016/10/adversarial-validation-explained.html


樣本同分布是機器學習有效性的前提。

可以通過train-test的psi穩定性指標對特徵進行篩選,對分布不穩定的特徵剔除。

特徵選擇可以參考

Python特徵選擇(全)機器學習中,特徵選擇是一個重要步驟,用以篩選出顯著特徵、摒棄非顯著特徵。 1 特徵選擇的目的減少特徵(避免維度災難),提高訓練速度,降低運算開銷;減少干擾雜訊,降低過擬合風險,提升模型效果;更少的特徵,模型可解釋性更好;2 特徵選擇方法特徵選…9 贊同 · 0 評論查看完整文章


可參考一下這篇文章:

Covariate Shift - Unearthing hidden problems in Real World Data Science?

www.analyticsvidhya.com圖標

提供幾種研究的思路。

一是使用影響函數識別差異來源的樣本數據,進行刪除或其他處理,具體可以看Percy Liang在17年的論文Understanding black-box predictions via influence function,大概是叫這個。缺點是複雜網路影響函數估計效果比較差,而且要在模型已經收斂基礎上才能計算。

另一種思路是通過影響函數構造入樣概率對數據子抽樣,相當於對數據隱性加權糾正分布差異,具體看Less Is Better: Unweighted Data Subsampling via Influence Function這篇。缺點是訓練時間長,效果提升不明顯(分布差異大的話可能優勢更明顯),同時也有上一條的局限。

還有一種思路是提供一小個乾淨的驗證集,讓演算法學習對樣本點賦權,效果似乎比上一種優秀:Learning to reweight examples for robust deep learning。缺點也是訓練時間長,但是除了分布差異以外,這種方法還能減少人工調整超參數的時間。


不是應該首先解決為什麼差距大的問題嗎?我覺得是劃分問題,按分布特徵劃分怎麼會差距大呢?也可能我孤陋寡聞了


推薦閱讀:
相关文章