一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

導讀:在本文中,我們將介紹如下主題:

什麼是數據挖掘?要確定數據挖掘在不斷增強的其他相似概念中的位置,還將學習這一學科成長和變化的歷史。

我們如何進行數據挖掘?在此,我們將對比數據挖掘項目中常用的幾種過程或者方法論。

數據挖掘中使用哪些技術?在這一部分,將總結數據挖掘定義中包含的典型數據分析技術,並強調這本精通級書籍將要涵蓋的較為獨特卻未得到應有重視的技術。

作者:梅甘·斯夸爾

如需轉載請聯繫華章科技

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

01 什麼是數據挖掘

數據挖掘的目標是找出數據中的模式,但是細看之下,這一過分簡單的解釋就站不住腳。

畢竟,尋找模式難道不也是經典統計學、商業分析、機器學習甚至更新的數據科學或者大數據的目標嗎?數據挖掘和其他這些領域有什麼差別呢?當我們實際上是忙於挖掘模式時,為什麼將其稱作“數據挖掘”?我們不是已經有數據了嗎?

從一開始,“數據挖掘”這一術語就明顯有許多問題。這個術語最初是統計學家們對盲目調查的輕蔑叫法,在這種調查中,數據分析人員在沒有首先形成合適假設的情況下,就著手尋找模式。

但是,這一術語在20世紀90年代成為主流,當時的流行媒體風傳一種激動人心的研究,將成熟的數據庫管理系統領域與來自機器學習和人工智能的最佳算法結合起來。

“挖掘”這一單詞的加入預示著這是現代的“淘金熱”,執著、無畏的“礦工”們將發現(且可能從中得益)之前隱藏的珍寶。“數據本身可能是珍稀商品”這一思路很快吸引了商業上和技術刊物的注意,使他們無視先驅們努力宣傳的、更為全面的術語——

數據庫中的知識發現(KDD)。

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

但是,“數據挖掘”這一術語沿用了下來,最終,該領域的一些定義試圖改變其解釋,認為它指的只是更漫長、更全面的知識發現過程中的一步。今天“數據挖掘”和KDD被視為非常相似、緊密相關的術語。

那麼,其他相關術語如機器學習、預測性分析、大數據和數據科學又是怎麼回事?這些術語和數據挖掘或者KDD是不是一回事?下面我們比較這些術語:

  • 機器學習是計算機科學中的一個非常特殊的子領域,其焦點是開發能從數據中學習以作出預測的算法。許多數據挖掘解決方案使用了來自機器學習的技術,但是並不是所有數據挖掘都試圖從數據中作出預測或者學習。有時候,我們只是想要找到數據中的一個模式。實際上,我們所研究的數據挖掘解決方案中只有少數使用了機器學習技術,而更多的方案中並沒有使用。
  • 預測性分析有時簡稱為分析,是各個領域中試圖從數據中作出預測的計算解決方案的統稱。我們可以思考商業分析、媒體分析等不同術語。有些(但並不是全部)預測性分析解決方案會使用機器學習技術進行預測,但是同樣,在數據挖掘中,我們並不總是對預測感興趣。
  • 大數據這一術語指的是處理非常大量數據的問題和解決方案,與我們是要搜索數據中的模式還是簡單地存儲這些數據無關。對比大數據和數據挖掘這兩個術語,許多數據挖掘問題在數據集很大時更為有趣,所以為處理大數據所開發的解決方案遲早可用於解決數據挖掘問題。但是這兩個術語只是互為補充,不能互換使用。
  • 數據科學是最接近於KDD過程的術語,數據挖掘是它們的一個步驟。因為數據科學目前是極受歡迎的流行語,它的含義將隨著這一領域的成熟而繼續發展和變化。

我們可以查看Google Trends,瞭解上述術語在一段時期內的搜索熱度。Google Trends工具展示了一段時期內人們搜索各種關鍵詞的頻度。

在圖1-1中,新出現的術語“大數據”目前是炙手可熱的流行語,“數據挖掘”居於第二位,然後是“機器學習”“數據科學”和“預測性分析”。(我試圖加入搜索詞“數據庫中的知識發現”,但是結果太接近於0,無法看到趨勢線。)

y軸以0~100的指數顯示了特定搜索詞的流行度。此外,我們還將Google Trends給出的2014~2015年每週指數組合為月平均值。

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

▲圖1-1 5個常用數據相關術語的Google Trends搜索結果

02 如何進行數據挖掘

由於數據挖掘傳統上被視為KDD全過程中的一步,並且越來越成為數據科學過程的一部分,在本文中我們將熟悉其所涉及的步驟。進行數據挖掘有多種流行的方法。

1. Fayyad等人的KDD過程

知識發現和數據挖掘過程的早期版本之一由Usama Fayyad、Gregory Piatetsky-Shapiro和 Padhraic Smyth在1996年的一篇論文(The KDD Process for Extracting Useful Knowledge from Volumes of Data)中定義。

