做機器學習項目,數據卻不夠?這裡有5個不錯的解決辦法

人工智能 技術 算法 人生第一份工作 IT168企業級 2019-07-02

【IT168 技術】許多開展人工智能項目的公司都具有出色的業務理念,但是當企業AI團隊發現自己沒有足夠多的數據時,就會慢慢變得十分沮喪......不過,這個問題的解決方案還是有的。 本文將簡要介紹其中一些經筆者實踐證明確實有效的辦法。

數據稀缺的問題非常重要,因為數據是任何AI項目的核心,數據集的大小往往是影響項目表現優劣的一個重要因素。大多數情況下,與數據相關的問題,往往都是無法做出優秀人工智能項目的主要原因。

有監督的機器學習模型正廣泛用於應對各種業務挑戰。但是這些模型需要大量數據,其性能也在很大程度上取決於訓練數據的多少。但是在許多情況下,AI團隊很難創建足夠大的訓練數據集。

同時還有另一個問題,那就是項目分析師可能會低估處理常見業務問題所需的數據量。在為大公司工作時,收集數據會更加複雜。

做機器學習項目,數據卻不夠?這裡有5個不錯的解決辦法

Photo by rawpixel.com from Pexels

我需要多少數據?

在許多情況下,你需要大約10倍的數據,因為模型中有自由度。模型越複雜,就越容易過度擬合,但可以通過模型校驗來避免。 不過,根據用例的實際情況,所需的數據可以適當減少。

還有必要討論一下的是,如何處理缺失值的問題。特別是如果數據中缺失值的數量足夠大(超過5%)。

值得一提的是,處理缺失值依賴某些既定的“成功”標準。此外,這些標準對於不同的數據集甚至對於不同的應用也是不同的,例如識別、分割、預測和分類(給定相同的數據集)。

選擇什麼樣的解決方案取決於問題的類型——如時間序列分析,ML,迴歸等。

涉及到預測技術時,只有當缺失值不是完全隨機觀察到的時候才應該進行使用,並且需要選擇變量來估算這些缺失值與它有某種關係,否則可能產生不精確的估計。

一般來說,可以使用不同的機器學習算法來確定缺失值。可以將缺少的特徵轉換為標籤本身,然後再使用沒有缺失值的列來預測具有缺失值的列。

根據筆者的經驗,如果你決定構建一個基於AI的解決方案,那麼在某些時候你將面臨缺乏數據或缺少數據的問題, 但幸運的是,有很多方法可以將這個“負”變為“正”。

缺少數據?

如上所述,不可能精確估計AI項目所需的最小數據量,項目本身將顯著影響你需要的數據量的多少。例如,文本、圖像和視頻通常需要更多數據。但是,為了做出準確的估計,還應考慮許多其他因素。

·要預測的類別數量

模型的預期輸出是什麼?基本上來說,數量或類別越少越好。

·模型性能

如果你計劃將項目投入生產,則需要更多。 一個小數據集,用於概念驗證可能足夠了,但在生產中,你需要更多數據。

一般來說,小型數據集需要低複雜度(或高偏差)的模型,以避免模型對數據的過度擬合。

非技術解決方案

在探究技術解決方案之前,讓我們分析一下可以通過哪些方法來增強數據集。這可能是一句廢話,但在開始AI項目之前,需要通過開發外部和內部工具儘可能多地收集數據。如果你知道機器學習算法預期要執行的任務,那就可以提前創建數據收集機制。

另外在啟動ML項目時,你也可以藉助開源數據。網絡上有很多可用於ML的數據,其所屬公司已經準備好將其棄用。

如果你需要項目的外部數據,與其他組織建立合作伙伴關係以獲取相關數據的辦法可能會有用。形成合作關係顯然會花費你一些時間,但獲得的專有數據將為你提供天然的競爭力。

構建一個有用的應用程序,別管這個應用,只用數據

筆者在之前的項目中使用的另一種方法是向客戶提供對雲應用程序的訪問權限,進入應用的數據可用於構建機器學習模型。筆者以前的客戶為醫院建立了一個應用程序並供其免費使用。我們收集了大量數據,並設法為我們的ML解決方案創建了一個獨特的數據集。

·小數據集

根據筆者的經驗,使用小數據集構建預測模型的一些常用方法有:

通常,機器學習算法越簡單,就越能從小數據集中學習。從ML的角度來看,小數據需要具有低複雜度(或高偏差)的模型,以避免將模型過度擬合到數據。樸素貝葉斯算法是最簡單的分類器之一,因此從相對較小的數據集中學習得非常好。

你還可以依賴其他線性模型和決策樹。實際上,它們在小數據集上的表現也相對較好。基本上,簡單模型能夠比更復雜的模型(神經網絡)更好地從小數據集中學習,因為它們本質上是在努力實現更少的學習。

