什麼是資料挖掘?要確定資料挖掘在不斷增強的其他相似概念中的位置,還將學習這一學科成長和變化的歷史。
我們如何進行資料挖掘?在此,我們將對比資料挖掘專案中常用的幾種過程或者方法論。
資料挖掘中使用哪些技術?在這一部分,將總結資料挖掘定義中包含的典型資料分析技術,並強調這本精通級書籍將要涵蓋的較為獨特卻未得到應有重視的技術。
作者:梅甘·斯誇爾
如需轉載請聯絡大資料(ID:hzdashuju)
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步的業務理解。
-
資料準備。這一步包含其他模型作為單獨步驟列舉的選擇、整合、變換和預處理步驟。CRISP-DM模型對這些任務的執行順序沒有要求。
-
建模。這一步中對資料應用演演算法以發現樣式。這一步驟最接近於其他KDD模型中的資料挖掘步驟。分析人員的任務是在建模和挖掘步驟需要的時候重新評估第3步的資料準備。
-
評估。評估模型和發現的樣式在回答手上的業務問題中的價值。分析人員的任務是在必要時重溫第1步的業務理解。
-
部署。呈現發現的知識和模型,並投產以解決手上的原始問題。
這種方法的優勢之一是,迭代是內建的。在特定步驟之間,分析人員將檢查當前步驟仍然與之前的某些步驟保持一致。另一個優勢是明確地提醒分析人員,即使在評估步驟中也要將業務問題放在專案的核心位置。
4. 六步過程
當我在大學裡教授資料科學入門課程時,使用了自己創造的一種混合方法。這種方法稱為“六步過程”,這種專門設計的方法對於授課很合適。
我的六步方法消除了沒有經驗的學生在CRISP-DM中的開放式任務(如業務理解)或者基於企業任務(如部署)中可能遇到的歧義問題。
此外,六步方法要求學生在過程的開始和最後回答“為什麼這麼做”和“這有什麼意義”的問題,以拓展學生的批判性思維技能。我的六步方法如下:
-
問題陳述。在這一步中,學生確定他們試圖解決的問題。在理想狀況下,瞭解進行這些工作的原因可以提高他們的積極性。
-
資料收集和儲存。在這一步中,學生們定位資料並規劃這一問題所需資料的儲存。他們還提供一些資訊,這些資訊與回答他們感興趣的問題所需資料的來源、格式以及所有欄位含義相關。
-
資料清理。在這一步中,學生們認真選擇真正需要的資料,並將資料處理成挖掘步驟所需的格式。
-
資料挖掘。在這一步中,學生形式化所選擇的資料挖掘方法。他們描述使用的演演算法以及原因。這一步的輸出是模型和發現的樣式。
-
表示和視覺化。在這一步中,學生直觀地展示工作成果。這一步的輸出可以是表格、圖示、圖形、圖表、網路框圖、對映圖等。
-
問題解決。這一步對資料挖掘初學者很重要,它明確地鼓勵學生評估第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資料挖掘:概念、方法與實踐》
點選上圖瞭解及購買
轉載請聯絡微信:DoctorData
推薦語:在本書中,你將深入許多資料挖掘中常被忽視的領域,包括關聯規則挖掘、物體匹配、網路挖掘、情緒分析、命名物體識別、文字摘要、主題建模和異常檢測。對於每種資料挖掘技術,我們將在比較解決每種問題所用的各種策略之前,研究目前新的佳實踐。然後,將用來自軟體工程領域的實際資料,實現示例解決方案,並學習理解和解讀所得結果的方法。
朋友會在“發現-看一看”看到你“在看”的內容