閱讀581 返回首頁    go 技術社區[雲棲]


學習數據分析的“裏程碑”是什麼?

數據分析是一項綜合技術。它既包含hardcore的編程技術,也包含諸多分析邏輯的軟知識。

對於數據科學家而言,Excel隻是自己技能圖表裏很小的一部分。雖然數據科學家流派眾多,成長路徑也各異,很難用短短一篇文章概括成長過程中碰到的所有“裏程碑”。但是,依舊有一些東西是共通的。這篇文章就嚐試歸納一些我心目中的數據科學“裏程碑”。

什麼是裏程碑?

①“裏程碑”是一套知識體係中的重要環節,無論用哪個教程、如何展開學習,它總會是你必須麵對的一關。有可能它並不難,但是如果想要在能力上更進一步,這個裏程碑是繞不開的。

②跨越“裏程碑”,技術就能獲得質的飛躍,比如學會vlookup這項不算太難的技能,Excel工作效率就能大幅提升。而如果掌握VBA,就能用Excel做很多原先不可能的事情。

裏程碑1:理解是什麼造就了大數據時代

想必每一位係統學習過數據科學的同學,都會對“大數據”這個詞嗤之以鼻。

不隻是因為這個詞被用濫了,更是因為它言之無物。大數據究竟是什麼?至今仍然沒有一個明確的定義。

但是,大數據時代卻是真實存在的。與數據相關的科技創新和產業如今已經開展的如火如荼,雖然它們形式各不相同,但放在“大數據時代”的框架下,並沒有什麼毛病。

這就牽扯到一個很宏觀的問題——大數據時代的核心是什麼?為什麼數據相關的產業能夠突然爆發,蓬勃發展?對於這個問題的回答可能會直接影響到數據科學家的職業規劃和世界觀。

我個人的理解是:大數據時代,是海量數據+算法+運算能力的共同爆發。

海量數據——如今信息技術的發展,讓原始數據的記錄能力大幅提升。從宏觀的經濟金融數據,到微觀的產業內部數據;從傳統的結構化數據,到圖像、聲音和文本數據。原始數據的大幅增長,為人們理解世界、探索世界打開了更大的窗口。

算法——每一個數據分析用到的算法,都可以說是人類智慧的結晶。他們大多曆史悠久,譬如當下最熱的深度學習,DNN的算法最早可以追溯到1956年羅森布拉特發明的感知機,而DNN中最核心的BP算法在1975年也已經予以發表。在合適的算法產生之前,計算機的優良運算性能並不能用於解決特定的數據分析問題。但到了現在,為特定業務需求而設計的不同算法已經極為豐富,在性能和效果上都有了極大的提升。

運算能力——運算能力是大數據時代爆發的最後一環,可以說是壓死駱駝的最後一根稻草。硬件方麵,超級計算機、CPU與GPU的發展、存儲與數據性能的提升貢獻良多;軟件方麵,分布式運算的部署思路、mapreduce的計算框架將速度進一步提升,從R到Python再到Golang等等高級語言的誕生,以及層出不窮的軟件包,把數據分析的“控製台”做的越來越人性化。

三者缺一不可,但運算能力無疑是最前沿的開拓者。世界上先有少量數據和算法,於是我們可以進行初步的統計分析,但還遠遠沒有達到創造新時代的程度。唯有數據量大幅爆發,加上運算能力突破瓶頸,才能讓整個產業的規模開始指數增長。

私以為,隻有理解了大數據時代的起源,才能擺明自己在時代浪潮中的位置。

裏程碑2:R/Python

兩年前,大家在討論“應該用什麼軟件來做統計分析”。當時的選項有很多,SPSS,SAS,R,Python,Excel,Eviews,Stata,C++,Java……數都數不過來。

一年前,大家在討論“究竟應該學R還是Python”。那時候已經是兩者二分天下的時代,上麵列出來的軟件也偶有聲援者,但是已經翻不起太大的浪花了。

現在,大家討論的隻剩下“該怎麼入門Python”。

兩年過去,大量的老牌軟件逐漸淡出數據科學家的視野。這些工具軟件的死亡姿勢,我可以簡單概括為下麵幾種。

1. 軟件的功能天花板太低。典型代表是Eviews、SPSS之類的界麵軟件。曾經,他們成名於操作方便快捷的界麵,最終卻因為界麵能夠提供的功能有限,軟件天花板太低,被新時代拋棄。

