嚴重資料傾斜文字分類,比如正反比1 20 100,適合什麼model,查準一般要做到多少可以上線?

時間 2021-05-12 00:51:10

1樓:Dennis liang

這個乙個很好的問題,也是乙個沒有簡單解法的問題。我有兩個實用的建議。

Augmentation

Text/Document的Augmentation的比Image難很多。Image的Augmentation一般是rotate, filter。Text/Document的Augmentation可以用semantics language model

1.1 第一步:TF/IDF做baseline

先從簡單的入手。把所有training samples做成bags of word的vector space. 把每乙個training sample document轉成vector。

得到的precision和recall 作為model baseline.

1.2 第二步:用Unigram Language Model看recall的提公升

用所有training sample, 基於現有的language model, 像word2vec,把他們作為background reference model, train乙個unigram collection model. 用這個新的model prediction 做ranking.

計算新的precision和recall. 找到乙個recall最低的model.

1.3 第三步:找到Collection LM的特殊高頻詞

由上乙個trained的unigram collection model,你可以提取這個collection的高頻詞。具體做法就是,對每乙個詞,P(word[i]) = Math.abs(collection LM - background LM),找出和background LM最不同頻率的詞。

這些詞就是你這個collection的unigram LM的判斷基礎。

1.4 第四步:找到Collection LM的特殊高頻詞的「同義詞」

「同義詞"不一定是中文的同義詞的意思。對每乙個高頻詞word[i],用semantic LM model找到和這個詞similarity score最高的詞,rank, 取top 10.

word[i]: word1[i], word2[i], ..., word10[i]

對每乙個document, 每乙個word[i]代入原來的word-k[i],作為分類為0的新sample. 全部做好之後,重新train unigram LM.

這種Aggressive augmentation可以把1:20變成1:5

2. Modified Loss Function

LM的Loss function是log-based的,所以對錯誤的prediction有很強的容忍度。可以找乙個convex但是對錯誤prediction的output大一點的function嘗試。這個Optimize的時候,gradient descent會去減少錯誤,減少recall。

總結一下,這個data engineering, model evaluation的過程是只有更好。建議明確你的目標和多去嘗試optimize的不同方法。

2樓:笨笨的笨笨不笨

不平衡問題標準方案是上下取樣和代價敏感,如果資料本身採集的不合理還可以擴充套件下資料,感覺都有極限,類似1:100這種最關鍵的應該還是限制問題範圍,使用各種手段先把特別無關的部分過濾掉,這樣將分類器處理的資料比例降低到1:1,1:

2這種,然後再用其他方法來做提高。

3樓:

其實知乎的看山杯就是乙個嚴重的分類不均問題...

考慮到train, test的同分布,基本上所有的參賽者並未做特殊處理,依然可以達到不錯的performance。

不過有部分選手反應通過類似focal loss的形式可以取得某些不算太大的提公升,我並沒有驗證過。

p.s. 不建議做過多取樣,曾經我做過取樣,準確率跌的很慘。

4樓:vortex

可以嘗試一下何愷明的focal loss?專門用來解決分類問題中的類別不平衡問題。

[1708.02002] Focal Loss for Dense Object Detection

張俊:何愷明大神的「Focal Loss」,如何更好地理解?

5樓:東方蛋changed

首先這更應該看成是乙個PU(Positive and Unlabled)問題,可以嘗試一些PU-Learning的分類方法;關於取樣上,實際分布1:20甚至更低,而你訓練的時候樣本1:1,抽樣與實際樣本的大體分布上都不一樣了,也是乙個問題

6樓:趙易明

我覺得你可以參考喚醒詞識別來做。並且會比你這個更有難度。為什麼呢?

因為日常智慧型音響使用場景中大部分時間是非喚醒狀態,只有極少部分是喚醒狀態,正負比例用1:1000來形容也是不過分的,並且幾乎要求95%以上喚醒率,24小時不能多於一次誤喚醒。

一般喚醒詞訓練的時候,會採用上下取樣法,上取樣正樣本,針對典型負樣本下取樣,當然即使是下取樣了,負樣本比例還是很大的。這個情況下可以對損失函式加權,也可以生成若干個訓練子集,每個子集中選擇全部正樣本與隨機取樣相同數量的負樣本。事實證明,子集配平法還是湊效的。

總之,方法大體是

1. 從資料的角度考慮

2. 從訓練準則的角度考慮

3. 從判斷準則的角度考慮

7樓:優秀的e小調

根據個人經驗,有個小trick可以在許多任務裡有不小的提公升:就是把輸出概率的判別閥值改成對應樣本比例的百分比,然後原始輸出概率轉換為基於樣本比例的相對概率。