這篇論文在當時很重要,它將快速變化的KDD方法論精煉為具體的一組步驟。如下步驟以原始數據開始,以知識作為結束:

  • 數據選擇。這一步的輸入是原始數據,輸出是較小的數據子集,稱為目標數據
  • 數據預處理。目標數據得到清理,刪除異常值,處理缺失數據。這一步的輸出是預處理數據或清理後數據
  • 數據變換。清理後的數據組織成適合於挖掘步驟的格式,如果有必要,精簡特徵或者變量的數量。這一步的輸出是變換後數據
  • 數據挖掘。用適合於問題的一種或者多種數據挖掘算法對變換後數據進行挖掘,這一步的輸出是發現的模式
  • 數據解釋/評估。評估所發現模式解決手上問題的能力。這一步的輸出是知識

由於這一過程從原始數據得出知識,因此,這些作者對“數據庫中的知識發現”這一術語作出了真正的貢獻,而不僅僅是簡單的數據挖掘。

2. 韓家煒等人的KDD過程

韓家煒、Micheline Kamber和裴健所著的流行數據挖掘教科書《Data Mining: Concepts and Techniques》描述了知識發現過程的另一個版本,其中的步驟也是從原始數據導出知識:

  • 數據清理。這一步的輸入是原始數據,輸出是清理後的數據
  • 數據整合。在這一步中,清理後數據被整合(如果它們來自多個來源)。這一步的輸出是整合數據
  • 數據選擇。數據集被精簡為僅包含手上問題所需的數據。這一步的輸出是較小的數據集
  • 數據變換。較小的數據集被合併為一種適合於將來的數據挖掘步驟的形式,稱為變換後數據
  • 數據挖掘。變換後的數據由設計用於發現數據中模式的智能算法處理。這一步的輸出是一種或者多種模式。
  • 模式評估。評估所發現模式的興趣度和解決手上問題的能力。這一步的輸出是適用於每個模式(代表知識)的興趣度計量。
  • 知識表示。在這一步中,通過各種手段(包括可視化)將知識傳達給用戶。

在Fayyad和韓的方法中,都預計該過程在必要時需要多次重複這些步驟。例如,如果在變換步驟中,分析人員發現需要再進行一次數據清理或者預處理,這兩種方法都規定分析人員應該按原路返回,完成前面未完成步驟的第二次迭代。

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

3. CRISP-DM過程

KDD過程的第3種流行版本稱為CRISP-DM,其用於許多商業和應用領域,它的全稱是CRoss-Industry Standard Process for Data Mining(跨行業數據挖掘標準過程),包含如下步驟:

  1. 業務理解。在這一步中,分析人員花時間從業務視角理解數據挖掘項目的動機。
  2. 數據理解。在這一步中,分析人員熟悉數據及其潛在優勢和不足,並開始生成假設。分析人員的任務是在必要時重新評估第1步的業務理解。
  3. 數據準備。這一步包含其他模型作為單獨步驟列舉的選擇、整合、變換和預處理步驟。CRISP-DM模型對這些任務的執行順序沒有要求。
  4. 建模。這一步中對數據應用算法以發現模式。這一步驟最接近於其他KDD模型中的數據挖掘步驟。分析人員的任務是在建模和挖掘步驟需要的時候重新評估第3步的數據準備。
  5. 評估。評估模型和發現的模式在回答手上的業務問題中的價值。分析人員的任務是在必要時重溫第1步的業務理解。
  6. 部署。呈現發現的知識和模型,並投產以解決手上的原始問題。

這種方法的優勢之一是,迭代是內建的。在特定步驟之間,分析人員將檢查當前步驟仍然與之前的某些步驟保持一致。另一個優勢是明確地提醒分析人員,即使在評估步驟中也要將業務問題放在項目的核心位置。

4. 六步過程

當我在大學裡教授數據科學入門課程時,使用了自己創造的一種混合方法。這種方法稱為“六步過程”,這種專門設計的方法對於授課很合適。

我的六步方法消除了沒有經驗的學生在CRISP-DM中的開放式任務(如業務理解)或者基於企業任務(如部署)中可能遇到的歧義問題。

此外,六步方法要求學生在過程的開始和最後回答“為什麼這麼做”和“這有什麼意義”的問題,以拓展學生的批判性思維技能。我的六步方法如下:

  1. 問題陳述。在這一步中,學生確定他們試圖解決的問題。在理想狀況下,瞭解進行這些工作的原因可以提高他們的積極性。
  2. 數據收集和存儲。在這一步中,學生們定位數據並規劃這一問題所需數據的存儲。他們還提供一些信息,這些信息與回答他們感興趣的問題所需數據的來源、格式以及所有字段含義相關。
  3. 數據清理。在這一步中,學生們認真選擇真正需要的數據,並將數據處理成挖掘步驟所需的格式。
  4. 數據挖掘。在這一步中,學生形式化所選擇的數據挖掘方法。他們描述使用的算法以及原因。這一步的輸出是模型和發現的模式。
  5. 表示和可視化。在這一步中,學生直觀地展示工作成果。這一步的輸出可以是表格、圖示、圖形、圖表、網絡框圖、映射圖等。
  6. 問題解決。這一步對數據挖掘初學者很重要,它明確地鼓勵學生評估第5步中展示的模式是不是第1步中提出的問題的答案。學生們被要求說明模型或者結果的侷限性,確定用這種方法無法回答的部分相關問題。

