在介紹了數據挖掘的一般流程、常用方法、應用功能和數據可視化之后,在本篇博文中,筆者想要分享一些在數據挖掘開始之前要做的一些事——數據預處理。在第二部分中,筆者整理了數據挖掘中的十大經典算法,與讀者們共享。兩部分分別從《數據挖掘中數據預處理的方法與技術》一文與網絡中引用而來,作為自己和讀者朋友們的學習筆記。在第三部分階段小結中,筆者對近期的學習進行了階段性的總結。
現實中數據大多數都是不完整、不一致的,無法直接進行數據挖掘,或直接影響了挖掘結果。為了提高數據挖掘質量和數據挖掘效率,產生了數據預處理技術。對數據進行預處理,不但可以節約大量的空間和時間而且得到的挖掘結果能更好地起到決策和預測作用。數據預處理一般包括:數據清理,數據集成,數據變換,數據歸約等方法。這些數據預處理技術根據數據挖掘項目的需要和原始數據的特點,在數據挖掘之前有選擇的單獨使用或綜合使用,可大大提高數據挖掘模式的質量,降低實際挖掘所需要的時間。數據預處理技術整理如下:
數據清理是數據預處理中最花費時間、最乏味的,但也是最重要的一步。該步驟可以有效地減少學習過程中可能出現相互矛盾的情況。數據清理主要處理缺失數據,噪聲數據,識別、刪除孤立點。數據清理的基本方法有:
(1)缺失數據處理:目前最常用的方法是使用最可能的值填充缺失值,比如可以用回歸、貝葉斯形式化方法工具或判定樹歸納等確定缺失值。這類方法依靠現有的數據信息來推測缺失值,使缺失值有更大的機會保持與其他屬性之間的聯系。還有其他一些方法來處理缺失值,如用一個全局常量替換缺失值、使用屬性的平均值填充缺失值或將所有元組按某些屬性分類,然后用同一類中屬性的平均值填充缺失值。如果缺失值很多,這些方法可能誤導挖掘結果。如果缺失值很少,可以忽略缺失數據。
(2)噪聲數據處理:噪聲是一個測量變量中的隨機錯誤或偏差,包括錯誤的值或偏離期望的孤立點值。目前最廣泛的是應用數據平滑技術處理,具體包括:
數據集成就是將多個數據源中的數據合并存放在一個同一的數據存儲(如數據倉庫、數據庫等)的一種技術和過程,數據源可以是多個數據庫、數據立方體或一般的數據文件。數據集成涉及3個問題:
數據變換是采用線性或非線性的數學變換方法將多維數據壓縮成較少維數的數據,消除它們在時間、空間、屬性及精度等特征表現方面的差異。這方法雖然對原始數據都有一定的損害,但其結果往往具有更大的實用性。常見數據變換方法如下:
數據歸約技術可以用來得到數據集的歸約表示,它接近于保持原數據的完整性,但數據量比原數據小得多。與非歸約數據相比,在歸約的數據上進行挖掘,所需的時間和內存資源更少,挖掘將更有效,并產生相同或幾乎相同的分析結果。幾種數據歸約的方法:
(1)維歸約:通過刪除不相關的屬性(或維)減少數據量。不僅壓縮了數據集,還減少了出現在發現模式上的屬性數目。通常采用屬性子集選擇方法找出最小屬性集,使得數據類的概率分布盡可能地接近使用所有屬性的原分布。屬性子集選擇的啟發式方法技術有:
(2)數據壓縮:應用數據編碼或變換,得到原數據的歸約或壓縮表示。數據壓縮分為無損壓縮和有損壓縮。比較流行和有效的有損數據壓縮方法是小波變換和主要成分分析。小波變換對于稀疏或傾斜數據以及具有有序屬性的數據有很好的壓縮結果。主要成分分析計算花費低,可以用于有序或無序的屬性,并且可以處理稀疏或傾斜數據。
(3)數值歸約:通過選擇替代的、較小的數據表示形式來減少數據量。數值歸約技術可以是有參的,也可以是無參的。有參方法是使用一個模型來評估數據,只需存放參數,而不需要存放實際數據。
有參的數值歸約技術有以下 2 種:
無參的數值歸約技術有 3 種:
(4)概念分層:通過收集并用較高層的概念替換較低層的概念來定義數值屬性的一個離散化。概念分層可以用來歸約數據,通過這種概化盡管細節丟失了,但概化后的數據更有意義、更容易理解,并且所需的空間比原數據少。對于數值屬性,由于數據的可能取值范圍的多樣性和數據值的更新頻繁,說明概念分層是困難的。數值屬性的概念分層可以根據數據的分布分析自動地構造,如用分箱、直方圖分析、聚類分析、基于熵的離散化和自然劃分分段等技術生成數值概念分層。分類數據本身是離散數據,一個分類屬性具有有限個不同值,值之間無序。一種方法是由用戶專家在模式級顯示地說明屬性的部分序或全序,從而獲得概念的分層;另一種方法是只說明屬性集,但不說明它們的偏序,由系統根據每個屬性不同值的個數產生屬性序,自動構造有意義的概念分層。
在數據實際挖掘過程中,針對不同的數據源和數據挖掘目標,有選擇的使用數據清理、數據集成、數據變換和數據歸約等數據預處理方法和技術。它們的使用沒有先后順序的約束,某一種預處理可能需要循環多次進行,某一種預處理可能一次也不需要。盡管有多種數據預處理的方法和技術,但都不夠成熟。所以,對數據挖掘中的數據預處理還需要做更進一步的深入研究。
國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了數據挖掘領域的十大經典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.
經歷了一個星期數據挖掘的學習,筆者從一名只知數據挖掘其名而不知其為何物的本科低年級學生,成為一名初識BI和數據挖掘初學者,在學習這門學科的過程中體會到了發現和探索的樂趣。
坦白地說,一開始每天將自己的學習筆記發布博客分享給大家時,我的內心十分忐忑,一來作為一名初學者,缺少整體的知識結構,難免會出現邏輯混亂,整理不完全,甚至無法甄別網絡上數據的真偽的情況;二來五篇博客中的大部分內容都是摘抄與筆記,原創的東西甚少,我害怕讓瀏覽博客的讀者重復閱讀,耽誤大家的時間。然而,在過程中,我逐漸地發現分享學習筆記型的博客亦有其獨特的長處:整理筆記發布博客的過程既讓我反復核實自己的筆記中是否有差錯的存在(用所學的知識就是數據預處理),又獲得了一個結交志同道合伙伴的途徑。當然,在五篇的學習筆記中仍然不免存在著個人能力暫時無法企及的差錯,我希望自己盡力完善,同時也懇請讀者們不吝指教與多多包涵。
說回到BI與數據挖掘本身,BI從被提出至今只有二十年的時間,數據挖掘的歷史也并不漫長,但在大數據時代的今天,數據挖掘已經成為發展的潮流與趨勢。馬云曾說過,“這是一個變化的年代,當很多人還沒有搞懂PC互聯網的時候,移動互聯網來了,當很多人還沒弄懂移動互聯網,大數據來了?!睂W習數據挖掘,無論是成為一個從業者,還是僅僅作為了解,都將讓我們在如今的一個時代中不至于太過落后。在學習數據挖掘的過程中,逐漸了解了一些關于數據挖掘的歷史、概念、流程、技術方法和應用實例,當然,對于數據挖掘的本質,此時尚不敢妄談,大約是數據不再因果關系而更多地是相關關系,有待以后繼續學習、驗證、體悟。
學習的過程中SmartBi軟件公司的軟件給予了我巨大的幫助,無論是電子表格版還是Smart Mining都在學習過程中讓我對數據挖掘有了更直觀的體驗。軟件的操作只簡便令我享受其中。在本文中雖然介紹了數據挖掘的十大算法,但在使用Smart Mining的過程中我未曾寫過一行代碼(當然這和我現在的水平較低也有一定關系),軟件將操作代碼的封裝和拖拽圖標即可實現操作使得它變得極為簡潔和易上手,尤其數據可視化的操作,圖表的繪制之方便無疑讓我在學習的過程中體會到了巨大的樂趣,獲得了學習的動力。
總結的最后感謝撰寫數據挖掘相關電子版文章、博客和百科詞條等的作者們,有了你們我才能如此方便的學習數據挖掘的知識整理出這些筆記,感謝SMARTBI公司的徐晶副總裁和軟件開發者們,有了你們我才有這次契機去接觸、學習數據挖掘,感謝閱讀過文章的讀者們,你們的關注與鼓勵是我不斷前行的動力。