Main Page

From Love's Story
Jump to: navigation, search

數據分析



SAS:這可以說是非常昂貴的數據分析軟體了,很大程度上,除非是特別約定的行業,比如醫療、生物化學領域,或者是某些傳統慣性較強的企業,這個軟體使用的我見到的已經不多了。SPSS:這個很容易操作,界面很友好。算是很傳統的統計分析軟體。



因為最初是爲社會統計學而設計的軟體,所以在傳統統計分析方面表現還是很不錯的,再加上易用性,我覺得如果數據分析的目標已經有較確定的模型可遵循,使用SPSS會很不錯。WEKA:這是一個免費的數據挖掘軟體,模型方法等等方面,都很全面。



是構建在Java上的軟體,因為這一點對於方法模型的擴展其實是有一定局限性的,從我的使用體驗上看,WEKA在解決回歸類型模型和神經網絡模型上,效率不高。WEKA的Experimenter環境提供的方法對比等等方面的使用功能,是我覺得比較好的。SNNS:也就是Stuttgart Neural Network Simulator的縮寫。



是神經網絡專門方向的數據挖掘軟件。如果說,某一個軟體對於神經網絡的支持最全面、最具可用性的話,那我一定會推薦這個專門向軟體SNNS。Rapidminer:AGPL版本的Rapidminer是開源免費的,同樣基於Java編寫而成。但是,相比WEKA而言,Rapidminer提供了R和Groovy的插件,在擴展性和靈活性方面,比WEKA要好。另外就是,Rapidminer更集中于機器學習模型方法的實現。





在數據視圖方面我覺得是前面我說到的這幾個數據分析、挖掘的軟體中最好的。R/S:對於最最傳統的數據分析/統計分析來說,R語言或者是S語言,是使用最多,支持最多的數據分析語言了。眾多的Package,使得R/S幾乎可以完成任意的數據挖掘、分析的任務。不過,R/S也是有一個很麻煩的問題的,那就是很依賴內存以及CPU。



內存太小,在計算巨大數量的數據時,產生內存不足的錯誤;運行效率一方面依賴于挖掘程序的編寫,更依賴于CPU的運行效率。基於R/S的數據分析、統計分析教材也是最多的。Python:通過NumPy、SimPy、Matplotlib等等類庫(添加包?



),也能讓Python俱有很強大的數據分析能力,但是,幾乎所有算法都需要自己實現了,雖然也有一些專門的數據分析類庫,但是,面對不同問題的函數修正,是一個很麻煩的事情,但是,Python優秀的運算能力,要比R/S,亦或者是上面所提到的各種軟體來說,要快速多了。自然語言處理方面的書籍,有不少使用Python的。



Ruby:元編程的代表語言。雖然沒有專門爲數據分析開發的各種類庫,但是,評介不俗的元編程能力,在解決某些快速問題上還是不錯的,尤其是對於需要應用MCMC方法的模擬分析的問題方面,得天獨厚。FORTRAN:函數編程和數值分析方面的祖宗級語言。對於大型機、超級機支持的最好。



而且,由於在併行計算和高性能計算方面性能特別突出,當我們的挖掘任務所使用的數據集又極其巨大的時候,使用FORTRAN是最最最最正確的選擇了。Julia:感覺Julia一直致力于超越Python w/NumPy在數值計算方面的性能,但是苦於現在類庫(添加包)還太少,使用上需要完全手動編寫每一個挖掘模型,這是一個十分巨大的任務量,再加上繪圖能力遠遜Python,我也是淺嘗輒止之後就很少使用了。



Haskell:是純函數編程的典範。C/C#:最最最根本的程序語言了。我幾乎沒有使用過這類編程語言來解決數據分析問題。但是,我有不少同學、同事,是使用這一類方式來做數據分析的。我個人感覺上來說,使用C語言做數據分析,是很繁瑣的,而且也需要很精深的Debug知識。Twitter Storm:這個已經不能繼續稱作專門的數據分析軟體了,Storm準確來說,應該算是一種對流數據進行分析的框架。



網絡營銷 。我也是剛剛開始接觸並使用Storm,最讓我喜歡的地方是,Storm的實時數據處理能力,尤其是在我對期貨市場做研究的時候,一邊用Python把實時的期貨tick數據寫入硬盤,一邊就能實時的把tick數據整理成任意我需要的形態,甚至簡單的數據預處理方法也能實時完成更新。



不過,沒有什麼便利的數據分析開發包來減輕寫數據分析算法的任務強度,但是,對比他的特性,這點缺憾我還是能接受的。Apache Spark:同Twitter Storm類似,但是實時處理能力略差,不過Spark有數據分析的開發包,總體使用的感覺,似乎它更適合對實時數據分析要求不高的任務。



而且要使用Java或者Scala語言,在書寫數據分析方法的時候,難度也無形加大了不少,所以感覺這個更偏向于簡單的數據分析任務的處理。只是處於市場分析、內部管理之用的數據分析,只需要能看懂各種模型的數學/統計學只是就足夠了。



對於這類數據分析任務,和業務員更深入的溝通,和相關人員更深入的探討,更精准的總結出問題關鍵,這才是更重要的部分,實質的數據分析只是在驗證,或者是黑箱式實用的。



如果想一直以此維生,那麼,了解模型的來龍去脈是很重要的,因為你可能面對的將是不同的問題,不同的數據,有的時候不僅僅要單純的使用模型,修改模型,有機的結合模型來處理問題,都需要對各個模型有足夠的了解和認知。而這樣的了解、認知,有的時候不僅僅涉及數學知識、統計學知識,就比如神經網絡的模型、ROC檢驗的來由(陰性陽性的定義由來)等等。



那到底需要多深刻的數學知識呢?這個還真不好說。就我個人來說,從最最簡單的各種類型的概率模型,到隨機漫步,到混沌理論,到隨機微積分,各種線性、非線性的統計方法都有深入學習過。似乎應該說,足夠自己去理解各種數據模型的數學知識,就足夠了。先從統計學依賴最少的機器學習方法開始的。



比如神經網絡、遺傳算法、隨機森林、模擬退火算法等等開始的。雖然相應的數學模型可能會遇到個別艱澀的地方,但是,學起來還是十分興趣盎然的啊!尤其是,能接觸到很多有趣的例子,總之,對我自己來說,這個起步點是從自己興趣點開始的。



然後,開始接觸各種時間序列分析的方法。這時候統計的東西開始多了。假設檢驗啦、概率分布啦,都是遵從一種解決問題的思路的。在此之後,我才開始全面接觸統計分析(這麼看起來,我就是那個倒練經脈的異類啊!)。然後就是,各種豁然開朗和原來如此!