數據挖掘研究方向、熱點以及對大數據研究的認識
通過上網查詢以及看同行對會議的公共認識,數據挖掘領域的頂級會議是 KDD(ACM SIGKDD Conference on Knowledge Discovery and Data Mining) ,公認的、排名前幾位的會議是KDD、ICDE、CIKM、ICDM、SDM,期刊是ACM TKDD、IEEE TKDE、ACM TODS、ACM TOIS、DMKD、VLDB Journal等。會議及期刊的全稱如下:
會議
ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD)
International Conference on Data Engineering (ICDE)
International Conference on Information and Knowledge Management (CIKM)
IEEE International Conference on Data Mining (ICDM)
SIAM International Conference on Data Mining (SDM)
期刊
ACM Transactions on Knowledge Discovery From Data (TKDD)
IEEE Transactions on Knowledge and Data Engineering (TKDE)
ACM Transactions on Database Systems (TODS)
ACM Transactions on Information Systems (TOIS)
Data Mining and Knowledge Discovery (DMKD)
通過最近幾天對最新的(14年、15年)會議論文閱讀,首先說一下數據挖掘領域在做什么、熱點研究在哪里。
數據挖掘領域主要包括以下方面:基礎理論研究(規則和模式挖掘、分類、聚類、話題學習、時間空間數據挖掘、機器學習方法,監督、非監督、半監督等)、社交網絡分析和大規模圖挖掘(圖模式挖掘、社區發現、網絡聚類系數估計、網絡關系挖掘、網絡用戶行為分析、網絡信息傳播、社交網絡應用,社交推薦(信息、好友等))、大數據挖掘(算法的并行、分布式擴展、多源異構數據融合挖掘等)。數據挖掘應用(醫療、教育、金融等)。研究熱點是大數據挖掘、社交網絡和大規模圖挖掘。
下面,在說一下什么是大數據挖掘,它跟傳統的方法其本質區別是什么?大數據挖掘可以分為三點:算法的擴展、分布式框架開發、多源數據融合分析。通過閱讀 KDD’13 , KDD’14 ,幾篇 KDD’15 的 big data session 中的文章,幾乎百分之百的文章都提到了算法的 scalability 。由此可見,現今大數據挖掘與傳統算法的本質區別在于算法的可擴展性。換句話說,現在研究的算法在不僅僅能處理小規模數據集,當數據增加時也具有較大范圍內的適合。算法的擴展,我理解為兩個方面: scale out- 縱向擴展以及 scale up- 橫向擴展。縱向擴展最要在算法底層、良好的數據結構設計或者并行設計方面。橫向擴展主要指算法的分布式技術實現(自己編寫分布式算法或者基于現有分布式框架實現)。這里所說的“大數據”,在不同的挖掘領域(文本、圖結構、機器學習、圖像)所對應的數據量是不同的。對文本來說,幾百萬個樣本可能就是“大數據”;對機器學習來說,千萬個樣本,幾十維、幾百維 (MB/GB) 就是“大數據”;對大規模圖挖掘來說,千萬級節點、億級邊 (GB) ,也是“大數據”;對圖像數據,百萬級圖像 (TB) 完全可以稱得上“大數據”。那么,要做算法的可擴展性是不是必須用到并行技術、分布式編程技術?答案是一般需要,但并不絕對。算法如果做到了極致,單臺計算機也能處理“大數據”問題,比如: TurboGraph: A Fast Parallel Graph Engine Handing Billion-Scale Graphs in a Single PC. 文章僅僅在一臺計算機上利用線程并行(多核)實現了計算機集群完成的工作。有些文章是用 MATLAB 來完成的實驗 (Comparing apples to oranges: a scalable solution with heterogeneous hashing、Fast Flux Discrimination for Large-Scale Sparse Nonlinear Classification、Online Chinese Restaurant Process) 、有些文章是利用 Hadoop 集群來完成實驗、有些是利用 C/JAVA 語言編寫分布式程序實現、有些是利用多核 CPU 的多線程并行實現。可見,算法的實現方式不重要,重要的是算法具有 scalability 。多源數據融合以及挖掘分析也可以稱得上大數據挖掘,可能不見得數據集有非常大,但是通過多種數據的融合發現了之前完成不了的事情、或者之前完成效果不好的事情。比如: heterogeneous hashing 文章用了兩個異構數據集 (text、image) 進行 relation-aware 分析。特別是微軟亞洲研究院在 KDD’13 上的 U-Air: When Urban Air Quality Inference Meets Big Data ,這篇文章就是融合了 5 個數據集(氣象數據、空氣質量數據、 POI 數據、路網數據、軌跡數據),利用傳統的數據挖掘方法進行了融合分析,得到了較好的效果并進行了商業應用。附注:個人認為算法也應該考慮擴展性,在面臨數據集增加時,看看是否還會能達到高效地預測結果。
總結:在大數據研究中,更多的是偏理論算法的研究。可以這樣說,數據挖掘本身就是跟數據打交道,在特定情況下(數據集較大時或不斷增加時),數據挖掘的任何一個研究點都可能會遇到“大數據”問題。所以,真正需要做的是找準一個問題,利用傳統方法進行挖掘,并測試在大規模數據集下傳統算法是否可行,如果不可行,提出算法的改進版或者自己動手實現一個新的、具有可擴展性的算法,這就是大數據研究的過程(也包括異構數據融合分析)。