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

 

 

文章發佈於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。數據庫

 

 

 

原標題 | 7 Tips for Dealing With Small Data數組

做者 | Daniel Rothmann in Towards Data Science瀏覽器

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

 

 

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

 

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

 

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

 

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

 

 

01意識到你的模型並不完美學習

 

 

這是第一要務,你正在創建一個模型,這個模型的認知只基於一個大集合中的一小部分,因此模型也只有在這一處或這一狀況下才可以如預期通常運行良好。測試

 

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

 

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

 

 

02創建良好的數據基礎設施

 

 

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

 

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

 

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

 

 

03增長數據

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

04生成合成數據

 

 

若是你困於增長真實數據的方案選擇,你能夠開始考慮創造一些僞造的數據,生成合成數據是應對極端案例的好方法,而你的真實數據庫沒法應對。

 

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

 

15個模擬的Dactyl訓練實例

 

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

 

NVIDIAs GauGAN 實操

 

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

 

 

05謹慎處理數據幸運分裂

 

 

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

 

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

 

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

 

 

06使用遷移學習

 

 

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

 

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

 

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

 

 

07嘗試弱學習者的組合

 

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

 

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

 

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

 

改善這一狀況的方法是,結合幾個弱學習者的成果。(這能夠是Support Vector Machines和Decision Trees的數組,他們能夠在一塊兒工做,創建預測)。這就是聯合學習所指的內容了。

 

 

數智物語徵稿啓事0613.png

 

星標我,天天多一點智慧

 

相關文章
相關標籤/搜索