對於非常小的數據集,貝葉斯方法通常是類中最好的,儘管結果可能對您的先驗選擇很敏感。筆者認為樸素貝葉斯分類器和嶺迴歸是最好的預測模型。

對於小數據集,你需要具有少量參數(低複雜性)和/或強先驗的模型。你還可以將“先驗”解釋為你可以對數據行為方式做出的假設。

根據業務問題的確切性質和數據集的大小,確實存在許多其他解決方案。

遷移學習

定義: 在構建機器學習模型時,利用現有相關數據或模型的框架。

遷移學習使用從學習任務中獲得的知識來改進相關任務的性能,通常可以減少所需的訓練數據量。

遷移學習技術很有用,因為它們允許模型使用從另一個數據集或現有機器學習模型(稱為源域)獲得的知識對新域或任務(目標域)進行預測。

當您沒有足夠的目標訓練數據時,應考慮使用遷移學習技術,源域和目標域有一些相似之處,但不盡相同。

單純地聚合模型或不同的數據集並不總是有效的,如果現有數據集與目標數據非常不同,則新的學習模型可能會受到現有數據或模型的負面影響。

當你有其他可用於推斷知識的數據集時,遷移學習效果很好,但是如果你根本沒有數據,這時該怎麼辦?此時,數據生成可以提供很大的幫助。當沒有數據可用,或者你需要創建的數據超過你通過聚合收集到的數據時,可以使用這一方法。

簡單來說,該方法需要修改現存的少量數據,以創建該數據的變體,進而訓練模型。例如,可以通過裁剪和縮小某一個汽車圖像,來生成更多的汽車圖像。

缺乏高質量的標籤數據也是數據科學團隊面臨的最大挑戰之一,通過使用遷移學習和數據生成等技術,可以在一定程度上克服數據稀缺問題。

遷移學習的另一個常見應用是在跨客戶數據集上訓練模型,以克服冷啟動問題。筆者注意到許多SaaS公司在將新客戶加入他們的ML產品中時,經常需要處理這個問題。實際上,在新客戶收集到足夠的數據以實現良好的模型性能(可能需要幾個月)之前,很難提供有效的價值。

數據擴充

數據擴充表示增加數據點的數量。在筆者的最新項目中,我們使用數據擴充技術來增加數據集中的圖像數量。就傳統的行/列格式數據而言,這意味著增加行或對象的數量。

我們別無選擇,只能依靠數據擴充,原因有兩個:時間和準確性。每個數據收集過程都與成本相關聯,這個成本可以是美元、人力、計算資源,當然也可以是過程中消耗的時間。

因此,我們不得不擴充現有數據,以增加我們提供給ML分類器的數據大小,並補償進一步數據收集所產生的成本。

有很多方法可以擴充數據。仍然是汽車圖像的例子,你可以旋轉原始圖像,更改光照條件,以不同方式裁剪。因此對於一個圖像,你可以生成不同的子樣本。 這樣,你就可以減少對分類器的過度擬合。

但是,如果你使用過採樣方法(如SMOTE)生成人工數據,那麼很可能會引發過度擬合。

在開發AI解決方案時,你必須考慮這一點。

合成數據

合成數據是指包含與“真實”對應物相同模式和統計屬性的虛假數據。基本上,這些數據看起來非常真實,幾乎看不出來它是假數據。

那麼,合成數據的意義是什麼呢?如果我們已經獲得了真實的數據,為什麼又要做這件事?

在某些情況下,特別是當我們處理私人數據(銀行,醫療保健等)時,使用合成數據其實是一種更安全的開發方法。

合成數據主要用於沒有足夠的實際數據,或者沒有足夠的實際數據用於特定的模式。對於訓練和測試數據集,它的用法基本相同。

合成少數類過採樣技術(SMOTE)和Modified-SMOTE是生成合成數據的兩種技術。簡單地說,SMOTE採用少數類數據點並創建位於由直線連接的任何兩個最近數據點之間的新數據點。

該算法計算特徵空間中兩個數據點之間的距離,將距離乘以0到1之間的一個隨機數,並將新數據點放在距離計算所用數據點之一的新距離上。

為了生成合成數據,你必須使用一個訓練集來定義一個模型,這需要進行驗證,然後通過更改感興趣的參數,你就可以通過仿真生成合成數據。域/數據的類型非常重要,因為它影響整個流程的複雜性。

在筆者看來,在開始做一個AI項目時,問問自己是否有足夠的數據,可能會揭示你以前也許從未意識到的問題,這有助於揭露你認為完美的業務流程中的問題,並讓你瞭解為什麼這個問題是在企業中創建成功數據戰略的關鍵所在。

原文作者:Alexandre Gonfalonieri

相關推薦

推薦中...