系统架构设计笔记(13)—— 数据挖掘
隨著數據庫技術的迅速發展及數據庫管理系統的廣泛應用,人們積累的數據越來越多。激增的數據背后隱藏著許多重要的信息,人們希望能夠對其進行更高層次的分析,以便更好地利用這些數據。目前的數據庫系統可以高效地實現數據的錄入 、 查詢 、 統計等功能,但無法發現數據中存在的關系和規則,無法根據現有的數據預測未來的發展趨勢。缺乏挖掘數據背后隱藏的知識的手段,導致了 “ 數據爆炸但知識貧乏 ” 的現象。
1 數據挖掘的概念
數據挖掘( DataMining )技術是人們長期對數據庫技術進行研究和開發的結果。起初各種商業數據是存儲在計算機的數據庫中的,然后發展到可對數據庫進行查詢和訪問,進而發展到對數據庫的即時遍歷。數據挖掘使數據庫技術進入了一個更高級的階段,它不僅能對過去的數據進行查詢和遍歷,并且能夠找出過去數據之間的潛在聯系,從而促進信息的傳遞。現在數據挖掘技術在商業應用中已經可以馬上投入使用,因為對這種技術進行支持的三種基礎技術已經發展成熟,它們是海量數據搜集 、 強大的多處理器計算機和數據挖掘算法。
從技術角度來看,數據挖掘就是從大量的 、 不完全的 、 有噪聲的 、 模糊的 、 隨機的實際應用數據中,提取隱含在其中的 、 人們事先不知道的 、 但又是潛在有用的信息和知識的過程。這個定義包括好幾層含義:數據源必須是真實的 、 大量的 、 含噪聲的;發現的是用戶感興趣的知識;發現的知識要可接受 、 可理解 、 可運用;并不要求發現放之四海而皆準的知識,僅支持特定的發現問題。
還有很多和這一術語相近的術語,如從數據庫中發現知識 、 數據分析 、 數據融合( DataFusion ),以及決策支持等。
何為知識?從廣義上理解,數據 、 信息也是知識的表現形式,但是人們更把概念 、 規則 、 模式 、 規律和約束等看做知識。原始數據可以是結構化的,如關系數據庫中的數據;也可以是半結構化的,如文本 、 圖形和圖像數據;甚至是分布在網絡上的異構型數據。發現知識的方法可以是數學的,也可以是非數學的;可以是演繹的,也可以是歸納的。發現的知識可以被用于信息管理,查詢優化,決策支持和過程控制等,還可以用于數據自身的維護。因此,數據挖掘是一門交叉學科,它把人們對數據的應用從低層次的簡單查詢,提升到從數據中挖掘知識,提供決策支持。在這種需求牽引下,匯聚了不同領域的研究者,尤其是數據庫技術 、 人工智能技術 、 數理統計 、 可視化技術 、 并行計算等方面的學者和工程技術人員,投身到數據挖掘這一新興的研究領域,形成新的技術熱點。
從商業角度來看,數據挖掘是一種新的商業信息處理技術,其主要特點是對商業數據庫中的大量業務數據進行抽取 、 轉換 、 分析和其他模型化處理,從中提取輔助商業決策的關鍵性數據。
簡而言之,數據挖掘其實是一種深層次的數據分析方法。數據分析本身已經有很多年的歷史,只不過在過去數據收集和分析的目的是用于科學研究,另外,由于當時計算能力的限制,對大量數據進行分析的復雜數據分析方法受到很大限制。現在,由于各行業業務自動化的實現,商業領域產生了大量的業務數據,這些數據不再是為了分析的目的而收集,而是由于純機會的商業運作而產生。分析這些數據也不再是單純為了研究的需要,更主要是為商業決策提供真正有價值的信息,進而獲得利潤。但所有企業面臨的一個共同問題是:企業數據量非常大,而其中真正有價值的信息卻很少,因此從大量的數據中通過深層分析,獲得有利于商業運作 、 提高競爭力的信息,就像從礦石中淘金一樣,數據挖掘也因此而得名。
因此,數據挖掘可以描述為:按企業既定業務目標,對大量的企業數據進行探索和分析,揭示隱藏的 、 未知的或驗證已知的規律性,并進一步將其模型化的先進有效的方法。
數據挖掘與傳統的數據分析(如查詢 、 報表 、 聯機應用分析)的本質區別是數據挖掘是在沒有明確假設的前提下去挖掘信息 、 發現知識。數據挖掘所得到的信息應具有先知,有效和可實用三個特征。
先前未知的信息是指該信息是預先未曾預料到的,即數據挖掘是要發現那些不能靠直覺發現的信息或知識,甚至是違背直覺的信息或知識,挖掘出的信息越是出乎意料,就可能越有價值。在商業應用中最典型的例子就是一家連鎖店通過數據挖掘發現了小孩紙尿布和啤酒之間有著驚人的聯系。
特別要指出的是,數據挖掘技術從一開始就是面向應用的。它不僅是面向特定數據庫的簡單檢索查詢調用,而且要對這些數據進行微觀 、 中觀乃至宏觀的統計 、 分析 、 綜合和推理,以指導實際問題的求解,企圖發現事件間的相互關聯,甚至利用已有的數據對未來的活動進行預測。例如,加拿大 BC 省電話公司要求加拿大 SimonFraser 大學知識發現研究組,根據其擁有十多年的客戶數據,總結 、 分析并提出新的電話收費和管理辦法,制定既有利于公司又有利于客戶的優惠政策。這樣一來,就把人們對數據的應用,從低層次的末端查詢操作,提高到為各級經營決策者提供決策支持。這種需求驅動力比數據庫查詢更為強大。
2 數據挖掘的功能
數據挖掘通過預測未來趨勢及行為,做出前攝的 、 基于知識的決策。數據挖掘的目標是從數據庫中發現隱含的 、 有意義的知識,主要有以下五類功能。
前攝行為(Proactive Behavior),就是遭遇困境時,反過來控制局面,而不被局面所牽制。 前攝的思想與行為行動(前一活動中的因素對后一活動造成影響的);具有前瞻性的,采取先行一步的;積極主動的行為使得局面立刻被控制。
(1)自動預測趨勢和行為數據挖掘
自動在大型數據庫中尋找預測性信息,以往需要進行大量手工分析的問題如今可以迅速直接由數據本身得出結論。一個典型的例子是市場預測問題,數據挖掘使用過去有關促銷的數據來尋找未來投資中回報最大的用戶,其他可預測的問題包括預報破產及認定對指定事件最可能做出反應的群體。
(2)關聯分析
數據關聯是數據庫中存在的一類重要的可被發現的知識。若兩個或多個變量的取值之間存在某種規律性,就稱為關聯。關聯可分為簡單關聯 、 時序關聯 、 因果關聯。關聯分析的目的是找出數據庫中隱藏的關聯網。有時并不知道數據庫中數據的關聯函數,即使知道也是不確定的,因此關聯分析生成的規則帶有可信度。
(3)聚類
聚類數據庫中的記錄可被劃分為一系列有意義的子集,即聚類。聚類增強了人們對客觀現實的認識,是概念描述和偏差分析的先決條件。聚類技術主要包括傳統的模式識別方法和數學分類學 。20 世紀 80 年代初, Mchalski 提出了概念聚類技術及其要點,即在劃分對象時不僅要考慮對象之間的距離,還要求劃分出的類具有某種內涵描述,從而避免了傳統技術的某些片面性。
(4)概念描述
概念描述就是對某類對象的內涵進行描述,并概括這類對象的有關特征。概念描述分為特征性描述和區別性描述,前者描述某類對象的共同特征,后者描述不同類對象之間的區別。生成一個類的特征性描述只涉及該類對象中所有對象的共性。生成區別性描述的方法很多,如決策樹方法 、 遺傳算法等。
(5)偏差檢測
檢測數據庫中的數據常有一些異常記錄,從數據庫中檢測這些偏差很有意義。偏差包括很多潛在的知識,如分類中的反常實例 、 不滿足規則的特例 、 觀測結果與模型預測值的偏差 、 量值隨時間的變化等。偏差檢測的基本方法是,尋找觀測結果與參照值之間有意義的差別。
3 數據挖掘常用技術
常見和應用最廣泛的數據挖掘方法有 :
除了上述的常用方法外,還有粗集方法 、 模糊集合方法 、 最鄰近算法等。無論采用哪種方法完成數據挖掘,從功能上可以將數據挖掘的分析方法劃分為6種,即關聯分析 、 序列分析 、 分類 、 預測 、 聚類分析及時間序列分析等。
(1)關聯分析
關聯分析主要用于發現不同事件之間的關聯性,即一個事件發生的同時,另一個事件也經常發生。關聯分析的重點在于快速發現那些有實用價值的關聯發生的事件。其主要依據是事件發生的概率和條件概率應該符合一定的統計意義。
對于結構化的數據,以客戶的購買習慣數據為例,利用關聯分析,可以發現客戶的關聯購買需要。例如,一個開設儲蓄賬戶的客戶很可能同時進行債券交易和股票交易,購買紙尿褲的男顧客經常同時購買啤酒等。利用這種知識可以采取積極的營銷策略,擴展客戶購買的產品范圍,吸引更多的客戶。通過調整商品的布局便于顧客買到經常同時購買的商品,或者通過降低一種商品的價格來促進另一種商品的銷售等。
對于非結構化的數據,以空間數據為例,利用關聯分析,可以發現地理位置的關聯性。例如, 85% 的靠近高速公路的大城鎮與水相鄰,或者發現通常與高爾夫球場相鄰的對象等。
(2)序列分析
序列分析技術主要用于發現一定時間間隔內接連發生的事件。這些事件構成一個序列,發現的序列應該具有普遍意義,其依據除了統計上的概率之外,還要加上時間的約束。
(3)分類分析
分類分析通過分析具有類別的樣本的特點,得到決定樣本屬于各種類別的規則或方法。利用這些規則和方法對未知類別的樣本分類時應該具有一定的準確度。其主要方法有基于統計學的貝葉斯方法 、 神經網絡方法 、 決策樹方法及支持向量機( supportvectormachines )等。
利用分類技術,可以根據顧客的消費水平和基本特征對顧客進行分類,找出對商家有較大利益貢獻的重要客戶的特征,通過對其進行個性化服務,提高他們的忠誠度。
利用分類技術,可以將大量的半結構化的文本數據,如 WEB 頁面 、 電子郵件等進行分類。可以將圖片進行分類,例如,根據已有圖片的特點和類別,可以判定一幅圖片屬于何種類型的規則。對于空間數據,也可以進行分類分析,例如,可以根據房屋的地理位置決定房屋的檔次。
(4)聚類分析
聚類分析是根據物以類聚的原理,將本身沒有類別的樣本聚集成不同的組,并且對每一個這樣的組進行描述的過程。其主要依據是聚到同一個組中的樣本應該彼此相似,而屬于不同組的樣本應該足夠不相似。
仍以客戶關系管理為例,利用聚類技術,根據客戶的個人特征及消費數據,可以將客戶群體進行細分。例如,可以得到這樣的一個消費群體:女性占 91% ,全部無子女 、 年齡在 31 歲到 40 歲占 70% ,高消費級別的占 64% ,買過針織品的占 91% ,買過廚房用品的占 89% ,買過園藝用品的占 79%。 針對不同的客戶群,可以實施不同的營銷和服務方式,從而提高客戶的滿意度。
對于空間數據,根據地理位置及障礙物的存在情況可以自動進行區域劃分。例如,根據分布在不同地理位置的 ATM 機的情況將居民進行區域劃分,根據這一信息,可以有效地進行 ATM 機的設置規劃,避免浪費,同時也避免失掉每一個商機。
對于文本數據,利用聚類技術可以根據文檔的內容自動劃分類別,從而便于文本的檢索。
(5)預測
預測與分類類似,但預測是根據樣本的已知特征估算某個連續類型的變量的取值的過程,而分類則只是用于判別樣本所屬的離散類別而已。預測常用的技術是回歸分析。
(6)時間序列
分析時間序列分析的是隨時間而變化的事件序列,目的是預測未來發展趨勢,或者尋找相似發展模式或者是發現周期性發展規律。
4 數據挖掘的流程
數據挖掘是指一個完整的過程,該過程從大型數據庫中挖掘先前未知的,有效的,可實用的信息,并使用這些信息做出決策或豐富知識。
數據挖掘環境示意圖如圖 1 所示。
(1)問題定義
問題定義在開始數據挖掘之前,最先的也是最重要的要求就是熟悉背景知識,弄清用戶的需求。缺少了背景知識,就不能明確定義要解決的問題,就不能為挖掘準備優質的數據,也很難正確地解釋得到的結果。要想充分發揮數據挖掘的價值,必須對目標有一個清晰明確的定義,即決定到底想干什么。
(2)建立數據挖掘庫
要進行數據挖掘必須收集要挖掘的數據資源。一般建議把要挖掘的數據都收集到一個數據庫中,而不是采用原有的數據庫或數據倉庫。這是因為大部分情況下需要修改要挖掘的數據,而且還會遇到采用外部數據的情況;另外,數據挖掘還要對數據進行各種紛繁復雜的統計分析,而數據倉庫可能不支持這些數據結構。
(3)分析數據
分析數據就是通常所進行的對數據深入調查的過程。從數據集中找出規律和趨勢,用聚類分析區分類別,最終要達到的目的就是搞清楚多因素相互影響的 、 十分復雜的關系,發現因素之間的相關性。
(4)調整數據
通過上述步驟的操作,對數據的狀態和趨勢有了進一步的了解,這時要盡可能對問題解決的要求能進一步明確化 、 進一步量化。針對問題的需求對數據進行增刪,按照對整個數據挖掘過程的新認識組合或生成一個新的變量,以體現對狀態的有效描述。
(5)模型化
在問題進一步明確,數據結構和內容進一步調整的基礎上,就可以建立形成知識的模型。這一步是數據挖掘的核心環節,一般運用神經網絡 、 決策樹 、 數理統計 、 時間序列分析等方法來建立模型。
(6)評價和解釋
上面得到的模式模型,有可能是沒有實際意義或沒有實用價值的,也有可能是其不能準確反映數據的真實意義,甚至在某些情況下是與事實相反的,因此需要評估,確定哪些是有效的 、 有用的模式。評估的一種辦法是直接使用原先建立的挖掘數據庫中的數據來進行檢驗,另一種辦法是另找一批數據并對其進行檢驗,再一種辦法是在實際運行的環境中取出新鮮數據進行檢驗。
數據挖掘過程的分步實現,不同的步驟需要不同專長的人員,他們大體可以分為三類。
總結
以上是生活随笔為你收集整理的系统架构设计笔记(13)—— 数据挖掘的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 批处理学习
- 下一篇: L2-离散变量分布:Bernoulli分
