處理不均衡數據 (機器學習)

今天我們會來聊聊在機器學習中常會遇到的問題. 滿手都是不均衡數據.

注: 本文不會涉及數學推導. 大家可以在很多其他地方找到優秀的數學推導文章.

因為本文原作是一段短視頻介紹.

所以首先放視頻鏈接: Youtube 或者 優酷.

也可以在這個網頁找到其他很多相關內容: 莫煩 Python

什麼是不均衡數據

不均衡數據的形式很簡單.這裡有蘋果和梨,當你發現你手中的數據對你說, 幾乎全世界的人都只吃梨, 如果隨便抓一個路人甲,讓你猜他吃蘋果還是梨, 正常人都會猜測梨.

不均衡的數據預測起來很簡單.永遠都猜多的那一方面准沒錯. 特別是紅色多的那一方佔了90%. 只需要每一次預測的時候都猜紅色,預測準確率就已經達到了相當高的90%了. 沒錯, 機器也懂這個小伎倆.所以機器學到最後, 學乖了,每次都預測多數派.解決的方法有幾種,我們來談談.

獲取更多數據

首先,我們要想想,自己還能不能獲取到更多的數據. 有時候只是因為前段時期的數據多半呈現的是一種趨勢,等到後半時期趨勢又不一樣了. 如果沒有獲取後半時期的數據,整體的預測可能就沒有那麼準確了.

更換評判方式

通常,我們會用到 準確率accuracy, 或者誤差cost來判斷機器學習的成果.可是這些評判方法在不均衡數據面前, 高的準確率和低的誤差變得沒那麼重要.所以我們得換一種方式評判. 通過 confusion matrix 來計算 precision 和 recall, 然後通過precision 和 recall 再計算f1 分數.這種方式能成功地區分不均衡數據,給出更好的評判分數.因為時間關係,具體的計算不過程就不會在這裡提及.

重組數據

第三種方法是最簡單粗暴的方法之一.重新組合不均衡數據, 使之均衡. 方式一: 複製或者合成少數部分的樣本, 使之和多數部分差不多數量. 方式二:砍掉一些多數部分,使兩者數量差不多.

使用其他機器學習方法

如果使用的機器學習方法像神經網路等,在面對不均衡數據時,通常是束手無策.不過有些機器學習方法, 像決策樹, decision trees就不會受到不均很數據的影響.

修改演算法

這個簡介視頻的最後一種方法是讓自己變得有創造力,嘗試修改演算法. 如果你用的是 Sigmoid的激勵函數, activation function,他會有一個預測門檻, 一般如果輸出結果落在門檻的這一段,預測結果為梨, 如果落在這一段, 預測結果為蘋果, 不過因為現在的梨是多數派, 我們得調整一下門檻的位置,使得門檻偏向蘋果這邊,只有很自信的時候,模型才會預測這是蘋果.讓機器學習,學習到更好的效果.

如果你對以上內容感興趣, 也想實際動手做做看, 這還有更多使用 python 來編寫以上內容的教程: 莫煩 Python

推薦閱讀:

關於設計與人工智慧的十個觀點
近200篇機器學習&深度學習資料分享(含各種文檔,視頻,源碼等)
以AlphaGo為例,如何理解神經網路的存儲容量(storage capacity)?
機器學習怎麼應用於流行病學研究?
如何評價微軟在Build 2015上發布的Project Oxford?

TAG:大数据 | 机器学习 | 深度学习DeepLearning |