關於樣本均衡的一點點思考

2021-10-23 19:30:05 字數 1656 閱讀 2976

在分類場景中經常會遇到,某些類別資料特別多,某類或者幾類資料特別少。作為極限測試,假如正樣本10000個,負樣本只有1個。進行模型引數優化。其實相當於一直在優化正樣本,使得正樣本過學習,負樣本幾乎沒有優化模型引數。針對負樣本的1個,很大概率是有問題。為了重述上面的問題。假如現在乙個三歲的孩子需要識別哪些是玉公尺,哪些是小麥。現在有10000個是小麥,只有乙個是玉公尺。那麼三歲的孩子會一直處在學習是小麥的階段,就算對玉公尺進行了學習,因為自己腦子的資訊在學習小麥的時候一直更替,很可能最後對玉公尺的認識在學習小麥的過程中已經徹底忘記,從而識別不出玉公尺。為了解決這個問題,當然可以把小麥的資料減少,或者把玉公尺的數量增多。這就是上取樣下取樣的道理。當然也可以增加學習小麥時候資訊強調關注程度,自然就是通過調整小麥的損失函式的權重。本部落格重點討論smote。因為smote直接在資料上處理,直接匹配問題場景。而且可以翻出無窮無盡變化優化改進方案。

(1)對於少數類中每乙個樣本x,特徵歸一化後以歐氏距離為標準計算它到少數類樣本集中所有樣本的距離,得到其k個最相近的樣本。

(2)根據樣本不平衡比例設定乙個取樣比例以確定取樣倍率n,對於每乙個少數類樣本x,從其k近鄰中隨機選擇若干個樣本,假設選擇的近鄰為xn。

(3)對於每乙個隨機選出的近鄰xn,xnew=x+random(0,1)(xn-x)生成負樣本。

討論:假如有10000個小麥,10個玉公尺需要乙個三歲的孩子學習。玉公尺長得各種各樣,smote就是通過玉公尺的特徵生成各種各樣的玉公尺,比如某玉公尺的重量5克,就在其他10個玉公尺中找最近的幾個比如5.1克,5.2克,然後在5.1和5.2隨便找乙個比如5.1,然後生成的玉公尺的特徵是5.05克讓小孩子去學習。為啥不是5克玉公尺一直複製呢?其實smote就相當於讓乙個三歲的孩子去學習各種各樣的人寫的某乙個漢字,學的越多,識別能力越強。也就是業界說的更強的泛化能力。

有個問題smote僅僅能夠上取樣嗎?很顯然不是,下取樣smote。

(1)對於多數類中每乙個樣本x,特徵歸一化後以歐氏距離為標準計算它到少數類樣本集中所有樣本的距離,得到其k個最相近的樣本。

(2)根據樣本不平衡比例設定乙個下取樣比例以確定取樣倍率n,對於每乙個少數類樣本x,從其k近鄰中隨機選擇若干個樣本,直接刪除。

討論再次回到三歲孩子識別玉公尺小麥的問題。三歲孩子大腦還在快速發育階段,給10000個小麥,10000個玉公尺識別,很容易產生疲勞,多大孩子學習多大的資訊量才能達到真正學習的目的。也即達到模型的學習效果。更多的時候是想10個玉公尺生成100個玉公尺,10000個小麥變成100個小麥讓三歲孩子學習。按照上面就可以完成降取樣的目的。到底下取樣多少,上取樣多少這個需要根據實際的業務進行嘗試。當然還有計算機等配置。還是那句話:資料量中蘊含多大的資訊量,模型就需要有多複雜。

smote一定要在模型前面進行上取樣下取樣進行樣本處理後學生才能學習嗎?當然不是,就比如乙個孩子學習的時候這段時間是100個玉公尺,50個小麥,下乙個優化階段完全可以換為100個小麥,50個玉公尺,進行交替學習。這就涉及在優化階段,動態的上取樣,動態的下取樣。同理可以模擬上面的思路進行理解。

距離問題:上面的討論迴避了乙個最重要的資訊,歐式距離真的就能衡量樣本的距離嗎?余弦距離就能想當然的衡量樣本之間的距離嗎?再次我認為擴充樣本時候需要對特徵分別處理,而不是通過上面的方式直接所有特徵乙個比例進行切。離散特徵多數取票方式,連續特徵最近鄰插值。

侷限問題:nlp的語言特徵自己一直沒想明白具體怎麼擴充少樣本的資料,我想可以通過近義詞替換的方式吧。

關於人生的一點點思考

最近有點迷茫,有點墮落,在這種時候我就會思考我的人生。我都20歲了。還一事無成.我只是乙個三本院校的大二學生,沒有多麼好的計算機環境。大一才知道程式設計。我看過好多名人傳記,我也總看csdn的文章。新聞。看微軟谷歌相互爭奪市場,看人家發明語言,看每個世界級公司的偉大新發明。我得反思我自己考慮我自己。...

關於Lisp的一點點

以後寫的語言相關應該主要是ruby 也許還有少數的c 了,所以在這裡先記錄一點關於lisp的東西。首先是乙個小故事 在 ilc 2002 大會上前lisp大神,當今的python倡導者peter norvig,由於某些原因,做乙個類似於馬丁路德在梵蒂岡宣揚新教的主題演講,因為他在演講中大膽地聲稱py...

ajax程式的一點點思考

最近沒事無聊,用網頁寫了乙個簡單的模仿qq2012樣式風格的聊天室 群 小程式,後台是php mysql,資料庫設計也比較簡單。一共就5個表 群 群使用者 群聊天資訊 申 群的資訊 使用者資料。每個表設計也極盡簡單。即時聊天實現原理是用ajax不停獲取伺服器的資訊。從開始的時候,就遇到乙個問題,aj...