5. 哪一種數據挖掘方法最好

2014年,Gregory Piatetsky-Shapiro在其非常受歡迎的數據挖掘電子郵件通訊KD-Nuggets上進行的調查包含了一個問題:“你在分析、數據挖掘或者數據庫科學項目中使用哪一種主要方法?”

  • 43%的調查對象表示他們使用CRISP-DM方法。
  • 27%的調查對象使用自己的方法或者混合方法。
  • 7%的調查對象使用傳統的KDD方法。
  • 其餘調查對象選擇另一種KDD方法。

這些結果和2007年同一郵件通訊所做的相同調查結果類似。

我的最佳建議是,不要過於重視用於數據挖掘項目的方法,隨便挑一種即可。

如果完全不使用任何方法,那麼就有遺漏重要步驟的危險。選擇看上去對你的項目和需求有效的方法,然後儘可能遵循該方法的步驟。

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

03 在數據挖掘中使用哪些技術

現在我們對數據挖掘在整個KDD或者數據科學過程中的位置有了瞭解,下面就可以開始討論完成這一任務的細節了。

從試圖定義數據挖掘的早期起,幾類相關的問題就一再出現。Fayyad等人在1996年的另一篇重要論文“From Data Mining to Knowledge Discovery in Databases”中提出了6類問題,我們將其總結如下:

  • 分類問題。這裡,有需要根據某些特徵分成預定義類別的數據。我們需要一種算法,使用過去已經分類的數據,學習如何將未知數據置於正確的類別下。
  • 聚類問題。這類問題是,我們需要根據數據點的特徵將其分為不同類別,但是事先不知道這些類別。我們需要一種能夠計量數據點之間相似性並自動根據這些相似性分割數據的算法。
  • 迴歸問題。我們的數據必須根據某個預測變量進行映射,所以必須學習進行這種映射的函數。
  • 摘要問題。假定我們的數據需要以某種方式縮短或者總結。這可能很簡單,只是從數據計算基本統計數字;也可能很複雜,需要學習如何總結文本,或者為文本找出一個主題模型。
  • 依賴性建模問題。對於這些問題,我們的數據之間可能有某種聯繫,我們需要開發一個算法,計算這種聯繫的概率,或者描述互相聯繫的數據的結構。
  • 變化和偏差檢測問題。在另一種情況下,我們的數據已經有了顯著的變化,或者數據的一些子集偏離了正常值。為了解決這些問題,我們需要一種能夠自動發現這些問題的算法。

在同年撰寫的另一篇論文中,這些作者還加入了其他幾種類別:

  • 鏈接分析問題。我們有一些相關的數據點,必須發現它們之間的關係,並以數據集的支持程度和關係置信度的方式描述它們。
  • 序列分析問題。想象我們的數據點遵循某種順序,如時間序列或者基因組,我們必須發現序列中的趨勢或者偏差,或者發現導致序列的原因,以及序列的演化方式。

韓家煒、Kamber和裴健在前面提及的教科書中描述了數據挖掘所能解決的4類問題,並進一步將其分為描述性和預測性兩大類。描述性數據挖掘意味著找出模式,幫助我們理解擁有的數據。預測性數據挖掘意味著找出模式,幫助我們預測尚未擁有的數據。

在描述性類別中,他們列出瞭如下數據挖掘問題:

  • 數據特性描述和數據區分問題,包括數據摘要或者概念特性描述(或稱描述)。
  • 頻率挖掘,包括找出數據中的頻繁模式、關聯規則和相關性。

在預測性類別中,他們列出瞭如下問題:

  • 分類,迴歸
  • 聚類
  • 離群值和異常檢測

很容易看出,Fayyad等人和韓家煒等人的問題列表有許多相似之處,只是項目的分組不同。確實,如果你過去曾經完成過數據挖掘項目,這兩個列表上出現的項目就是你可能已經熟悉的數據挖掘問題。

分類、迴歸和聚類是非常流行的基本數據挖掘技術,所以從業者們所看到的每本數據挖掘書籍幾乎都介紹過它們。

本文摘編自《Python數據挖掘:概念、方法與實踐》,經出版方授權發佈。

一文看懂數據挖掘:哪一種方法最好?都需要哪些技術?

延伸閱讀《Python數據挖掘:概念、方法與實踐》

推薦語:在本書中,你將深入許多數據挖掘中常被忽視的領域,包括關聯規則挖掘、實體匹配、網絡挖掘、情緒分析、命名實體識別、文本摘要、主題建模和異常檢測。對於每種數據挖掘技術,我們將在比較解決每種問題所用的各種策略之前,研究目前新的佳實踐。然後,將用來自軟件工程領域的實際數據,實現示例解決方案,並學習理解和解讀所得結果的方法。


分享到:


相關文章: