
R+Hadoop方案為何成為企業(yè)學(xué)習(xí)業(yè)務(wù)的首選_數(shù)據(jù)分析師
眾所周知,R在解決統(tǒng)計學(xué)問題方面無與倫比。但是R在數(shù)據(jù)量達(dá)到2G以上速度就很慢了,于是就催生出了與Hadoop相結(jié)合跑分布式算法這種解決方案,但是,python+Hadoop這樣的解決方案有沒有團(tuán)隊在使用?R這樣起源于統(tǒng)計學(xué)的計算機(jī)包與Hadoop相結(jié)合會不會出問題?
因?yàn)樗麄冊诓欢甊和Hadoop的特征應(yīng)用場景的情況下,恰好抓到了一根免費(fèi),開源的稻草。
R:
R的應(yīng)用場景不在于無與倫比的統(tǒng)計學(xué)習(xí)能力,而在于結(jié)構(gòu)化數(shù)據(jù)下無與倫比的單位代碼產(chǎn)出量。神經(jīng)網(wǎng)絡(luò),決策樹等基于結(jié)構(gòu)化數(shù)據(jù)的算法一行代碼搞定,預(yù)測又只是一行代碼。這樣,商業(yè)數(shù)據(jù)庫(如包括Oracle,Netezza,Teradata,SAPHANA等)提供了R接口供統(tǒng)計分析人員進(jìn)行高效實(shí)施。同樣的,SAS和IBM SPSS也做到了一部分高效實(shí)施能力,他們沒有的是R獨(dú)有的龐大cran packages群。但相似的一點(diǎn)是,R的package群也把它的用戶慣壞了,慣壞到這些人只是覺得這是一個SAS或者SPSS的免費(fèi)版,而不是去通過代碼學(xué)習(xí)如何做機(jī)器學(xué)習(xí)哪怕一點(diǎn)點(diǎn)核心原理。你要做的,就是高效的最新結(jié)構(gòu)化數(shù)據(jù)算法的實(shí)施。
最重要的是,從Hadoop上的數(shù)據(jù)加載到這些庫,不僅保證了數(shù)據(jù)本身的正確性和結(jié)構(gòu)化,也已經(jīng)保證了數(shù)據(jù)模型的第二、第三范式化(CAErwin的第一課),想做任何一個分析,你手邊的數(shù)據(jù)庫簡單的join就形成了你需要的分析寬表。想想SQL里sumover的設(shè)計含義:為什么它要制造數(shù)據(jù)的冗余?那一定是為了BI或者分析存在的。
Hadoop:
Hadoop的應(yīng)用場景不在于給統(tǒng)計分析軟件提供強(qiáng)力的支持,而只是提供了一個分布式數(shù)據(jù)的泛用免費(fèi)框架,基于鍵值對(key value pair)高效的對原始非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲。
結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)庫結(jié)合的R+Hadoop看起來很美,實(shí)則困難重重。我的看法是,任何一家在數(shù)據(jù)分析領(lǐng)域(Text Mining暫時除外,見后)決定以一個穩(wěn)健的態(tài)度涉足的企業(yè),都無一例外的基于數(shù)據(jù)強(qiáng)一致性的考慮,選擇傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫作為后續(xù)結(jié)構(gòu)化分析的依托——哪怕他們是收費(fèi)的。如果習(xí)慣代碼開發(fā),Hadoop+python自己做初步的數(shù)據(jù)處理,而后使用基于java的Mahout是一個很自然的選擇。
R+Hadoop的幻覺:
不管什么和Hadoop結(jié)合,都喜歡以word count這種典型的鍵值對開始。事實(shí)上R可以做這件事,但是覺得R做的無與倫比,就有點(diǎn)進(jìn)入誤區(qū)。還是那句R的美在于結(jié)構(gòu)化數(shù)據(jù)下無與倫比的單位代碼產(chǎn)出量。一旦你發(fā)現(xiàn)你作為專注于數(shù)據(jù)的分析師,同時也是一個并不骨灰的代碼開發(fā)者,開始用R操作列表和數(shù)據(jù)結(jié)構(gòu),開始用R重寫Mapper和Reducer,你就會產(chǎn)生一個疑問:
為嘛不學(xué)Java、Python?這種分析“不傳統(tǒng)”,就算你不想學(xué)吧,為嘛不找懂它們的人來干?
Python基于鍵值對存儲,也具有相當(dāng)高的單位代碼產(chǎn)出量,也有很多科學(xué)計算包。從這個意義上你可以做出一個白箱,單機(jī)縮水版的mahout,而且適合處理有增量算法的大數(shù)據(jù)學(xué)習(xí)(看看NumPy,SciPy,)。一樣免費(fèi)。
數(shù)據(jù)挖掘的幻覺:
數(shù)據(jù)挖掘是什么,很難嗎?
廣義的數(shù)據(jù)挖掘,包括數(shù)據(jù)分析和機(jī)器學(xué)習(xí),只說最核心的數(shù)學(xué)概念的話,估計就幾句話;恰好R的簡潔性也是能用幾句話做完這幾句話的:
0數(shù)據(jù)清洗,標(biāo)準(zhǔn)化。和1-4,理解真實(shí)世界是相輔相成的
1最先學(xué)的數(shù)學(xué)技巧是空間分解:LL’,PCA,SVD,回歸以及L2/L0懲罰變種
2再學(xué)最優(yōu)化算法:L1懲罰回歸,SVM(使用的Newton-Raphson/Gauss-Newton/Levenberg-Marquadt(還是1的內(nèi)容);MonteCarloMarkovChain
3數(shù)據(jù)結(jié)構(gòu):決策樹(列表類),詞頻統(tǒng)計(鍵值對或者字典類),F(xiàn)P-growth(一個樹的加強(qiáng)版)。學(xué)到這,所謂“貝葉斯”根本就不能叫算法,只能叫一個指導(dǎo)思想。
4模型集成:Adaboost,神經(jīng)網(wǎng)絡(luò),bootstrap。對方法,對模型參數(shù)都能集成(大雜燴)
任何一個聽起來很裝逼的算法,逃不過被解析成這4類方法組合的命運(yùn)。
可以看到,大數(shù)據(jù)分析的瓶頸在哪?
第0步,和曾經(jīng)的大Boss討論過,傳統(tǒng)行業(yè)數(shù)據(jù)倉庫實(shí)施起碼還能打10年,而”實(shí)體-關(guān)系”概念和”鍵-值”概念這兩種抽象起碼還能打30年,數(shù)據(jù)的組織、過濾,元數(shù)據(jù)維護(hù)都是數(shù)據(jù)產(chǎn)生價值的必經(jīng)之路,這方面的工作很枯燥但是很基礎(chǔ),大數(shù)據(jù)和傳統(tǒng)數(shù)據(jù)都需要;
第1步是最基本最重要的分析手段,也最容易在大數(shù)據(jù)語境下導(dǎo)致單機(jī)無法分析的億階稀疏大矩陣產(chǎn)生:例1,用戶User對商品SKU的購買記錄;例2,在特定的經(jīng)緯度,特定的時間,特定的用戶發(fā)生了動作;這兩個例子是典型的“匯總還不如不匯總”的情況,必須要有分布式稀疏矩陣處理技術(shù);
第2步,序貫MCMC的串行性可以通過并行集成方法模擬,但是收斂性還仍然較低,需要暴力并行堆FLOPS;對應(yīng)的,因?yàn)?a href='/map/svm/' style='color:#000;font-size:inherit;'>SVM/Lasso都有增量算法、分布式算法方案,核心思想在于“世界的真實(shí),模型的本質(zhì),都是稀疏的”,鎖少量資源,分布式地更新模型系數(shù)或者是梯度,這些算法在理論上得到突破后,往往依賴分析型數(shù)據(jù)庫或者大數(shù)據(jù)平臺靈活的并發(fā)調(diào)度,靈活的行列混合存儲模式,這一點(diǎn)是單機(jī)、小集群、傳統(tǒng)數(shù)據(jù)庫難以企及的;
第3、4步,這里雖然舉了很簡單的例子,但這些是在數(shù)學(xué)模型和數(shù)據(jù)模型上是最沒有開發(fā)壓力的,需要關(guān)心的只是資深程序員的功底了。舉例說明,文本挖掘(NLP)統(tǒng)計完詞頻你還是得會空間里做PCA(或者其他形式的大矩陣加工);如果不然,只引入HMM模型和基礎(chǔ)字典樹的話,學(xué)習(xí)成本就只有學(xué)習(xí)貝葉斯理論了,并且仍然可以高效并行的解決NLP問題,有興趣的可以參考Viterbi算法和CRF算法。
大數(shù)據(jù)的幻覺:存儲和計算的沖突
大數(shù)據(jù)處理,多大算大?像我說的,在3、4步出來的數(shù)據(jù),原始數(shù)據(jù)很大,加工匯總完了很小,或者處理起來是高度獨(dú)立的。分布式存儲不影響分析,說是大數(shù)據(jù),其實(shí)和小數(shù)據(jù)處理沒差別。
需要隨時交換資源的聚類,回歸,SVD,PCA,QR,LU等關(guān)系到矩陣分解的計算甚至是高效訪問,這才是大數(shù)據(jù)真正的挑戰(zhàn)。
那些有監(jiān)督的分類樹,把數(shù)據(jù)集切成1000份并且有冗余的給500臺機(jī)器每臺3-5份數(shù)據(jù)最后得到集成的分類結(jié)果,我很難稱其為“大數(shù)據(jù)計算技術(shù)”,它的本質(zhì)和挖礦機(jī)每秒能做無數(shù)個高度同質(zhì)化的hash計算一樣,不需要資源交換,不需要大量通信,它只是小數(shù)據(jù)的范圍內(nèi)打轉(zhuǎn)。
內(nèi)存內(nèi)的分析和數(shù)據(jù)探索,展現(xiàn)(單節(jié)點(diǎn)):
百萬級,R的上限;千萬級-億級,SAS的上限;億級,Python的上限。我的使用經(jīng)驗(yàn)是,400M數(shù)據(jù),Python加載內(nèi)存500M,R加載占內(nèi)存2G,SAS加載600M,經(jīng)過表級壓縮150M。而后續(xù)的原始處理(尤其是字符串操作這種數(shù)據(jù)清洗),R幾乎不能做。這就需要你輸入到R的數(shù)據(jù)幾乎就能直接開始跑分析了。若不信邪,我推薦你用readLines加上strsplit來操作讀入R的文件,看看他數(shù)據(jù)清洗的效率和read.delim,和SASprocimport以及Python的withas語法相差多少。
同時另一方面,只要數(shù)據(jù)量低于剛才提到的限度,R又提供了最好的展現(xiàn)方案,因?yàn)椤罢宫F(xiàn)方案是專用而非泛用”的。最著名的ggplot2,基于百度echarts產(chǎn)品的recharts(bytaiyunonGithub),還有YihuiXie的作品knitr(markdown語法動態(tài)將數(shù)據(jù)挖掘結(jié)果,圖片,視頻生成html),要比Python現(xiàn)有的可視化包(甚至是GUI包)更友好,易于操作,更適合小數(shù)據(jù)集快速展現(xiàn)。如果你恰好是SAS用戶,還是不要說自己懂?dāng)?shù)據(jù)展現(xiàn)會比較好。來自:http://www.3lll3.cn/
我的理解是,R的產(chǎn)出類似html+js+CSS一樣,適合輕量分析,輕量展現(xiàn),更適合個人用戶。
非結(jié)構(gòu)化大數(shù)據(jù)處理:
你的算法已經(jīng)走到了“萬事俱備,只差跑全量”這樣一個對手中的數(shù)據(jù)很了解的地步了。Wiki對Revolution Analytics的介紹講:R didn’t natively handle datasets larger than main memory。非結(jié)構(gòu)化大數(shù)據(jù)應(yīng)用的場景只能是:
你很懂?dāng)?shù)據(jù)分布的細(xì)節(jié)(也許你花了很久在其他項目或者本項目的樣本數(shù)據(jù)上研究過也在大數(shù)據(jù)集上稍微驗(yàn)證了一下)什么算法適合你了然于胸,已知增量算法是存在的,或者你覺得暴力并行沒問你覺得把類似Mahout計算的步驟經(jīng)過代碼包裝交付給R來做沒問題
你完全不care交互式探索
這是你需要的R應(yīng)用場景么?或者換一種說法,這種應(yīng)用場景R有什么優(yōu)勢?要知道算法效率排名上R
因?yàn)槲視AS(少量用Macro,沒用過矩陣,因?yàn)闆]必要)和R(沒有學(xué)習(xí)成本),Python的并行包pp使用中,考慮mahout。
更新:當(dāng)大數(shù)據(jù)平臺用戶不滿足于存儲,簡單加工以及成型算法實(shí)施,也開始關(guān)注最小查詢、交互式探索效率了,諸如Spark的內(nèi)存解決方案將會更合適。
結(jié)束語:
順便也給數(shù)據(jù)分析師,以及他們的領(lǐng)導(dǎo)們提醒一句:如果A有B沒有的代碼開發(fā)能力,R又完全替B把數(shù)學(xué)的事情做完了,形成了依賴,那B存在的意義是什么?國人強(qiáng)調(diào)數(shù)學(xué)理論這么一點(diǎn)點(diǎn)優(yōu)勢也都不復(fù)存在了。機(jī)器學(xué)習(xí)算法在不同的階段適合使用不同的工具,研究和使用接不上也就算了,千萬別連工具適合的環(huán)境都不懂,作為互聯(lián)網(wǎng)從業(yè)人員,這就太難堪了。
在美國,精英的研究者是自己做開發(fā)的——這話也可以這么說,精英的開發(fā)者們自己做研究。每一個模型都不完美,現(xiàn)有的模型很可能不滿足你的分析需要。所以才要以開放的心態(tài)接納新技術(shù),發(fā)展深入數(shù)據(jù)挖掘研究,從代碼優(yōu)化改造(山寨)走向技術(shù)原創(chuàng)。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而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ù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(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ū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03