2. 非開源。典型代表就是SAS,最早SAS曾是大數據分析的最終解決方案,也是唯一解決方案。它采用硬盤讀寫模式,是當時唯一能克服海量數據運算時內存空間不足的軟件;同時由於SAS內置了大量的統計軟件庫,隻需要少量代碼就能完成複雜的分析,輸出一份專業完善的報表。但是SAS敗在了它老舊的語法係統和非開源兩點上。SAS語法非常令人頭疼,既不是麵向對象也不是函數式編程,新手需要花很長時間適應它的語法結構;更重要的是,SAS公司的產品不開源,沒有外部package可供調用,根本跟不上算法的快速發展。如今SAS漸漸已經被數據科學家遺忘,隻在生物醫藥和銀行係統裏還保持著絕對優勢(然而這僅僅是因為政策壁壘或是行業慣性)。

3. 太難。這裏指的就是C++和Java,他們的代碼過於底層。好處是運算速度很快,壞處是開發起來很費時間。為了完成一個數據分析,運算速度其實可以適當犧牲,讓位給開發時間。或者,完成初期的分析和算法開發以後,把算法交給後端來用C++或Java實現。在業務中,客戶和數據分析師都沒有太多精力去等輪子慢慢造出來,大家想要的是一個方便好學的高級語言——顯然,隻剩下R和Python了。

4. 死於來自深度學習的不明AOE。很長時間內,R本來還和Python並駕齊驅難分高下。但自從AlphaGo刷屏,深度學習變得炙手可熱以來,R開始麵臨危機,因為目前深度學習的Tensorflow框架、keras包等等基本全部搭建在Python上麵。這就很尷尬了,R直接錯過了深度學習的浪潮。直到近期,有大神把深度學習的框架轉移到了R上麵,但是似乎已經晚了,Python已經在數據分析最佳工具排行榜上一騎絕塵。當然R還不至於消亡,由於學術界對R的使用頻率極高,幾乎所有學界研究出的新算法都在R平台進行模擬測試,所以R的算法包儲備是Python無法替代的。

所以我們其實可以發現,當一門數據分析工具誕生之初,它的命運幾乎就已經注定了。R和Python由於命令行+開源+高級語言的多重特點,幾乎是笑到了最後。而對於數據科學家來講,這兩門語言注定會是他們最好的朋友,每個數據科學家都應該至少將其中一個作為自己的主語言。

這便是數據科學家的一大裏程碑。不管之前你的基礎如何,當你第一次開始著手學習R或Python,你才算是真正用起了最適合大數據時代的數據分析工具,跨入了新的世界。

值得一提的是,未來這一列表上可能還會加上Golang,畢竟這一門由穀歌開發並倡導的數據科學新工具自從誕生以來,發展一直十分迅勐。但能否加入豪華套餐,既要考慮到Golang自身的奮鬥,也要考慮到曆史的行程。

裏程碑3:Spark

這兩年,大數據工程師們有一項共識:自己所有技能列表裏,Spark是對於薪資提升最有效的幫手。

Spark具有鮮明的特色。一方麵,它是目前最快的數據分析平台,完全實現了對於Hadoop和Mapreduce框架的繼承與超越。另一方麵,它的抽象程度比較高,需要大量使用lambda函數進行函數式編程,所以非常麻煩;而且Spark的社區完善度遠遠不及R和Python,雖然Spark基於Scala構建,能夠調用Scala和java的軟件包,但是它依舊很麻煩;更不用提搭建Spark的分布式計算平台甚至都不是一件簡單的事情。

上麵那段話裏可能出現了很多大家看不懂的詞匯。不過沒關係,總結起來,關於Spark其實隻需要知道兩點:

1. Spark特別快!Spark特別快!Spark特別快!

2. Spark特別難!Spark特別難!Spark特別難!

毫無疑問,Spark就屬於那種非常不好跨越的裏程碑。不過收益與付出並存,至少在我看來,Spark也沒有那麼難。當適應了用lambda函數寫map和reduce之後,甚至會愛上這種感覺。同時,如果有一定java基礎的話,Spark也會變得容易很多。

裏程碑4:從需求出發思考模型,而非將模型生搬硬套。

當前,數據科學家往往分為三派。

統計派:統計背景的數據科學家,往往喜歡用數學方法解決問題,格外關注數據分析中每一步的邏輯性,非常喜歡做假設檢驗。由於進行了大量的參數統計訓練,對於他們來講,每一個模型參數都是不可信的,甚至於每一個模型本身都很不可信——直到做出合理的數學證明,並對每個參數進行檢驗。統計派最初接觸機器學習時,往往會非常不適應於其“黑箱”的模式,然而最後往往也隻能歎服於模型優越的預測能力。

