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