8樓:賙濟民

yy出來的大部分方法都是不奏效的。先尋找乙個子域(聚類或者人工),在子域上做。並在分類時考慮class weight是最好的方法。

當然,考慮主動學習什麼的也行,不過不是那麼容易的。包括異常檢測,也不奏效的。

9樓:吳斌

試一下SVM(linear核),調引數,可以解決unbalance data問題。

一般商用要求,準確率90%以上才能上線。但是,按我的經驗,單靠模型(或者乙個模型),比較難做到完全達到商用要求,還要增加一些輔助手段,包括規則引擎。

10樓:Eason

姑且認為你的查準是(TP+TN) / total,如果訓練出的模型線下是0.9,線上只有0.3,那應該首先檢查訓練過程是否存在某些問題。。

我用過libsvm,liblinear,lr,fasttext處理這類問題,的確對於strong imbalanced data會有類似的準確率下降的情況,但一般不會差這麼多。。

要是差這麼多的話,首先分析取樣是random sampling還是biased sampling。。然後看是否一些特定片語影響了分類結果,可以考慮用一些pre trained word vector。。還有如果模型是lr或fasttext這類輸出乙個概率的,看下輸出值兩端的分布是否符合預期,畢竟很多在0.

5附近的資料本來就很難說。。

11樓:

在做正負樣本不均衡的分類問題(非文字分類)時做過一些上取樣下取樣的實驗,但在測試資料上的auc和pr幾乎沒有提公升,應該就是取樣破壞了原始資料的分布,訓練和測試非同分布的狀態下無法取得更好的結果。所以現在面對這種問題時不管正負比例幾比幾,基本就是硬來。

12樓:吳八格

關於這個話題有個帖子總結了很多,自己看吧 http://

blog.csdn.net/heyongluo

yao8/article/details/49408131

13樓:

之前遇到過類似的問題。

首先,對於解決黑白樣本分佈不均勻的問題,可以使用重取樣的方法優化訓練集,上取樣和下取樣。如果還沒有嘗試,可以嘗試下。

其次,我曾經用過random forest+重取樣方法解決這種問題,效果有很大改善。

最後,你可以嘗試用下one-class SVM。

另外,這種問題有可能用有監督學習的方法,得不到好的解決,我當時的場景就是。換個思路,用異常檢測或者聚類等無監督學習的思路來做,興許柳暗花明。如果你能把異常文字識別出來,『異常文字』,未必就是色情文字,但也許能覆蓋大部分色情文字,接下來在異常文字中再把色情文字識別出來就可以用你說過的那些方法了,因為,你如果已經濾掉了大部分正常的文字,黑白樣本的比例就不會像原來那麼誇張了。

我偏科嚴重,數學連60分都難上,理綜連100都很難說,想在一年提高70分,有什麼好的學習方法嗎?謝謝?

呼呼呼輝輝 數學一定需要大量的題目練習,多做同一型別題的總結,物理也需要多總結相應的型別題目,化學主要是方程式的基礎要打好,生物就需要加強理解記憶了,生物學科更偏向文科,所以需要多理解,多背誦。 三分糖的蚊蚊 我的數學也是經歷了很長一段時間的掙扎呀!但是理綜非常不穩定最後高考翻車了直接導致高考翻車 ...

腳往內側傾斜嚴重,穿鞋子超級醜,但是鞋後跟又是外側磨損嚴重,是什麼原因

南韓艾恩崔源哲 某些情況下,鞋跟磨損的程度和位置也能反映自己的健康。穿上一雙鞋,3個月內磨掉20 30 幾乎可以判定關節有問題。上圖右側的非正常磨損部位一共有5處,那我們就來一一分析下它傳達出的骨骼疾病訊號 底外側磨損 可能有關節炎隱患正常鞋子的磨損重心在腳跟中間,並可從鞋跟外側看出約4度的傾斜,但...

裝甲疲勞是什麼 有何資料或例子嗎 傾斜裝甲對減緩裝甲疲勞有益處嗎

近衛掌旗官 裝甲疲勞說白了就是金屬疲勞,表現在於金屬物體同一部位反覆受力後會變得脆弱。乙個現實生活中的例子就是一根金屬絲的同一位置被反覆彎折多次後會變得脆弱易斷。同樣,在一塊裝甲的同一位置被反覆擊中,也就是反覆受力的情況下,這一位置的裝甲自然就會變得較為脆弱,這就是裝甲疲勞。傾斜裝甲對裝甲疲勞的影響...