越來越多的應用涉及到大數據,不幸的是所有大數據的屬性,包括數量、速度、多樣性等等都是描述了數據庫不斷增長的復雜性。那么大數據給我們帶來了什么好處呢?大數據最大的好處在于能夠讓我們從這些數據中分析出很多智能的、深入的、有價值的信息。
最近比較了179種不同的分類學習方法(分類學習算法)在121個數據集上的性能,發現Random Forest(隨機森林)和SVM(支持向量機)分類準確率最高,在大多數情況下超過其他方法。本文針對“大數據分析到底需要多少種工具?”
分類方法大比武
大數據分析主要依靠機器學習和大規模計算。機器學習包括監督學習、非監督學習、強化學習等,而監督學習又包括分類學習、回歸學習、排序學習、匹配學習等(見圖1)。分類是最常見的機器學習應用問題,比如垃圾郵件過濾、人臉檢測、用戶畫像、文本情感分析、網頁歸類等,本質上都是分類問題。分類學習也是機器學習領域,研究最徹底、使用最廣泛的一個分支。
圖1機器學習分類體系
最近、Fernández-Delgado等人在JMLR(Journal of Machine Learning Research,機器學習頂級期刊)雜志發表了一篇有趣的論文。他們讓179種不同的分類學習方法(分類學習算法)在UCI 121個數據集上進行了“大比武”(UCI是機器學習公用數據集,每個數據集的規模都不大)。結果發現Random Forest(隨機森林)和SVM(支持向量機)名列第一、第二名,但兩者差異不大。在84.3%的數據上、Random Forest壓倒了其它90%的方法。也就是說,在大多數情況下,只用Random Forest 或 SVM事情就搞定了。
幾點經驗總結
大數據分析到底需要多少種機器學習的方法呢?圍繞著這個問題,我們看一下機器學習領域多年得出的一些經驗規律。
大數據分析性能的好壞,也就是說機器學習預測的準確率,與使用的學習算法、問題的性質、數據集的特性包括數據規模、數據特征等都有關系。
一般地,Ensemble方法包括Random Forest和AdaBoost、SVM、LogisTIc Regression 分類準確率最高。
沒有一種方法可以“包打天下”。Random Forest、SVM等方法一般性能最好,但不是在什么條件下性能都最好。
不同的方法,當數據規模小的時候,性能往往有較大差異,但當數據規模增大時,性能都會逐漸提升且差異逐漸減小。也就是說,在大數據條件下,什么方法都能work的不錯。參見圖2中Blaco & Brill的實驗結果。
對于簡單問題,Random Forest、SVM等方法基本可行,但是對于復雜問題,比如語音識別、圖像識別,最近流行的深度學習方法往往效果更好。深度學習本質是復雜模型學習,是今后研究的重點。
在實際應用中,要提高分類的準確率,選擇特征比選擇算法更重要。好的特征會帶來更好的分類結果,而好的特征的提取需要對問題的深入理解。
應采取的大數據分析策略
建立大數據分析平臺時,選擇實現若干種有代表性的方法即可。當然,不僅要考慮預測的準確率,還有考慮學習效率、開發成本、模型可讀性等其他因素。大數據分析平臺固然重要,同時需要有一批能夠深入理解應用問題,自如使用分析工具的工程師和分析人員。
只有善工利器,大數據分析才能真正發揮威力。
在工具學習上,入門工具推薦兩類:SQL(Structured Query Language)、Microsoft Office Excel,進階工具推薦:SPSS ClemenTIne/Python。
1、SQL
SQL是數據提取工具,大中型企業都會建立自己的數據庫系統,常用數據會建立數據報表系統(常說的BI系統,即business intelligence),供業務人員使用。但深入業務分析需要更多的底層數據,報表系統里沒有呈現的數據,這時就需要使用SQL工具提取數據庫系統數據。
SQL工具很多,有oracle、mysql、sqlserver、hive等,除了細微差異,大多數SQL語句都通用。
SQL工具學習很容易,真正需要下功夫的是對數據庫表結構的了解。從常用數據表了解,摸清數據指標及含義,建立起表結構間關系,完成日常工作數據提取工作為要。有精力的童鞋可以再去探索非常用數據表。
2、Microsoft Office Excel
Excel應該是所有數據分析師的入門工具。除了一些常用功能使用外,就是使用數據透視表和多學習內嵌函數,能省去不少工作量。除了數據量級處理有限外,Excel功能強大不能僅僅用強大來形容。高階Excel學習,可以繼續了解宏使用。
3、SPSS ClemenTIne/Python
在數據分析進階路上,還有一類工具是:數據建模工具,如SPSS ClemenTIne、R、Python等。大數據時代,數據維度過于豐富,數據量級過于龐大,對于未知數據探索,手動計算發現數據關系的工作量已經過于繁重,交給這些數據模型工具就簡單多了。其內嵌了大量精細的數據算法,我們需要做的就是掌握統計理論,掌握算法原理,輸入規范的數據,等待模型的結果。當然,對模型的掌握,結論的解讀,業務的理解,都是使用建模工具必須要學習的
下面我總結了分析大數據的5個方面。
1. Analytic Visualizations(可視化分析)
不管是對數據分析專家還是普通用戶,數據可視化是數據分析工具最基本的要求。可視化可以直觀的展示數據,讓數據自己說話,讓觀眾聽到結果。
2. Data Mining Algorithms(數據挖掘算法)
可視化是給人看的,數據挖掘就是給機器看的。集群、分割、孤立點分析還有其他的算法讓我們深入數據內部,挖掘價值。這些算法不僅要處理大數據的量,也要處理大數據的速度。
3. Predictive Analytic Capabilities(預測性分析能力)
數據挖掘可以讓分析員更好的理解數據,而預測性分析可以讓分析員根據可視化分析和數據挖掘的結果做出一些預測性的判斷。
4. Semantic Engines(語義引擎)
我們知道由于非結構化數據的多樣性帶來了數據分析的新的挑戰,我們需要一系列的工具去解析、提取、分析數據。語義引擎需要被設計成能夠從“文檔”中智能提取信息。
5. Data Quality and Master Data Management(數據質量和數據管理)
數據質量和數據管理是一些管理方面的最佳實踐。通過標準化的流程和工具對數據進行處理可以保證一個預先定義好的高質量的分析結果。
假如大數據真的是下一個重要的技術革新的話,我們最好關注大數據能給我們帶來的好處,而不僅僅是挑戰。






