天天看點

何為資料挖掘?

何為資料挖掘?

何為資料挖掘?

        資料挖掘就是指從資料中擷取知識。

        好吧,這樣的定義方式比較抽象,但這也是業界認可度最高的一種解釋了。對于如何開發一個大資料環境下完整的資料挖掘項目,業界至今仍沒有統一的規範。說白了,大家都聽說過大資料、資料挖掘等概念,然而真正能做而且做好的公司并不是很多。

        筆者本人曾任職于A公司雲計算事業群的資料引擎團隊,有幸參與過幾個比較大型的資料挖掘項目,是以對于如何實施大資料場景下的資料挖掘工程有一些小小的心得。但由于本系列博文主要是結合傳統資料挖掘理論和筆者自身在A雲的一些實踐經曆,是以部分觀點會有較強主觀性,也歡迎大家來跟我探讨。

資料挖掘背後的哲學思想

        在過去很多年,首要原則模型(first-principle models)是科學工程領域最為經典的模型。

        比如你要想知道某輛車從啟動到速度穩定行駛的距離,那麼你會先統計從啟動到穩定耗費的時間、穩定後的速度、加速度等參數;然後運用牛頓第二定律(或者其他實體學公式)建立模型;最後根據該車多次實驗的結果列出方程組進而計算出模型的各個參數。通過該過程,你就相當于學習到了一個知識 --- 某輛車從啟動到速度穩定行駛的具體模型。此後往該模型輸入車的啟動參數便可自動計算出該車達到穩定速度前行駛的距離。

        然而,在資料挖掘的思想中,知識的學習是不需要通過具體問題的專業知識模組化。如果之前已經記錄下了100輛型号性能相似的車從啟動到速度穩定行駛的距離,那麼我就能夠對這100個資料求均值,進而得到結果。顯然,這一過程是是直接面向資料的,或者說我們是直接從資料開發模型的。

        這其實是模拟了人的原始學習過程 --- 比如你要預測一個人跑100米要多久時間,你肯定是根據之前了解的他(研究對象)這樣體型的人跑100米用的多少時間做一個估計,而不會使用牛頓定律來算。

資料挖掘的起源

        由于資料挖掘理論涉及到的面很廣,它實際上起源于多個學科。如模組化部分主要起源于統計學和機器學習。統計學方法以模型為驅動,常常建立一個能夠産生資料的模型;而機器學習則以算法為驅動,讓計算機通過執行算法來發現知識。仔細想想,"學習"本身就有算法的意思在裡面嘛。

        然而資料挖掘除了模組化外,還有不少其他要做的工作(本文後面會一一講到),是以涉及到不少其他知識,如下圖所示:

何為資料挖掘?

資料挖掘的基本任務

        資料挖掘的兩大基本目标是預測和描述資料。其中前者的計算機模組化及實作過程通常被稱為監督學習(supervised learning),後者的則通常被稱為無監督學習(supervised learning)。往更細分,資料挖掘的目标可以劃分為以下這些:

何為資料挖掘?

        預測主要包括分類 - 将樣本劃分到幾個預定義類之一,回歸 - 将樣本映射到一個真實值預測變量上;描述主要包括聚類 - 将樣本劃分為不同類(無預定義類),關聯規則發現 - 發現資料集中不同特征的相關性。本系列其他文章将會分别對這些工作深入進行講解,如果讀者是第一次接觸這些概念請不要糾結。

資料挖掘的基本流程

        從形式上來說,資料挖掘的開發流程是疊代式的。開發人員通過如下幾個階段對資料進行疊代式處理:

何為資料挖掘?

        其中,

        1. 解讀需求

        絕大多數的資料挖掘工程都是針對具體領域的,是以資料挖掘從業人員不應該沉浸在自己的世界裡YY算法模型,而應該多和具體領域的專家交流合作以正确的解讀出項目需求。這種合作應當貫穿整個項目生命周期。

        2. 搜集資料

        在大型公司,資料搜集大都是從其他業務系統資料庫提取。很多時候我們是對資料進行抽樣,在這種情況下必須了解資料的抽樣過程是如何影響取樣分布,以確定評估模型環節中用于訓練(train)和檢驗(test)模型的資料來自同一個分布。

        3. 預處理資料

        預處理資料可主要分為資料準備和資料歸約兩部分。其中前者包含了缺失值處理、異常值處理、歸一化、平整化、時間序列權重等;而後者主要包含次元歸約、值歸約、以及案例歸約。後面兩篇博文将分别講解資料準備和資料歸約。

        4. 評估模型

        确切來說,這一步就是在不同的模型之間做出選擇,找到最優模型。很多人認為這一步是資料挖掘的全部,但顯然這是以偏概全的,甚至絕大多數情況下這一步耗費的時間和精力在整個流程裡是最少的。

        5. 解釋模型

        資料挖掘模型在大多數情況下是用來輔助決策的,人們顯然不會根據"黑箱模型"來制定決策。如何針對具體環境對模型做出合了解釋也是一項非常重要的任務。

資料挖掘的工程架構

        回到本文開頭提到的那個問題,“如何開發一個大資料環境下完整的資料挖掘項目?”。這個問題每個公司有自己的答案,這裡僅以A公司的情況進行介紹。

        在A公司的資料引擎團隊中,主要人員分成A、B、C、D四個大組。這四個大組的分工非常明确,如下圖所示:

何為資料挖掘?

        圖中的這些個資料引擎架構在一個基于次元模組化的雲資料倉庫之上,并對上層應用提供算法支撐、推薦支撐、可視化支撐等等。這裡也能看出A公司的資料挖掘工程架構主要由三大塊組成:底層資料倉庫、中間資料引擎、高層可視化/前端輸出。很多小夥伴問我,你是一名資料挖掘工程師呀,可為什麼你前面的博文都是資料倉庫和資料可視化呢?我想如果他們看到這裡想必不會有此疑問了:)。

小結

上一篇: 資料挖掘

繼續閱讀