計算機派:CS出身的數據科學家帶有濃重的工科生氣質,習慣的思維方式是模塊化、按部就班的工程思維。他們更加關心機器學習的步驟與結果,而非每一步的邏輯。好處在於,他們在學習數據分析時不用克服自己的某種慣性,隻需要用工程思維做出一個好的模型。壞處就是,有時會太注重模型本身,忽略其適用條件。

業務派:這一派的數據科學家背景可以說是三教九流,但無論怎樣,總歸是和數據沾點邊。他們的思維特點是從業務邏輯出發,特別重視模型構建的前期過程,尤其特征工程。並且,他們始終期待模型輸出與他們猜測相符的結果,否則可能就要大發雷霆。

三派人都將成為優秀的數據科學家,但在他們發育完全之前,往往會碰到一些麻煩。這些麻煩我可以歸納為——不看需求,隻管模型。

統計派的模型可能是多元線性回歸、時間序列分析和非參數統計,計算機派則可能是最流行的DNN、SVM,業務派的模型就是他們的業務邏輯。三者都免不了把自己最習慣的思維方式代入多變的現實問題中去。比如分析房價數據,統計派往往一定要給數據做個回歸或是時間序列分析,計算機派喜歡給數據設定Classification標準然後套用分類算法,業務派則一定得先把房價數據的邏輯分析一通,提出一大堆假設,卻找不到好的模型來套用自己的假設。

這都不是最好的處理方法。好的數據分析應該是三者觀念的結合,即——首先,像業務派一樣分析原始數據,做好探索性分析和特征工程;隨後像統計派一樣謹慎分析模型適用性,選用合理的模型假設;最後像計算機派一樣大膽建模,積極調參,向著過擬合的方向不斷前進。

總結下來,最重要的,還是要拋棄自己腦海裏固有的幾套思維模式,從數據本身的分析需求出發,選擇最合適的分析方法、數據清洗思路、特征工程和模型。

可惜,這個裏程碑是一個玄學裏程碑。大部分人可能知道這個裏程碑的存在,卻不知道自己是不是真的跨過去了。但毫無疑問,能夠明白自己要從需求出發,就已經非常難得了。

裏程碑5:學會開始改善自己的代碼

統計派和業務派最大的裏程碑,可能就是理解代碼也有代碼的美學。

金融從業者可能非常熟悉怎樣做出一套漂亮的ppt,統計學家可能非常熟悉怎樣寫出簡練明晰的證明過程。但是,到了代碼這裏,大部分人還是願意把自己的IDE當成“草稿本”,覺得把想要的東西做出來就可以了。更不用說對代碼本身的改進,就像許多R新人會在代碼裏寫大量的for循環,而且是循環套循環,導致運行時間成倍增長。

事實上也不能全怪他們。數據分析的代碼一般不太好寫,需要反複嚐試,期間代碼非常容易寫的過於隨性,亂七八糟。最後如果偷懶不做整合,也就這麼亂下去了。

但是在實際工作中,數據分析的代碼依舊需要保證可讀性,否則後端改寫如何讀你的算法?做文檔和ppt的公關人員怎麼解讀你的代碼?甚至,你自己能不能在一個月後認出你的代碼?

當有這種現實需要的時候,數據科學家才會開始尋找代碼的美感。

讓代碼變得整齊漂亮,還隻是第一方麵。需要做的是調整好縮進、認真寫注釋、做好代碼的分塊、限製每一行的字符數等等。但在這之後,還需要學會怎樣提高代碼的運行速度(就比如R語言的第一大tip:用apply係函數替代for循環),如何將代碼寫的更加具有可讀性(比如將常用功能定義為函數),不一而足。代碼的美學是無窮無盡的,值得每一位數據科學家去探索。

沒頭沒腦寫了這麼一堆,也不知道看官們是否受用。

裏程碑是非常重要的,我們用裏程碑來標注過去的成就,新人則用前人的裏程碑來作為自己努力的方向。每個人在自己領域裏,都能列出諸多的“裏程碑”,把它們寫出來給新人看看,會是一件挺不錯的事情。  


本文作者:Still

來源:51CTO

最後更新:2017-11-02 10:33:39

  上一篇:go  Keras多GPU訓練指南
  下一篇:go  行業安全資訊精選第十三期:網信辦發布《互聯網新聞信息服務新技術新應用安全評估管理規定》,Bad Rabbit攻擊預警和安全建議