在大數(shù)據(jù)特別熱門的今天,出現(xiàn)了各種培訓課程。但我發(fā)現(xiàn)這些課程的重點都放在算法的學習上。如何理解logistic回歸或深度學習的確很酷,但一旦你開始處理數(shù)據(jù),你會發(fā)現(xiàn)還有其他的東西更為重要。
我在大學里教了很多年的深度學習,這些課程和講座總是特別注重特定的算法,你學習支持向量機器、高斯混合模型的聚類、k-均值等等,但是只有在你寫碩士論文的時候你需要用到這些方法。
那么什么才是正確的呢?關(guān)鍵就是你要保證你做的模型對于未來的數(shù)據(jù)也能有好的表現(xiàn)。所以我在這里教你三個書本不能教給你的知識。
一、對模型的有正確的認識是關(guān)鍵
、 機器學習或是數(shù)據(jù)科學(總之是這個領(lǐng)域)的主要目的,就是建立一個能預測未來數(shù)據(jù)的系統(tǒng)。在普通情況中,你很難發(fā)現(xiàn)監(jiān)督學習(例如分類)和無監(jiān)督學習(例 如聚類)之前的區(qū)別,你通常會使用你構(gòu)建和設計的方法去搜集一些數(shù)據(jù),但最終你希望你設計的模型可以應用到未來的數(shù)據(jù),并且確保該模型行之有效,可以同你 對原始數(shù)據(jù)的測驗結(jié)果相同。
初學者經(jīng)常會犯的一個錯誤就是,只看到了已有數(shù)據(jù)的表現(xiàn),就認為這對未來數(shù)據(jù)是適用的。很不幸的是事實通常不是這樣。例如在一個監(jiān)督學習的案例中,任務是根據(jù)你的輸入輸出的行為來預測,例如把電子郵件分為垃圾郵件和非垃圾郵件。
如果你只考慮訓練數(shù)據(jù),那么對機器來說很容易返回完美的預測結(jié)果,只是通過死記硬背就可以。機器因為其容量大,可以存儲和檢索大量的數(shù)據(jù),但這導致過度擬合,缺乏概括。
所以適當?shù)脑u估方式是通過分割數(shù)據(jù),分析一個部分,然后預測其他部分來模擬未來的結(jié)果。通常,訓練部分是龐大的,過程也要重復數(shù)次,以獲得幾個數(shù)字來看看什么才是合適的方法,這個過程稱為交叉驗證。
盡 管方法看起來如此可靠,還是經(jīng)常會發(fā)生錯誤,特別是當數(shù)據(jù)是不穩(wěn)定時,例如數(shù)據(jù)的基礎(chǔ)分布會隨時間變化,在現(xiàn)實中這是經(jīng)常發(fā)生的,6月的銷售數(shù)字和12月 的就會有很大不同?;蛘邤?shù)據(jù)點之間具有大量相關(guān)性,也就是說,如果你知道一個數(shù)據(jù)點意味著你已經(jīng)知道了很多關(guān)于另一個數(shù)據(jù)點的信息。例如,股票價格通常在 一天之內(nèi)會從一個價格跳到另一個價格,如果你搜集這些數(shù)據(jù),并做了測試,很可能會推導出和它有相關(guān)性的數(shù)據(jù)。
每當出現(xiàn)這種情況,你就會得到過于樂觀的數(shù)字,你的方法將無法在未來真正的數(shù)據(jù)中很好地工作。在最壞的情況下,當你終于說服別人來使用你的方法時這個方法并不能達到預期效果。所以學習如何正確評估是關(guān)鍵!
二、一切都在于特征提取
學習到一種新的方法是令人興奮的,但事實是,大部分最復雜的方法執(zhí)行起來基本是相同的,而真正的區(qū)別是在通過學習把原始數(shù)據(jù)的特征提取出來。
現(xiàn)代的學習方法是非常強大的,很容易在幾十秒內(nèi)處理成百上千的數(shù)據(jù)點,但事實是,這些方法是非常愚蠢的,特別是線性模型(如Logistic回歸,線性支持向量機)方法基本上同你的計算器一樣傻乎乎。
它們善于通過足夠的數(shù)據(jù)鑒定出特征,但是如果信息不足,或者沒有通過輸入線性組合展現(xiàn)特征的,它們就什么也做不了。它們也無法通過洞察數(shù)據(jù)的來實現(xiàn)數(shù)據(jù)自身的縮減。
換句話說,你可以通過合適的特征來大量減少數(shù)據(jù)所需的量。假設說你減少了所有要預測的函數(shù)的特征,還有什么東西需要學習,對不對?那是多么強大的特征提取!
這 意味著兩件事。首先,你需要確保你掌握了這些方法中的一個,而且要堅持下去。所以你真的不需要Logistic回歸和線性向量機都學習,只學習其中一個就 行。這也包括你需要理解哪些方法是類似的,這其中的關(guān)鍵點在于底層的模型。所以深度學習是不一樣的,但線性模型在表現(xiàn)上來看是差不多的,盡管這些方法有些 不同,但是在大多數(shù)的案例中都可以得到類似的預測結(jié)果。
第二點,你需要學習所有關(guān)于這個行業(yè)的特征。不幸的是這是一門藝術(shù),而且?guī)缀鯖]有任何教科書可以提供,因為只有很少的理論。正?;幸粋€很長的道路,有時特征需要提前對數(shù)。每當你可以消除一些自由度,你就可以顯著地減少你所需要訓練的數(shù)據(jù)量。
有時候發(fā)現(xiàn)這些類型的轉(zhuǎn)化是很容易的。例如如果你正在做手寫字符的識別,如果有前景色和背景色的區(qū)別,字符的顏色就會變的很重要。
教科書往往只提供一些看起來很強大的方法,你需要用數(shù)據(jù)測試一下就能得出結(jié)果,這也可能是從理論觀點和數(shù)據(jù)源來說是對的,但是在現(xiàn)實中,數(shù)據(jù)和我們的時間是有限的,所以尋找大信息量的特點是非常有必要的。
三、選型大多數(shù)是看周期,而不是數(shù)據(jù)集的大小。
你不想在大數(shù)據(jù)時代過多的表達自己的觀點,但是大多數(shù)數(shù)據(jù)會完美的融入你的主內(nèi)存。你的方法可能不會在跑數(shù)據(jù)上花費很長時間,但是你會花很多時間從原始數(shù)據(jù)中提取出特征,進行交叉驗證。為你的學習方法比較不同特征提取管道和參數(shù)。
對 于模型的選擇,你可以通過大量的參數(shù)組合,評估一個相同的數(shù)據(jù)副本的性能?,F(xiàn)在的問題就是所有的組合爆炸,比方說你有兩個參數(shù),它需要大約一分鐘來訓練你 的模型,并獲得一個結(jié)果來評估數(shù)據(jù)集的性能。如果每一個參數(shù)有5個候選數(shù)值,并且執(zhí)行5倍交叉驗證(把數(shù)據(jù)分割成5部分,測試5次,在每次迭代中使用不同 的數(shù)據(jù)來測試),這意味著你需要運行25次來找出哪種方法的效果更好,這可能需要花費兩個小時的時間。
好消息是這是很容易并行化的,因為不同的運行是完全相互獨立的。這同樣適用于特征提取,您通常使用相同的操作(解析,提取,轉(zhuǎn)換等),以每個數(shù)據(jù)獨立設置,導致一些“ 密集并行”(是的,這是一個技術(shù)術(shù)語)。
壞消息是這對做數(shù)據(jù)分析的人來說是很多的,因為所有的這些意味著對復雜辦法實現(xiàn)拓展實現(xiàn)是沒有什么需求的,但是對于儲存的并行數(shù)據(jù)運用一些相同的算法在大多數(shù)情況下都非常有幫助。
最 后有很多數(shù)據(jù)并不意味著你需要所有的數(shù)據(jù),問題是有關(guān)于潛在學習問題的復雜性。如果這個問題可以用一個簡單的模型解決,你就不需要用那么多的數(shù)據(jù)來推斷模 型的參數(shù)。這種情況下,采用數(shù)據(jù)的隨機子集可能會有很大的幫助。正如我上面所說的,有時候正確的共您可以幫助他們減少所需要的數(shù)據(jù)點的數(shù)量。
總之知道如何正確的評價可以幫助你減少一個方法不能應用與未來數(shù)據(jù)的風險。獲取正確的特征提取可能是最有效的方法來獲得最好的結(jié)果。最后。并不總是大數(shù)據(jù),分布式計算也可以幫助你。