當前位置:
首頁 > 知識 > 數據科學家必看!處理數據的 7 個小技巧

數據科學家必看!處理數據的 7 個小技巧

原標題 |7 Tips for Dealing With Small Data

作者 |Daniel Rothmann in Towards Data Science

譯者 | 朱惠94(上海大學)

我們經常會聽到,大數據是建立成功的機器學習項目的關鍵。

一個主要的問題是:許多組織沒有你需要的數據。

在沒有最基本的、必要的、未經處理數據的情況下,我們應該如何為機器學習的概念建立原型並加以驗證呢?在資源匱乏的情況下,我們應如何有效地獲取並用數據創造價值?

在我工作的地方,我們會為客戶建立許多函數原型。為此,小數據對我大有幫助。在這篇文章中我會分享7個小技巧,能幫助你在用小數據集建立原型時改善成果。

1:意識到你的模型並不完美

這是第一要務,你正在建立一個模型,這個模型的認知只基於一個大集合中的一小部分,所以模型也只有在這一處或這一情況下才能夠如預期一般運行良好。

如果你正在根據一些選中的室內照片建立一個計算機視覺模型,不要期待它也能很好地處理室外照片。如果你想要建立一個基於聊天室調侃的語言模型,不要期待它可以寫一部精彩的小說。

確保你的經理或客戶也能這樣理解。這樣,所有人對你的模型能傳達的結果會達成一個統一且現實的期待。同時,也有助於提出新的KPI指標,以便在原型範圍內外對模型性能進行量化。

2:建立良好的數據基礎設施

在許多情況下,客戶並沒有你所需要的數據,公開數據也不足以成為一個代替選項。如果你的部分原型需要收集和標記新數據,要確保你的基礎設施在處理的同時產生的阻力越小越好。

你需要確保數據標記足夠簡單以至非技術人員也能輕鬆理解。我們會用到Prodigy,我認為這是一種易得且可擴展的好工具。根據項目的規模,你可能還想設立一個自動的數據攝取工具,它可以吸收新數據並自動將新數據傳輸給標記系統。

你的系統獲取新數據越快捷簡單,你就能得到越多數據。

3:增加數據

你可以通過增加已有的數據來拓展你的資料庫。比如可以對數據進行輕微調整,但又不會顯著影響模型輸出結果。比如說一張貓的圖片旋轉了40度,仍然是貓的圖片。

在大部分案例中,增加技巧可以使你創造更多的「半獨一無二」數據點來訓練你的模型。你可在開始時向數據中加入少量的高斯雜訊。

對於計算機視覺,有許多簡便的方法來增加你的圖像,我曾有良好的Albumentations 資料庫使用體驗,它可以在進行許多有效的圖像轉化的同時,不使標記受損。

初始,水平翻轉,垂直翻轉,調整比例和旋轉角度

另一種被大部分人認為有效的增加技巧是混合。這種技巧即字面意義上的將兩張輸入的圖片放在一起讓它們混合,並且組合它們的標籤。

初始圖片,混合,噪式混合,垂直連接

在增加其他類型的輸入數據時時,需要考慮格式的轉換是否會改變標記。

4:生成合成數據

如果你困於增加真實數據的方案選擇,你可以開始考慮創造一些偽造的數據,生成合成數據是應對極端案例的好方法,而你的真實資料庫無法應對。

舉個例子,許多機器人技術的強化學習系統(比如OpenAI的Dactyl)在配置真實的機器人之前,會在模擬3D環境中進行訓練。對於圖像識別系統,你可以類似地建立一個3d情景,它可以提供你上千種新數據點。

15個模擬的Dactyl訓練實例

還有許多方法可用於創造合成數據,在Kanda,我們開發了一種基於轉盤的解決方案用於創造目標檢測用的數據。如果你有很大的數據需求,你可以考慮使用Generative Adverserial Networks 來創造合成數據。由於GANs是難以訓練是廣為人知的,所以先要確認這方案是值得嘗試的。

NVIDIAs GauGAN 實操

有時你可以結合多種方法:蘋果公司有一種非常聰明的方法,使用GAN來處理3D建模的臉部圖像使得其看起來更具照片所呈現的真實感。如果你有時間的話,這是一種不錯的拓展資料庫的方法。

5:謹慎處理數據幸運分裂

訓練機器學習模型時,數據集通常會根據一定的比率隨機地分成訓練數據集和測試數據集。通常這沒有什麼,但是在處理小數據集時,因為訓練數據樣本的低容量會產生一個高水平的噪音風險。

在這種情況下,你可能意外得到了一個數據幸運分裂。某種特定數據集分裂後,你的模型會正常運行,同時可以很好地歸納測試數據集。然而在現實中,這僅僅是因為測試數據集(巧合地)沒有包含難解的樣本。

在這個場景中,k折交叉驗證法是一個更好的選擇。基本來說,你可以將數據集分成K組,為每一組訓練新模型,可選擇其中的一組用於測試,而將剩下的幾組全部用於訓練。這可以保證你所看到的測試成果並不是簡單地因幸運(或不幸)分裂而產生的。

6:使用遷移學習

如果你處理某種標準數據格式,比如文本、圖像、視頻或聲音,你可以利用其他人已經這些領域所取得的遷移學習成果來協助以上工作以提升效率,就像是站在巨人的肩膀上。

當你進行遷移學習時,可以利用其他人已經建好的模型。(通常,其他人指谷歌,臉書或者重點大學)並且需要微調模型使其合適你的特殊需要。遷移學習有用是因為大多數任務所處理的語言、圖像或聲音享有許多共通的特徵。以計算機視覺為例,遷移學習可以偵測特定種類的形狀,顏色或模式。

最近,我正為一位客戶建立目標檢測原型,這對準確性有較高要求。通過對MobileNet Single Shot Detector的微調和應用,工作效率已經很大程度的提升了,該遷移學習模型是通過谷歌的數據集訓練得到的(含有900萬張已標記的圖片)。在一天的訓練後,我能提供一個相當穩健的目標檢測模型,在一個採用1500張已標記圖片的測試中,顯示0.85的mAP。

7:嘗試弱學習者的組合

有時,你只需要面對一個現實,你就是沒有足夠的數據來搞胡里花哨的東西。幸運的是,你可以轉而求助許多傳統機器學習AI,它們對你的數據集規模並不敏感(不會因數據的低容量產生較大的測試偏差)。

當數據集小,數據點維度高的時候的時候,像Support Vector Machine 這樣的AI是一個好的選擇。

遺憾的是,這些AI並不總是像先進應用方法一樣準確。這就是為什麼他們會稱之為弱學習者了,至少與高參數化神經網路相比。

改善這一情況的方法是,結合幾個弱學習者的成果。(這可以是Support Vector Machines和Decision Trees的數組,他們可以在一起工作,建立預測)。這就是聯合學習所指的內容了。

本文編輯:王立魚

英語原文:https://towardsdatascience.com/7-tips-for-dealing-with-small-data-7ffbd3d399a3

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

NLP與NLU:從語言理解到語言處理
多圖演示高效的神經架構搜索

TAG:AI研習社 |