做機器學(xué)習(xí)項目數(shù)據(jù)不夠?這里有5個不錯的解決辦法
許多開展人工智能項目的公司都具有出色的業(yè)務(wù)理念,但是當(dāng)企業(yè)AI團隊發(fā)現(xiàn)自己沒有足夠多的數(shù)據(jù)時,就會慢慢變得十分沮喪......不過,這個問題的解決方案還是有的。 本文將簡要介紹其中一些經(jīng)筆者實踐證明確實有效的辦法。
數(shù)據(jù)稀缺的問題非常重要,因為數(shù)據(jù)是任何AI項目的核心,數(shù)據(jù)集的大小往往是影響項目表現(xiàn)優(yōu)劣的一個重要因素。大多數(shù)情況下,與數(shù)據(jù)相關(guān)的問題,往往都是無法做出優(yōu)秀人工智能項目的主要原因。
有監(jiān)督的機器學(xué)習(xí)模型正廣泛用于應(yīng)對各種業(yè)務(wù)挑戰(zhàn)。但是這些模型需要大量數(shù)據(jù),其性能也在很大程度上取決于訓(xùn)練數(shù)據(jù)的多少。但是在許多情況下,AI團隊很難創(chuàng)建足夠大的訓(xùn)練數(shù)據(jù)集。
同時還有另一個問題,那就是項目分析師可能會低估處理常見業(yè)務(wù)問題所需的數(shù)據(jù)量。在為大公司工作時,收集數(shù)據(jù)會更加復(fù)雜。
我需要多少數(shù)據(jù)?
在許多情況下,你需要大約10倍的數(shù)據(jù),因為模型中有自由度。模型越復(fù)雜,就越容易過度擬合,但可以通過模型校驗來避免。 不過,根據(jù)用例的實際情況,所需的數(shù)據(jù)可以適當(dāng)減少。
還有必要討論一下的是,如何處理缺失值的問題。特別是如果數(shù)據(jù)中缺失值的數(shù)量足夠大(超過5%)。
值得一提的是,處理缺失值依賴某些既定的“成功”標(biāo)準(zhǔn)。此外,這些標(biāo)準(zhǔn)對于不同的數(shù)據(jù)集甚至對于不同的應(yīng)用也是不同的,例如識別、分割、預(yù)測和分類(給定相同的數(shù)據(jù)集)。
選擇什么樣的解決方案取決于問題的類型——如時間序列分析,ML,回歸等。
涉及到預(yù)測技術(shù)時,只有當(dāng)缺失值不是完全隨機觀察到的時候才應(yīng)該進(jìn)行使用,并且需要選擇變量來估算這些缺失值與它有某種關(guān)系,否則可能產(chǎn)生不精確的估計。
一般來說,可以使用不同的機器學(xué)習(xí)算法來確定缺失值。可以將缺少的特征轉(zhuǎn)換為標(biāo)簽本身,然后再使用沒有缺失值的列來預(yù)測具有缺失值的列。
根據(jù)筆者的經(jīng)驗,如果你決定構(gòu)建一個基于AI的解決方案,那么在某些時候你將面臨缺乏數(shù)據(jù)或缺少數(shù)據(jù)的問題, 但幸運的是,有很多方法可以將這個“負(fù)”變?yōu)?ldquo;正”。
缺少數(shù)據(jù)?
如上所述,不可能精確估計AI項目所需的最小數(shù)據(jù)量,項目本身將顯著影響你需要的數(shù)據(jù)量的多少。例如,文本、圖像和視頻通常需要更多數(shù)據(jù)。但是,為了做出準(zhǔn)確的估計,還應(yīng)考慮許多其他因素。
- 要預(yù)測的類別數(shù)量
模型的預(yù)期輸出是什么?基本上來說,數(shù)量或類別越少越好。
- 模型性能
如果你計劃將項目投入生產(chǎn),則需要更多。 一個小數(shù)據(jù)集,用于概念驗證可能足夠了,但在生產(chǎn)中,你需要更多數(shù)據(jù)。
一般來說,小型數(shù)據(jù)集需要低復(fù)雜度(或高偏差)的模型,以避免模型對數(shù)據(jù)的過度擬合。
非技術(shù)解決方案
在探究技術(shù)解決方案之前,讓我們分析一下可以通過哪些方法來增強數(shù)據(jù)集。這可能是一句廢話,但在開始AI項目之前,需要通過開發(fā)外部和內(nèi)部工具盡可能多地收集數(shù)據(jù)。如果你知道機器學(xué)習(xí)算法預(yù)期要執(zhí)行的任務(wù),那就可以提前創(chuàng)建數(shù)據(jù)收集機制。
另外在啟動ML項目時,你也可以借助開源數(shù)據(jù)。網(wǎng)絡(luò)上有很多可用于ML的數(shù)據(jù),其所屬公司已經(jīng)準(zhǔn)備好將其棄用。
如果你需要項目的外部數(shù)據(jù),與其他組織建立合作伙伴關(guān)系以獲取相關(guān)數(shù)據(jù)的辦法可能會有用。形成合作關(guān)系顯然會花費你一些時間,但獲得的專有數(shù)據(jù)將為你提供天然的競爭力。
構(gòu)建一個有用的應(yīng)用程序,別管這個應(yīng)用,只用數(shù)據(jù)
筆者在之前的項目中使用的另一種方法是向客戶提供對云應(yīng)用程序的訪問權(quán)限,進(jìn)入應(yīng)用的數(shù)據(jù)可用于構(gòu)建機器學(xué)習(xí)模型。筆者以前的客戶為醫(yī)院建立了一個應(yīng)用程序并供其免費使用。我們收集了大量數(shù)據(jù),并設(shè)法為我們的ML解決方案創(chuàng)建了一個獨特的數(shù)據(jù)集。
- 小數(shù)據(jù)集
根據(jù)筆者的經(jīng)驗,使用小數(shù)據(jù)集構(gòu)建預(yù)測模型的一些常用方法有:
通常,機器學(xué)習(xí)算法越簡單,就越能從小數(shù)據(jù)集中學(xué)習(xí)。從ML的角度來看,小數(shù)據(jù)需要具有低復(fù)雜度(或高偏差)的模型,以避免將模型過度擬合到數(shù)據(jù)。樸素貝葉斯算法是最簡單的分類器之一,因此從相對較小的數(shù)據(jù)集中學(xué)習(xí)得非常好。
你還可以依賴其他線性模型和決策樹。實際上,它們在小數(shù)據(jù)集上的表現(xiàn)也相對較好?;旧希唵文P湍軌虮雀鼜?fù)雜的模型(神經(jīng)網(wǎng)絡(luò))更好地從小數(shù)據(jù)集中學(xué)習(xí),因為它們本質(zhì)上是在努力實現(xiàn)更少的學(xué)習(xí)。
對于非常小的數(shù)據(jù)集,貝葉斯方法通常是類中***的,盡管結(jié)果可能對您的先驗選擇很敏感。筆者認(rèn)為樸素貝葉斯分類器和嶺回歸是***的預(yù)測模型。
對于小數(shù)據(jù)集,你需要具有少量參數(shù)(低復(fù)雜性)和/或強先驗的模型。你還可以將“先驗”解釋為你可以對數(shù)據(jù)行為方式做出的假設(shè)。
根據(jù)業(yè)務(wù)問題的確切性質(zhì)和數(shù)據(jù)集的大小,確實存在許多其他解決方案。
遷移學(xué)習(xí)
定義: 在構(gòu)建機器學(xué)習(xí)模型時,利用現(xiàn)有相關(guān)數(shù)據(jù)或模型的框架。
遷移學(xué)習(xí)使用從學(xué)習(xí)任務(wù)中獲得的知識來改進(jìn)相關(guān)任務(wù)的性能,通??梢詼p少所需的訓(xùn)練數(shù)據(jù)量。
遷移學(xué)習(xí)技術(shù)很有用,因為它們允許模型使用從另一個數(shù)據(jù)集或現(xiàn)有機器學(xué)習(xí)模型(稱為源域)獲得的知識對新域或任務(wù)(目標(biāo)域)進(jìn)行預(yù)測。
當(dāng)您沒有足夠的目標(biāo)訓(xùn)練數(shù)據(jù)時,應(yīng)考慮使用遷移學(xué)習(xí)技術(shù),源域和目標(biāo)域有一些相似之處,但不盡相同。
單純地聚合模型或不同的數(shù)據(jù)集并不總是有效的,如果現(xiàn)有數(shù)據(jù)集與目標(biāo)數(shù)據(jù)非常不同,則新的學(xué)習(xí)模型可能會受到現(xiàn)有數(shù)據(jù)或模型的負(fù)面影響。
當(dāng)你有其他可用于推斷知識的數(shù)據(jù)集時,遷移學(xué)習(xí)效果很好,但是如果你根本沒有數(shù)據(jù),這時該怎么辦?此時,數(shù)據(jù)生成可以提供很大的幫助。當(dāng)沒有數(shù)據(jù)可用,或者你需要創(chuàng)建的數(shù)據(jù)超過你通過聚合收集到的數(shù)據(jù)時,可以使用這一方法。
簡單來說,該方法需要修改現(xiàn)存的少量數(shù)據(jù),以創(chuàng)建該數(shù)據(jù)的變體,進(jìn)而訓(xùn)練模型。例如,可以通過裁剪和縮小某一個汽車圖像,來生成更多的汽車圖像。
缺乏高質(zhì)量的標(biāo)簽數(shù)據(jù)也是數(shù)據(jù)科學(xué)團隊面臨的***挑戰(zhàn)之一,通過使用遷移學(xué)習(xí)和數(shù)據(jù)生成等技術(shù),可以在一定程度上克服數(shù)據(jù)稀缺問題。
遷移學(xué)習(xí)的另一個常見應(yīng)用是在跨客戶數(shù)據(jù)集上訓(xùn)練模型,以克服冷啟動問題。筆者注意到許多SaaS公司在將新客戶加入他們的ML產(chǎn)品中時,經(jīng)常需要處理這個問題。實際上,在新客戶收集到足夠的數(shù)據(jù)以實現(xiàn)良好的模型性能(可能需要幾個月)之前,很難提供有效的價值。
數(shù)據(jù)擴充
數(shù)據(jù)擴充表示增加數(shù)據(jù)點的數(shù)量。在筆者的***項目中,我們使用數(shù)據(jù)擴充技術(shù)來增加數(shù)據(jù)集中的圖像數(shù)量。就傳統(tǒng)的行/列格式數(shù)據(jù)而言,這意味著增加行或?qū)ο蟮臄?shù)量。
我們別無選擇,只能依靠數(shù)據(jù)擴充,原因有兩個:時間和準(zhǔn)確性。每個數(shù)據(jù)收集過程都與成本相關(guān)聯(lián),這個成本可以是美元、人力、計算資源,當(dāng)然也可以是過程中消耗的時間。
因此,我們不得不擴充現(xiàn)有數(shù)據(jù),以增加我們提供給ML分類器的數(shù)據(jù)大小,并補償進(jìn)一步數(shù)據(jù)收集所產(chǎn)生的成本。
有很多方法可以擴充數(shù)據(jù)。仍然是汽車圖像的例子,你可以旋轉(zhuǎn)原始圖像,更改光照條件,以不同方式裁剪。因此對于一個圖像,你可以生成不同的子樣本。 這樣,你就可以減少對分類器的過度擬合。
但是,如果你使用過采樣方法(如SMOTE)生成人工數(shù)據(jù),那么很可能會引發(fā)過度擬合。
在開發(fā)AI解決方案時,你必須考慮這一點。
合成數(shù)據(jù)
合成數(shù)據(jù)是指包含與“真實”對應(yīng)物相同模式和統(tǒng)計屬性的虛假數(shù)據(jù)。基本上,這些數(shù)據(jù)看起來非常真實,幾乎看不出來它是假數(shù)據(jù)。
那么,合成數(shù)據(jù)的意義是什么呢?如果我們已經(jīng)獲得了真實的數(shù)據(jù),為什么又要做這件事?
在某些情況下,特別是當(dāng)我們處理私人數(shù)據(jù)(銀行,醫(yī)療保健等)時,使用合成數(shù)據(jù)其實是一種更安全的開發(fā)方法。
合成數(shù)據(jù)主要用于沒有足夠的實際數(shù)據(jù),或者沒有足夠的實際數(shù)據(jù)用于特定的模式。對于訓(xùn)練和測試數(shù)據(jù)集,它的用法基本相同。
合成少數(shù)類過采樣技術(shù)(SMOTE)和Modified-SMOTE是生成合成數(shù)據(jù)的兩種技術(shù)。簡單地說,SMOTE采用少數(shù)類數(shù)據(jù)點并創(chuàng)建位于由直線連接的任何兩個最近數(shù)據(jù)點之間的新數(shù)據(jù)點。
該算法計算特征空間中兩個數(shù)據(jù)點之間的距離,將距離乘以0到1之間的一個隨機數(shù),并將新數(shù)據(jù)點放在距離計算所用數(shù)據(jù)點之一的新距離上。
為了生成合成數(shù)據(jù),你必須使用一個訓(xùn)練集來定義一個模型,這需要進(jìn)行驗證,然后通過更改感興趣的參數(shù),你就可以通過仿真生成合成數(shù)據(jù)。域/數(shù)據(jù)的類型非常重要,因為它影響整個流程的復(fù)雜性。
在筆者看來,在開始做一個AI項目時,問問自己是否有足夠的數(shù)據(jù),可能會揭示你以前也許從未意識到的問題,這有助于揭露你認(rèn)為***的業(yè)務(wù)流程中的問題,并讓你了解為什么這個問題是在企業(yè)中創(chuàng)建成功數(shù)據(jù)戰(zhàn)略的關(guān)鍵所在。