久久国产欧美久久|亚洲综合无码精品一区二区|午夜DV一区区|亚洲人成电影网站色www两男一女|星空物语mv|买保险套的女要求试用|国产AV综合一区二区A片

物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

關(guān)于數(shù)據(jù)科學(xué),書上不曾提及的三點(diǎn)經(jīng)驗(yàn)

作者:Mikio L. Braun
來源:CSDN
日期:2015-09-15 14:12:48
摘要:本文作者指出了關(guān)于數(shù)據(jù)科學(xué)書上很少提及的三點(diǎn)經(jīng)驗(yàn):模型評(píng)價(jià)方法是關(guān)鍵,特征提取是根本,模型選擇而非數(shù)據(jù)集規(guī)模最費(fèi)時(shí)間。文章指出,處理上萬維的特征和幾十萬的樣本的現(xiàn)代算法是愚蠢的,而特征工程理論還不完善,更像是一門藝術(shù)。


  這是數(shù)據(jù)科學(xué)大行其道的時(shí)代。各類課程、博客、培訓(xùn)學(xué)校如雨后春筍般出現(xiàn)。然而,每次我瀏覽這些學(xué)習(xí)資料時(shí),我發(fā)現(xiàn)它們過于強(qiáng)調(diào)一些具體的算法。理解邏輯回歸或者深度學(xué)習(xí)的原理當(dāng)然很酷,可是一旦從事數(shù)據(jù)相關(guān)工作,你會(huì)發(fā)現(xiàn)還有其它一些同樣重要的事情,甚至更為重要的。

  我真不應(yīng)該去責(zé)備這些課程。我在大學(xué)任教機(jī)器學(xué)習(xí)課程很多年了,課堂上主要是講解具體算法。你掌握了支持向量機(jī)(SVM)、高斯混合模型(GMM)、k均值(k-Means)聚類等算法的細(xì)枝末節(jié),但是直到寫碩士論文的時(shí)候才學(xué)會(huì)如何正確地處理數(shù)據(jù)。

  那么何謂正確?最終結(jié)果難道不能驗(yàn)證處理方法嗎?得到出色的預(yù)測(cè)效果是否意味著一切順利呢?顯然沒錯(cuò),但關(guān)鍵是確保算法在未來數(shù)據(jù)上仍舊得到出色的效果。我在別處也寫過,如果僅憑著訓(xùn)練數(shù)據(jù)的表現(xiàn)就輕信自己的算法,實(shí)在是太自欺欺人了。

  那么下面是我的三個(gè)主要見解,其它書本里很少提及。

  1、評(píng)價(jià)方法是關(guān)鍵

  數(shù)據(jù)分析/機(jī)器學(xué)習(xí)/數(shù)據(jù)科學(xué)(或者無論你如何稱呼它)的主要目標(biāo)就是搭建一套系統(tǒng)并且將來在測(cè)試數(shù)據(jù)上效果好。監(jiān)督式學(xué)習(xí)(例如分類)和非監(jiān)督式學(xué)習(xí)(例如聚類)的差異導(dǎo)致很難籠統(tǒng)地解釋它,但無非都是你收集一個(gè)數(shù)據(jù)集合,在其之上搭建系統(tǒng)和設(shè)計(jì)算法。但最終你需要將這種算法應(yīng)用于未來的數(shù)據(jù),同時(shí)希望確保在新數(shù)據(jù)上的表現(xiàn)和在原始數(shù)據(jù)集上的表現(xiàn)幾乎一樣好。

  初學(xué)者常犯的錯(cuò)誤就是僅僅關(guān)注手頭數(shù)據(jù)集上的表現(xiàn)效果,然后認(rèn)為在未來數(shù)據(jù)上同樣奏效。不幸的是這種情況非常稀罕。我們暫且以監(jiān)督式學(xué)習(xí)為例,它的目標(biāo)是根據(jù)你的輸入預(yù)測(cè)輸出結(jié)果,比如把郵件分為垃圾郵件和正常郵件兩類。

  如果你只考慮訓(xùn)練集數(shù)據(jù),那么機(jī)器很容易記住整個(gè)訓(xùn)練集,然后返回完美的測(cè)試結(jié)果(除非數(shù)據(jù)自相矛盾)。事實(shí)上,對(duì)人來說這種情況也很正常。還記得你在學(xué)外語(yǔ)背單詞的時(shí)候,總是把單詞順序打亂來測(cè)試嗎?因?yàn)榉駝t大腦就會(huì)憑著之前單詞的順序來回憶。

  機(jī)器憑借它們存儲(chǔ)和讀取大量數(shù)據(jù)的強(qiáng)大能力,輕而易舉地完成同類的任務(wù)。這就造成過擬合現(xiàn)象,還缺乏泛化能力。

  因此合適的評(píng)價(jià)方法是模擬有未來數(shù)據(jù)的場(chǎng)景,把數(shù)據(jù)集一分為二,一部分做訓(xùn)練集,然后在另一部分測(cè)試集數(shù)據(jù)上做預(yù)測(cè)。通常,訓(xùn)練集被分得大一些,這個(gè)過程也會(huì)重復(fù)很多遍以得到一系列測(cè)試結(jié)果,來觀察算法的穩(wěn)定性。這整個(gè)過程就稱為交叉驗(yàn)證。


  為了模擬在未來數(shù)據(jù)上的性能,,你需要把現(xiàn)有的數(shù)據(jù)一分為二,一份用來訓(xùn)練模型,另一份僅用于模型評(píng)估。

  然而,差錯(cuò)還是會(huì)時(shí)常發(fā)生,尤其當(dāng)數(shù)據(jù)集是非靜態(tài)的,也就是說,數(shù)據(jù)的分布隨著時(shí)間而發(fā)生變化。現(xiàn)實(shí)世界的數(shù)據(jù)往往如此。一月份的銷售圖表和六月份的看上去會(huì)迥然不同。

  或者數(shù)據(jù)點(diǎn)之間相關(guān)性很高,就是說若你知道一個(gè)數(shù)據(jù)點(diǎn),那另一個(gè)樣本數(shù)據(jù)的信息也八九不離十了。打個(gè)比方,拿股票價(jià)格來說,天與天的波動(dòng)并不劇烈,那么以天為單位隨機(jī)切分訓(xùn)練/測(cè)試數(shù)據(jù)集會(huì)導(dǎo)致訓(xùn)練集和測(cè)試集的數(shù)據(jù)高度相關(guān)。

  上述情況一旦發(fā)生了,你就會(huì)得到過度優(yōu)化的結(jié)果,而這個(gè)算法在真實(shí)測(cè)試數(shù)據(jù)上的表現(xiàn)并不盡如人意。在最壞的情況下,你費(fèi)盡精力說服別人采用你的算法,而算法卻失效了,因此學(xué)會(huì)正確地評(píng)估模型是關(guān)鍵!

  2、特征提取是根本

  學(xué)習(xí)一種新算法令人激動(dòng),可事實(shí)上大多數(shù)復(fù)雜算法的效果大同小異,真正造成差異的是原始數(shù)據(jù)如何轉(zhuǎn)化為用以學(xué)習(xí)的特征這個(gè)步驟。

  現(xiàn)代學(xué)習(xí)算法十分強(qiáng)大,處理上萬維的特征和幾十萬的樣本都是小菜一碟,然而事實(shí)卻是這些算法最后來看都是愚蠢的。尤其是那些學(xué)習(xí)線性模型的算法(如邏輯回歸,線性支持向量機(jī))簡(jiǎn)直和計(jì)算器一般簡(jiǎn)陋。

  它們從足夠的數(shù)據(jù)樣本里鑒別出有效信息的本領(lǐng)很強(qiáng)大,但如果有效信息并不被包含其中,或者不能用輸入特征的線性組合所表示,它們就沒有了用武之地。它們本身也無法通過“洞察”數(shù)據(jù)來完成數(shù)據(jù)精簡(jiǎn)這一環(huán)節(jié)。

  換句話說,如果找到合適的特征,數(shù)據(jù)量就能被大大縮減。理想情況下,如果把所有特征縮減到只剩下你想預(yù)測(cè)的方程,那就沒什么可學(xué)習(xí)的了,對(duì)吧?這就是特征提取的強(qiáng)大之處!

  需要提醒兩點(diǎn):首先,你必須確保完全理解這些等價(jià)算法中的一種,然后就可以一直用下去了。因此你并不真的需要邏輯回歸加上線性SVM,選一種就夠了。這還包括明白哪些算法幾乎是等價(jià)的,使用這些模型的關(guān)鍵點(diǎn)在哪里。深度學(xué)習(xí)有些區(qū)別,但是各種線性模型的表達(dá)能力幾乎一樣。盡管,訓(xùn)練時(shí)間、解的稀疏性等會(huì)有差別,但大多數(shù)情況下它們的預(yù)測(cè)能力是相近的。

  其次,你必須完全掌握特征工程。不幸的是,這更像是一門藝術(shù),而且因?yàn)槔碚摬煌晟茣纠锖苌偬峒啊L卣髦禋w一化是一條捷徑。有時(shí)候,特征值需要取對(duì)數(shù)計(jì)算。若是能夠降低一部分自由度,也就是說去掉數(shù)據(jù)中對(duì)預(yù)測(cè)結(jié)果沒影響的那部分變量,你所需要訓(xùn)練的數(shù)據(jù)量將會(huì)大大降低。

  有時(shí)候這些轉(zhuǎn)換很容易被發(fā)現(xiàn)。例如,如果你要做手寫字符識(shí)別,只要有前景和背景的區(qū)分,那么字符的顏色對(duì)識(shí)別顯然是不重要的。

  我知道課本總是推銷一些看起來很強(qiáng)大的算法,似乎只要你把數(shù)據(jù)扔給它們就萬事大吉了。從理論觀點(diǎn)和無窮的數(shù)據(jù)來源角度來說,這也許是正確的。但現(xiàn)實(shí)中,數(shù)據(jù)和我們的時(shí)間是有限的,尋找高信息量的特征絕對(duì)是至關(guān)重要的。

  3、時(shí)間瓶頸是模型選擇,而非數(shù)據(jù)集規(guī)模

  這是個(gè)在大數(shù)據(jù)時(shí)代你不愿大肆提及的事物,可是大多數(shù)數(shù)據(jù)集都能被完全加載到主存里。你的算法同樣可能也不需要消耗太多時(shí)間計(jì)算。但你需要花費(fèi)大量時(shí)間從原始數(shù)據(jù)中提取特征,通過交叉驗(yàn)證來比較不同特征提取方法和不同算法參數(shù)的效果差異。


  在選擇模型時(shí),你嘗試無數(shù)次各種參數(shù)的組合,并在相同的數(shù)據(jù)集上評(píng)價(jià)效果差異。

  問題歸根結(jié)底在于組合項(xiàng)的爆發(fā)式增長(zhǎng)。假設(shè)現(xiàn)在只有兩個(gè)參數(shù),并且訓(xùn)練模型和在測(cè)試集上評(píng)價(jià)效果(按照上述正確的評(píng)價(jià)方式)需要大約一分鐘時(shí)間。如果每個(gè)參數(shù)有5個(gè)候選值,采取5折交叉驗(yàn)證(把數(shù)據(jù)集分成5份,重復(fù)訓(xùn)練測(cè)試過程5次,每次用不同的一份數(shù)據(jù)作為測(cè)試集),這意味著你需要125輪計(jì)算來確定哪種算法效果最好,你的等待時(shí)間也將是大約2小時(shí)而不是1分鐘。

  一個(gè)好消息是上述過程很容易并行化,因?yàn)槊枯営?jì)算都是相互獨(dú)立的。特征提取也是如此,通常也是對(duì)每個(gè)數(shù)據(jù)集獨(dú)立地進(jìn)行相同操作(解析、提取、轉(zhuǎn)換等),導(dǎo)致了所謂的“密集并行”(沒錯(cuò),這是個(gè)專業(yè)術(shù)語(yǔ))。

  一個(gè)壞消息主要針對(duì)大數(shù)據(jù)而言,因?yàn)樗械倪@些意味著對(duì)大規(guī)模實(shí)現(xiàn)復(fù)雜算法的需求很少,然而多數(shù)情況下目前用非分布式算法并行計(jì)算內(nèi)存中的數(shù)據(jù)已經(jīng)很有幫助了。

  當(dāng)然,也存在一些應(yīng)用,比如針對(duì)廣告優(yōu)化的TB級(jí)日志的全局模型和百萬用戶級(jí)推薦系統(tǒng),但常規(guī)的使用案例都是這里羅列的那些類型。

  最后,擁有大量數(shù)據(jù)也不意味著你真的需要這么多。關(guān)鍵在于學(xué)習(xí)過程的復(fù)雜度。如果問題用簡(jiǎn)單的模型可以解決,就不要用過多的數(shù)據(jù)來訓(xùn)練模型參數(shù)。那樣的話,隨機(jī)抽樣數(shù)據(jù)集的一部分就足夠用了。另外如我在上文中提到的那樣,有時(shí)候準(zhǔn)確的特征表達(dá)也能大幅度削減需要的數(shù)據(jù)量。

  總結(jié)

  總之,知道如何正確評(píng)價(jià)結(jié)果能降低算法在未來測(cè)試數(shù)據(jù)上失敗的風(fēng)險(xiǎn)。特征提取準(zhǔn)確也許是提升效果的最佳途徑,最后,大數(shù)據(jù)并不總是需要,盡管分布式計(jì)算能幫助減少訓(xùn)練時(shí)間。