比如預測一個人是不是程序猿,用到了性別特徵,但是發現10000個樣本中,有9900個樣本都是男性,只有100個是女性,這種情況應該怎麼解決?


我猜題主是誤和樣本不均衡聯繫起來了。但你這個例子中是屬性分佈差異大,不是 label 不均衡,更容易學習。聯繫實際,你認為一個程序員是男性的機率和是女性的機率哪個更大?一般認知是男性程序員幾率更大,你的數據恰好反映了這一點,僅從屬性分佈上來看不存在什麼問題。


NB,這個特徵就能有99%的準確度了,你還想哪樣,但是關鍵是測試集是什麼樣的啊,只一訓練集沒卵用啊,說白了其實很多時候我們目的是去擬合測試集,而不是訓練集


看場景,如果是反欺詐之類的場景,上升為異常點檢測;如果不是,那麼最好了,你找到了一個強特徵。


題主問題描述不是很完全,處理方法和你的數據收集以及目的有關。首先如果你的樣本不存在偏差,也就是說根據數據可以得出樣本中主要以男性為主,這時性別分佈基本能夠代表性別維度對於結果的影響水平;但如果是由於樣本有偏,收集不足的問題,則要需要樣本不均衡性處理的方法,比如異常檢測方法,或者給性別維度做OneHot的編碼,然後給男性和女性賦權重,或者樣本生成的方法等。同意 @InsaneGuy 的回答,基本上一個意思。


推薦三種方法

第一,降採樣,也就是說你訓練你的演算法模型時,人為從9900個男性數據中隨機選取100個,然後用這100個男性數據與已有的100個女性數據作為訓練與測試集(由於這種情況下數據量較小,訓練、交叉驗證、測試數據的推薦比例為8:1:1)

第二,升採樣,可以用一些常見的演算法模型對skew的數據進行擴充,推薦使用SMOTE演算法。如果熟悉生成對抗網路(GAN)的話也可以用這種方法

第三,利用集成演算法確定該特徵的重要性,如果發現無關緊要,可以剔除此特徵;否則,對於此類離散型特徵可先採用決策樹GINI演算法,再利用堆疊的思想進行建模。


推薦閱讀:
相關文章