最近深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)方面取得的突破表明,頂級(jí)算法和復(fù)雜的結(jié)構(gòu)可以將類人的能力傳授給執(zhí)行特定任務(wù)的機(jī)器。但我們也會(huì)發(fā)現(xiàn),大量的訓(xùn)練數(shù)據(jù)對(duì)深度學(xué)習(xí)模型的成功起著至關(guān)重要的作用。就拿Resnet來(lái)說(shuō),這種圖像分類結(jié)構(gòu)在2015年的ILSVRC分類競(jìng)賽中獲得了第一名,比先前的技術(shù)水平提高了約50%。
圖1:近年來(lái)ILSVRC的頂級(jí)模型表現(xiàn)
Resnet不僅具有非常復(fù)雜艱深的結(jié)構(gòu),而且還有足夠多的數(shù)據(jù)。不同的算法其性能可能是相同的,這個(gè)問(wèn)題已經(jīng)在工業(yè)界和學(xué)術(shù)界得到了很好的證實(shí)。
但需要注意的是,大數(shù)據(jù)應(yīng)該是有意義的信息,而不是雜亂無(wú)章的,這樣,模型才能從中學(xué)習(xí)。這也是谷歌、Facebook、亞馬遜、Twitter、百度等公司在人工智能研究和產(chǎn)品開(kāi)發(fā)領(lǐng)域占據(jù)主導(dǎo)地位的主要原因之一。
雖然與深度學(xué)習(xí)相比,傳統(tǒng)的機(jī)器學(xué)習(xí)會(huì)需要更少的數(shù)據(jù),但即使是大規(guī)模的數(shù)據(jù)量,也會(huì)以類似的方式影響模型性能。下圖清楚地描述了傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型的性能如何隨著數(shù)據(jù)規(guī)模的提高而提高。
圖2:數(shù)據(jù)量與模型性能的函數(shù)關(guān)系
為什么我們需要機(jī)器學(xué)習(xí)?
圖3:彈丸運(yùn)動(dòng)公式
讓我們用一個(gè)例子來(lái)回答這個(gè)問(wèn)題。假設(shè)我們有一個(gè)速度為v,按一定角度θ投擲出去的球,我們想要算出球能拋多遠(yuǎn)。根據(jù)高中物理知識(shí),我們知道球做一個(gè)拋物線運(yùn)動(dòng),我們可以使用圖中所示的公式算出距離。
上述公式可被視為任務(wù)的模型或表示,公式中涉及的各種術(shù)語(yǔ)可被視為重要特征,即v、θ和g(重力加速度)。在上述模型下,我們的特征很少,我們可以很好地理解它們對(duì)我們?nèi)蝿?wù)的影響。因此,我們能夠提出一個(gè)好的數(shù)學(xué)模型。讓我們考慮一下另一種情況:我們希望在2018年12月30日預(yù)測(cè)蘋果公司的股價(jià)。在這個(gè)任務(wù)中,我們無(wú)法完全了解各種因素是如何影響股票價(jià)格的。
在缺乏真實(shí)模型的情況下,我們利用歷史股價(jià)和標(biāo)普500指數(shù)、其他股票價(jià)格、市場(chǎng)情緒等多種特征,利用機(jī)器學(xué)習(xí)算法來(lái)找出它們潛在的關(guān)系。這就是一個(gè)例子,即在某些情況下,人類很難掌握大量特征之間的復(fù)雜關(guān)系,但是機(jī)器可以通過(guò)大規(guī)模的數(shù)據(jù)輕松地捕捉到它。
另一個(gè)同樣復(fù)雜的任務(wù)是:將電子郵件標(biāo)記為垃圾郵件。作為一個(gè)人,我們可能要想許多規(guī)則和啟式的方法,但它們很難編寫、維護(hù)。而另一方面,機(jī)器學(xué)習(xí)算法可以很容易地獲得這些關(guān)系,還可以做得更好,并且更容易維護(hù)和擴(kuò)展。既然我們不需要清晰地制定這些規(guī)則,而數(shù)據(jù)可以幫助我們獲得這些關(guān)系,可以說(shuō)機(jī)器學(xué)習(xí)已經(jīng)徹底改變了不同的領(lǐng)域和行業(yè)。
大數(shù)據(jù)集是怎樣幫助構(gòu)建更好的機(jī)器學(xué)習(xí)模型的?
在我們開(kāi)始討論大規(guī)模數(shù)據(jù)是如何提高模型性能之前,我們需要了解偏差(Bias)和方差(Variance)。
偏差:讓我們來(lái)看這樣一個(gè)數(shù)據(jù)集:它的因變量和自變量之間是二次方關(guān)系。然而,我們不知道他們真實(shí)的關(guān)系,只能稱它們近似為線性關(guān)系。在這種情況下,我們將會(huì)發(fā)現(xiàn)我們的預(yù)測(cè)與實(shí)際數(shù)據(jù)之間的明顯的差異。觀測(cè)值和預(yù)測(cè)值之間的這種差異稱為偏差。這種模型,我們會(huì)說(shuō)它功能小,欠擬合。
方差:在同一個(gè)例子中,如果我們將關(guān)系近似為三次方或任何更高階,就會(huì)出現(xiàn)一個(gè)高方差的情況。方差能夠反映訓(xùn)練集與測(cè)試集的性能差異。高方差的主要問(wèn)題是:模型能很好地?cái)M合訓(xùn)練數(shù)據(jù),但在訓(xùn)練外數(shù)據(jù)集上表現(xiàn)得不好。這是驗(yàn)證確認(rèn)測(cè)試集在模型構(gòu)建過(guò)程中非常重要的一個(gè)主要原因。
圖4:偏差 vs方差
我們通常希望將偏差和方差最小化。即建立一個(gè)模型,它不僅能很好地適用訓(xùn)練數(shù)據(jù),而且能很好地概括測(cè)試/驗(yàn)證數(shù)據(jù)。實(shí)現(xiàn)這一點(diǎn)有很多方法,但使用更多數(shù)據(jù)進(jìn)行訓(xùn)練是實(shí)現(xiàn)這一點(diǎn)的最佳途徑之一。我們可以通過(guò)下圖了解這一點(diǎn):
圖5:大數(shù)據(jù)產(chǎn)生了更好的泛化
假設(shè)我們有一個(gè)類似于正弦分布的數(shù)據(jù)。圖(5a)描述了多個(gè)模型在擬合數(shù)據(jù)點(diǎn)方面同樣良好。這些模型中有很多都過(guò)擬合,并且在整個(gè)數(shù)據(jù)集上產(chǎn)出不是很好。當(dāng)我們?cè)黾訑?shù)據(jù)時(shí),從圖(5b)可以看出可以容納數(shù)據(jù)的模型數(shù)量減少。隨著我們進(jìn)一步增加數(shù)據(jù)點(diǎn)的數(shù)量,我們成功地捕獲了數(shù)據(jù)的真實(shí)分布,如圖(5C)所示。這個(gè)例子幫助我們清楚地了解數(shù)據(jù)數(shù)量是如何幫助模型揭示真實(shí)關(guān)系的。接下來(lái),我們將嘗試了解一些機(jī)器學(xué)習(xí)算法的這種現(xiàn)象,并找出模型參數(shù)是如何受到數(shù)據(jù)大小影響的。
線性回歸:在線性回歸中,我們假設(shè)預(yù)測(cè)變量(特征)和因變量(目標(biāo))之間存在線性關(guān)系,關(guān)系式如下:
其中y是因變量,x(i)是自變量。β(i)為真實(shí)系數(shù),?為模型未解釋的誤差。對(duì)于單變量情況,基于觀測(cè)數(shù)據(jù)的預(yù)測(cè)系數(shù)如下:
上述公式給出了斜率和截距的估測(cè)點(diǎn),但這些估值總是存在一些不確定性,這些不確定性可由方差方程量化:
因此,隨著數(shù)據(jù)數(shù)量的增加,分母會(huì)變大,就是我們估測(cè)點(diǎn)的方差變小。因此,我們的模型對(duì)潛在關(guān)系會(huì)更加自信,并能給出穩(wěn)定的系數(shù)估計(jì)。通過(guò)以下代碼,我們可以看到上述現(xiàn)象的實(shí)際作用:
圖6:在線性回歸中增加數(shù)據(jù)量對(duì)估測(cè)點(diǎn)位置估測(cè)的提升
我們模擬了一個(gè)線性回歸模型,其斜率(b)=5,截距(a)=10。從圖6(a)(數(shù)據(jù)量?。┑綀D6(b)(數(shù)據(jù)量大),我們建立了一個(gè)衰退模型,此時(shí)我們可以清楚地看到斜率和截距之間的區(qū)別。在圖6(a)中,模型的斜率為4.65,截距為8.2,而圖6(b)中模型的斜率為5.1,截距為10.2相比,可以明顯看出,圖6(b)更接近真實(shí)值。
k近鄰(k-NN):k-NN是一種用于回歸和分類里最簡(jiǎn)單但功能強(qiáng)大的算法。k-NN不需要任何特定的訓(xùn)練階段,顧名思義,預(yù)測(cè)是基于k-最近鄰到測(cè)試點(diǎn)。由于k-NN是非參數(shù)模型,模型性能取決于數(shù)據(jù)的分布。在下面的例子中,我們正在研究iris數(shù)據(jù)集,以了解數(shù)據(jù)點(diǎn)的數(shù)量如何影響k-NN表現(xiàn)。為了更好表現(xiàn)結(jié)果,我們只考慮了這組數(shù)據(jù)的四個(gè)特性中的兩個(gè):萼片長(zhǎng)度和萼片寬度。
圖7:KNN中預(yù)測(cè)類隨數(shù)據(jù)大小的變化
后面的實(shí)驗(yàn)中我們隨機(jī)從分類1中選取一個(gè)點(diǎn)作為試驗(yàn)數(shù)據(jù)(用紅色星星表示),同時(shí)假設(shè)k=3并用多數(shù)投票方式來(lái)預(yù)測(cè)試驗(yàn)數(shù)據(jù)的分類。圖7(a)是用了少量數(shù)據(jù)做的試驗(yàn),我們發(fā)現(xiàn)這個(gè)模型把試驗(yàn)點(diǎn)錯(cuò)誤分在分類2中。當(dāng)數(shù)據(jù)點(diǎn)越來(lái)越多,模型會(huì)把數(shù)據(jù)點(diǎn)正確預(yù)測(cè)到分類1中。從上面圖中我們可以知道,KNN與數(shù)據(jù)質(zhì)量成正相關(guān),數(shù)據(jù)越多可以讓模型更一致、更精確。
決策樹算法:與線性回歸和KNN類似,也受數(shù)據(jù)數(shù)量的影響。
圖8:根據(jù)數(shù)據(jù)的大小形成不同的樹狀結(jié)構(gòu)
決策樹也是一種非參數(shù)模型,它試圖最好地?cái)M合數(shù)據(jù)的底層分布。拆分是對(duì)特性值執(zhí)行的,目的是在子級(jí)創(chuàng)建不同的類。由于模型試圖最好地?cái)M合可用的訓(xùn)練數(shù)據(jù),因此數(shù)據(jù)的數(shù)量直接決定了分割級(jí)別和最終類。從上面的圖中我們可以清楚的看到,數(shù)據(jù)集的大小對(duì)分割點(diǎn)和最終的類預(yù)測(cè)有很大的影響。更多的數(shù)據(jù)有助于找到最佳分割點(diǎn),避免過(guò)度擬合。
如何解決數(shù)據(jù)量少的問(wèn)題?
圖9:數(shù)據(jù)量少的基本含義和解決它的可能方法和技術(shù)
上圖試圖捕捉處理小數(shù)據(jù)集時(shí)所面臨的核心問(wèn)題,以及解決這些問(wèn)題的可能方法和技術(shù)。在本部分中,我們將只關(guān)注傳統(tǒng)機(jī)器學(xué)習(xí)中使用的技術(shù)。
改變損失函數(shù):對(duì)于分類問(wèn)題,我們經(jīng)常使用交叉熵?fù)p失,很少使用平均絕對(duì)誤差或平均平方誤差來(lái)訓(xùn)練和優(yōu)化我們的模型。在數(shù)據(jù)不平衡的情況下,由于模型對(duì)最終損失值的影響較大,使得模型更加偏向于多數(shù)類,使得我們的模型變得不那么有用。
在這種情況下,我們可以對(duì)不同類對(duì)應(yīng)的損失增加權(quán)重,以平衡這種數(shù)據(jù)偏差。例如,如果我們有兩個(gè)按比例4:1計(jì)算數(shù)據(jù)的類,我們可以將比例1:4的權(quán)重應(yīng)用到損失函數(shù)計(jì)算中,使數(shù)據(jù)平衡。這種技術(shù)可以幫助我們輕松地緩解不平衡數(shù)據(jù)的問(wèn)題,并改進(jìn)跨不同類的模型泛化。我們可以很容易地找到R和Python中的庫(kù),它們可以幫助在損失計(jì)算和優(yōu)化過(guò)程中為類分配權(quán)重。Scikit-learn有一個(gè)方便的實(shí)用函數(shù)來(lái)計(jì)算基于類頻率的權(quán)重:
我們可以用class_weight=‘balanced’來(lái)代替上面的計(jì)算量,并且與class_weights計(jì)算結(jié)果一樣。我們同樣可以依據(jù)我們的需求來(lái)定義分類權(quán)重。
異常/變更檢測(cè):在欺詐或機(jī)器故障等高度不平衡的數(shù)據(jù)集的情況下,是否可以將這些例子視為異常值得思考。如果給定的問(wèn)題滿足異常判據(jù),我們可以使用OneClassSVM、聚類方法或高斯異常檢測(cè)方法等模型。這些技術(shù)要求我們改變思維方式,將次要類視為異常類,這可能幫助我們找到分離和分類的新方法。變化檢測(cè)類似于異常檢測(cè),只是我們尋找的是變化或差異,而不是異常。這些可能是根據(jù)使用模式或銀行事務(wù)觀察到的用戶行為的變化。
圖10:過(guò)采和欠采樣的情況
上采樣還是下采樣:由于不平衡的數(shù)據(jù)本質(zhì)上是以不同的權(quán)重懲罰多數(shù)類,所以解決這個(gè)問(wèn)題的一個(gè)方法是使數(shù)據(jù)平衡。這可以通過(guò)增加少數(shù)類的頻率或通過(guò)隨機(jī)或集群抽樣技術(shù)減少多數(shù)類的頻率來(lái)實(shí)現(xiàn)。過(guò)度抽樣與欠抽樣以及隨機(jī)抽樣與集群抽樣的選擇取決于業(yè)務(wù)上下文和數(shù)據(jù)大小。一般來(lái)說(shuō),當(dāng)總體數(shù)據(jù)大小較小時(shí),上采樣是首選的,而當(dāng)我們有大量數(shù)據(jù)時(shí),下采樣是有用的。類似地,隨機(jī)抽樣和聚集抽樣是由數(shù)據(jù)分布的好壞決定的。
生成合成數(shù)據(jù):盡管上采樣或下采樣有助于使數(shù)據(jù)平衡,但是重復(fù)的數(shù)據(jù)增加了過(guò)度擬合的機(jī)會(huì)。解決此問(wèn)題的另一種方法是在少數(shù)類數(shù)據(jù)的幫助下生成合成數(shù)據(jù)。合成少數(shù)過(guò)采樣技術(shù)(SMOTE)和改進(jìn)過(guò)采樣技術(shù)是產(chǎn)生合成數(shù)據(jù)的兩種技術(shù)。簡(jiǎn)單地說(shuō),合成少數(shù)過(guò)采樣技術(shù)接受少數(shù)類數(shù)據(jù)點(diǎn)并創(chuàng)建新的數(shù)據(jù)點(diǎn),這些數(shù)據(jù)點(diǎn)位于由直線連接的任意兩個(gè)最近的數(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ù)生成的最近鄰的數(shù)量也是一個(gè)超參數(shù),可以根據(jù)需要進(jìn)行更改。
圖11:基于K=3,合成少數(shù)過(guò)采樣技術(shù)過(guò)程
M-SMOTE是一個(gè)改進(jìn)版的SMOTE,它考慮了數(shù)據(jù)中少數(shù)分類的底層分布。該算法將少數(shù)類的樣本分為安全/安全樣本、邊界樣本和潛在噪聲樣本三大類。這是通過(guò)計(jì)算少數(shù)類樣本與訓(xùn)練數(shù)據(jù)樣本之間的距離來(lái)實(shí)現(xiàn)的。與SMOTE不同的是,該算法從k個(gè)最近鄰中隨機(jī)選擇一個(gè)數(shù)據(jù)點(diǎn)作為安全樣本,從邊界樣本中選擇最近鄰,對(duì)潛在噪聲不做任何處理。
集成技術(shù):聚合多個(gè)弱學(xué)習(xí)者/不同模型在處理不平衡的數(shù)據(jù)集時(shí)顯示出了很好的效果。裝袋和增壓技術(shù)在各種各樣的問(wèn)題上都顯示出了很好的效果,應(yīng)該與上面討論的方法一起探索,以獲得更好的效果。但是為了更詳細(xì)地了解各種集成技術(shù)以及如何將它們用于不平衡的數(shù)據(jù),請(qǐng)參考下面的博客。
總結(jié)
在這段中,我們看到數(shù)據(jù)的大小可能會(huì)體現(xiàn)出泛化、數(shù)據(jù)不平衡以及難以達(dá)到全局最優(yōu)等問(wèn)題。我們已經(jīng)介紹了一些最常用的技術(shù)來(lái)解決傳統(tǒng)機(jī)器學(xué)習(xí)算法中的這些問(wèn)題。根據(jù)手頭的業(yè)務(wù)問(wèn)題,上述一種或多種技術(shù)可以作為一個(gè)很好的起點(diǎn)。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132315 -
大數(shù)據(jù)
+關(guān)注
關(guān)注
64文章
8854瀏覽量
137212
原文標(biāo)題:打破機(jī)器學(xué)習(xí)中的小數(shù)據(jù)集詛咒
文章出處:【微信號(hào):BigDataDigest,微信公眾號(hào):大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論