
在機(jī)器學(xué)習(xí)方面使用 R + Hadoop 方案真的有那么好
為什么有些公司在機(jī)器學(xué)習(xí)業(yè)務(wù)方面傾向使用 R + Hadoop 方案?
因?yàn)樗麄冊(cè)诓欢甊和Hadoop的特征應(yīng)用場(chǎng)景的情況下,恰好抓到了一根免費(fèi),開源的稻草。
R:
R的應(yīng)用場(chǎng)景不在于無與倫比的統(tǒng)計(jì)學(xué)習(xí)能力,而在于結(jié)構(gòu)化數(shù)據(jù)下無與倫比的單位代碼產(chǎn)出量。神經(jīng)網(wǎng)絡(luò),決策樹等基于結(jié)構(gòu)化數(shù)據(jù)的算法一行代碼搞定,預(yù)測(cè)又只是一行代碼。這樣,商業(yè)數(shù)據(jù)庫(kù)(如包括Oracle,Netezza,Teradata,SAP HANA等)提供了R接口供統(tǒng)計(jì)分析人員進(jìn)行高效實(shí)施。 同樣的,SAS和IBM SPSS也做到了一部分高效實(shí)施能力,他們沒有的是R獨(dú)有的龐大cran packages群。但相似的一點(diǎn)是,R的package群也把它的用戶慣壞了,慣壞到這些人只是覺得這是一個(gè)SAS或者SPSS的免費(fèi)版,而不是去通過代碼學(xué)習(xí)如何做機(jī)器學(xué)習(xí)哪怕一點(diǎn)點(diǎn)核心原理。你要做的,就是高效的最新結(jié)構(gòu)化數(shù)據(jù)算法的實(shí)施。
最重要的是,從Hadoop上的數(shù)據(jù)加載到這些庫(kù),不僅保證了數(shù)據(jù)本身的正確性和結(jié)構(gòu)化,也已經(jīng)保證了數(shù)據(jù)模型的第二、第三范式化(CAErwin的第一課),想做任何一個(gè)分析,你手邊的數(shù)據(jù)庫(kù)簡(jiǎn)單的join就形成了你需要的分析寬表。想想SQL里sum over的設(shè)計(jì)含義:為什么它要制造數(shù)據(jù)的冗余?那一定是為了BI或者分析存在的。
Hadoop的應(yīng)用場(chǎng)景不在于給統(tǒng)計(jì)分析軟件提供強(qiáng)力的支持,而只是提供了一個(gè)分布式數(shù)據(jù)的泛用免費(fèi)框架,基于鍵值對(duì)(key value pair)高效的對(duì)原始非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲(chǔ)。
傳統(tǒng)方式下目測(cè)可以做到對(duì)連續(xù)型數(shù)值、離散型數(shù)值、字符串、大型字符串BLOB、地理信息(二維點(diǎn),多邊形)的存儲(chǔ),Hadoop相當(dāng)于直接把很多功能擴(kuò)展:比如Hive作為一個(gè)基本工具,直接提供了更廣泛的數(shù)據(jù)類型存儲(chǔ)方案:數(shù)組(array),結(jié)構(gòu)體(struct),鍵值對(duì)(map)等。
業(yè)務(wù)場(chǎng)景:我存儲(chǔ)一篇文章不再需要一坨文字灌進(jìn)去,先做NLP解析,然后形成 (詞,詞性)的元組,再組成長(zhǎng)數(shù)組(Array)即可方便的存儲(chǔ)、分析,以及利用內(nèi)置UDF、自寫UDF對(duì)復(fù)雜結(jié)構(gòu)行轉(zhuǎn)列,提取信息。(當(dāng)然,將NLP解析本身整合在UDF甚至算法中都是可行的,如PySpark)
如果你至今覺得非結(jié)構(gòu)化數(shù)據(jù),鍵值對(duì)是一種賣弄概念,我就換一個(gè)至簡(jiǎn)的說法:一個(gè)只有兩列的數(shù)據(jù)表。兩列的mn*2和多列m*n數(shù)據(jù)表是可以在一定加工代價(jià)下互轉(zhuǎn)的。這種數(shù)據(jù)結(jié)構(gòu)被大量應(yīng)用于Java,C++,Python甚至JavaScript中,當(dāng)你看見類似Hashmap,Hashtable,dict,map等字眼,那就是這貨沒跑了:經(jīng)過設(shè)計(jì),用于存儲(chǔ)的鍵(key)被散列后決定了它能夠被均勻地分布式存儲(chǔ),值(value)是鍵的跟班,隨著鍵被存儲(chǔ)。
對(duì)于非結(jié)構(gòu)化數(shù)據(jù)而言,元數(shù)據(jù)和數(shù)據(jù)不像方表,極其容易抽象出來(無非就是列名和方表的內(nèi)容)。初看一個(gè)半結(jié)構(gòu)化的Json/XML,元數(shù)據(jù)出現(xiàn)在鍵(key)中,數(shù)據(jù)出現(xiàn)在值(value)中,容易理解。但在解析其他類型數(shù)據(jù),(如網(wǎng)絡(luò)日志Url),鍵里的所謂元數(shù)據(jù)才是要分析的對(duì)象(一個(gè)用戶反復(fù)的使用price=xxx做查詢條件,說明價(jià)格敏感,有可能xxx取了好多值甚至所有可能值,key卻很少,可能只有price和brand;此時(shí)用戶行為模式出現(xiàn)在key里了。)
結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)庫(kù)結(jié)合的R+Hadoop看起來很美,實(shí)則困難重重。我的看法是,任何一家在數(shù)據(jù)分析領(lǐng)域(文本挖掘暫時(shí)除外,理由在業(yè)務(wù)場(chǎng)景里描述過)決定以一個(gè)穩(wěn)健的態(tài)度涉足的企業(yè),都無一例外的基于數(shù)據(jù)強(qiáng)一致性的考慮,選擇傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫(kù)作為后續(xù)結(jié)構(gòu)化分析的依托—— 哪怕他們是收費(fèi)的。如果習(xí)慣代碼開發(fā),Hadoop+python自己做初步的數(shù)據(jù)處理,而后使用基于java的Mahout是一個(gè)很自然的選擇:其提供的矩陣計(jì)算(SVD),迭代式聚類算法(如Kmeans),基于圖的迭代模型(一個(gè)例子是PageRank算法,值中存的也是Key),以及集成決策樹等模型,在分布式場(chǎng)景下是順理成章完成的,而R則會(huì)像一個(gè)跟班,很難找到它的應(yīng)用場(chǎng)景。一樣具有較高編碼效率的Python可以更加靈活、優(yōu)美(縮進(jìn)的意義上)的繼承mrjob類完成相應(yīng)功能,在數(shù)據(jù)嘗試性探索這一步,matplotlib產(chǎn)出報(bào)告恐怕是不如R+knitr+ggplot2更能取悅老板,但一旦需要階段性的測(cè)試,Python這種膠水語言或者一步到位的使用Java開發(fā)顯得更接地氣,更容易落地。(關(guān)于落地性,再小小吐槽一下R在Windows和Linux兩個(gè)平臺(tái)下能夠使用的包范圍是不同的,尤其是使用Rcpp或者并行包的時(shí)候。Python和Java則不常見到這種問題)
R+Hadoop的幻覺:
不管什么和Hadoop結(jié)合,都喜歡以word count這種典型的鍵值對(duì)開始。事實(shí)上R可以做這件事,但是覺得R做的無與倫比,就有點(diǎn)進(jìn)入誤區(qū)。還是那句R的美在于結(jié)構(gòu)化數(shù)據(jù)下無與倫比的單位代碼產(chǎn)出量。一旦你發(fā)現(xiàn)你作為專注于數(shù)據(jù)的分析師,同時(shí)也是一個(gè)并不骨灰的代碼開發(fā)者,開始用R操作列表和數(shù)據(jù)結(jié)構(gòu),開始用R重寫Mapper和Reducer,你就會(huì)產(chǎn)生一個(gè)疑問:
為嘛不學(xué)Java、Python?這種分析“不傳統(tǒng)”,就算你不想學(xué)吧,為嘛不找懂它們的人來干?
Python基于鍵值對(duì)存儲(chǔ),也具有相當(dāng)高的單位代碼產(chǎn)出量,也有很多科學(xué)計(jì)算包。從這個(gè)意義上你可以做出一個(gè)白箱,單機(jī)縮水版的mahout,而且適合處理有增量算法的大數(shù)據(jù)學(xué)習(xí)(看看NumPy,SciPy,)。一樣免費(fèi)。
數(shù)據(jù)挖掘的幻覺:
數(shù)據(jù)挖掘是什么,很難嗎?
廣義的數(shù)據(jù)挖掘,包括數(shù)據(jù)分析和機(jī)器學(xué)習(xí),只說最核心的數(shù)學(xué)概念的話,估計(jì)就幾句話;恰好R的簡(jiǎn)潔性也是能用幾句話做完這幾句話的:
0 數(shù)據(jù)清洗,標(biāo)準(zhǔn)化。和1-4,理解真實(shí)世界是相輔相成的
1 最先學(xué)的數(shù)學(xué)技巧是空間分解:LL’,PCA,SVD,一般回歸以及L2/L0懲罰變種;從信息論角度講信息流壓縮(有名如LZ及變種LZO);SVM用到的RBF也算基提取技巧。
2 再學(xué)最優(yōu)化算法:L1懲罰回歸,SVM(使用的Newton-Raphson/Gauss-Newton/Levenberg-Marquadt(還是1的內(nèi)容?。籑onteCarlo Markov Chain
3 數(shù)據(jù)結(jié)構(gòu):決策樹(列表類),詞頻統(tǒng)計(jì)(鍵值對(duì)或者字典類),F(xiàn)P-growth(一個(gè)樹的加強(qiáng)版)。學(xué)到這,所謂“貝葉斯”根本就不能叫算法,只能叫一個(gè)無處不在的指導(dǎo)思想。
4 模型集成:Adaboost,神經(jīng)網(wǎng)絡(luò),bootstrap。集成時(shí),權(quán)重技巧和懲罰技巧我的理解是不可割裂。但這個(gè)思想對(duì)方法,對(duì)模型參數(shù)都能集成,大雜燴。1個(gè)超級(jí)精妙的模型不如200個(gè)良好理解了問題性質(zhì)的土鱉模型更實(shí)用。
任何一個(gè)聽起來很裝逼的算法,逃不過被解析成這4類方法組合的命運(yùn)。參數(shù)調(diào)優(yōu)這種不提綱挈領(lǐng)的問題,確實(shí)需要結(jié)合時(shí)間成本人力成本看(研究者,學(xué)生,碼農(nóng)的成本和投入量完全不一樣)
可以看到,大數(shù)據(jù)分析的瓶頸在哪?
第0步,和曾經(jīng)的大Boss討論過,傳統(tǒng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)實(shí)施起碼還能打10年,而”實(shí)體-關(guān)系”概念和”鍵-值”概念這兩種抽象起碼還能打30年,數(shù)據(jù)的組織,過濾,元數(shù)據(jù)維護(hù)都是數(shù)據(jù)產(chǎn)生價(jià)值的必經(jīng)之路,這方面的工作很枯燥但是很基礎(chǔ),大數(shù)據(jù)和傳統(tǒng)數(shù)據(jù)都需要;
第1步是最基本最重要的分析手段,也最容易在大數(shù)據(jù)語境下導(dǎo)致單機(jī)無法分析的億階稀疏大矩陣產(chǎn)生:例1,用戶User對(duì)商品SKU的購(gòu)買記錄;例2,在特定的經(jīng)緯度,特定的時(shí)間,特定的用戶發(fā)生了動(dòng)作;這兩個(gè)例子是典型的“查詢簡(jiǎn)單分析難,匯總還不如不匯總”的情況,必須要有分布式稀疏矩陣處理技術(shù);
第2步,序貫MCMC的串行性可以通過并行集成方法模擬,但是收斂性還仍然較低,需要暴力并行堆FLOPS;對(duì)應(yīng)的,因?yàn)?a href='/map/svm/' style='color:#000;font-size:inherit;'>SVM/Lasso都有增量算法、分布式算法方案,核心思想在于“世界的真實(shí),模型的本質(zhì),都是稀疏的”,鎖少量資源,分布式地更新模型系數(shù)或者是梯度,這些算法在理論上得到突破后,往往依賴分析型數(shù)據(jù)庫(kù)或者大數(shù)據(jù)平臺(tái)靈活的并發(fā)調(diào)度,靈活的行列混合存儲(chǔ)模式,這一點(diǎn)是單機(jī)、小集群、傳統(tǒng)數(shù)據(jù)庫(kù)難以企及的;
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03