天天看點

資料挖掘與資料分析

一、資料挖掘和資料分析概述

資料挖掘和資料分析都是從資料中提取一些有價值的資訊,二者有很多聯系,但是二者的側重點和實作手法有所區分。

資料挖掘和資料分析的不同之處:

1、在應用工具上,資料挖掘一般要通過自己的程式設計來實作需要掌握程式設計語言;而資料分析更多的是借助現有的分析工具進行。

2、在行業知識方面,資料分析要求對所從事的行業有比較深的了解和了解,并且能夠将資料與自身的業務緊密結合起來;而資料挖掘不需要有太多的行業的專業知識。

3、交叉學科方面,資料分析需要結合統計學、營銷學、心理學以及金融、政治等方面進行綜合分析;資料挖掘更多的是注重技術層面的結合以及數學和計算機的集合

資料挖掘和資料分析的相似之處:

1、資料挖掘和資料分析都是對資料進行分析、處理等操作進而得到有價值的知識。

2、都需要懂統計學,懂資料處理一些常用的方法,對資料的敏感度比較好。

3、資料挖掘和資料分析的聯系越來越緊密,很多資料分析人員開始使用程式設計工具進行資料分析,如SAS、R、SPSS等。而資料挖掘人員在結果表達及分析方面也會借助資料分析的手段。二者的關系的界限變得越來越模糊。

二、資料挖掘

1 數學預備知識

機率論:支撐整個資料挖掘算法和機器學習算法的數學基礎,要熟悉常見的一些機率分布。

矩陣論:線性代數中對資料挖掘最有用的部分,還有一些線性空間相關知識也很重要。

資訊論:将資訊和數學緊密連接配接在一起并完美的表達的橋梁,需要掌握資訊熵、資訊增益等相關知識。

統計學:資料分析最早的依賴基礎,通常和機率論一起應用,現在的機器學習和資料挖掘很多都是基于統計的,常見的均值、方差、協方差等都要熟練掌握。

2 程式設計基礎

資料挖掘需要一定的程式設計基礎,因為要實作模型以及資料的處理很多工作都是需要程式來進行的,資料挖掘常用的程式設計語言如下:

SQL:資料庫的熟練使用是任何資料挖掘人員必不可少的技能。

C++ :有很多的标準模闆庫以及機器學習模型庫進行調用可以友善程式設計實作。

Python:對字元串處理有極大的優勢,是解釋型語言,實作簡單,而且有很多開源的機器學習模型庫的支援,可處理大規模資料。

Matlab:擁有強大的矩陣運算,也是解釋型語言,有很多發展較成熟庫可以直接調用,支援資料結果的可視化表示,但是處理資料量有限。

R:近年興起的資料分析程式設計語言,資料可視化做的比較好,文法簡單,學習成本很低,很多非程式設計人員都可以數量掌握。

Java:使用範圍最廣的程式設計語言,有很多社群進行交流,進行程式設計實作具有靈活高效的特點,不足之處就是實作功能的代碼量較大(相對于其他資料挖掘程式設計語言)。

Scala: 一種具有面向對象風格、函數式風格、更高層的并發模型的程式設計語言。同時Scala是大資料處理平台Spark的實作語言。

3 資料挖掘的模型知識

機器學習和資料挖掘是緊密相關的,要進行資料挖掘需要掌握一些機器學習所用的方法和模型知識,通過模型的訓練可以得到處理資料的最優的模型。資料挖掘常用的模型如下:

3.1 監督學習模型

就是人們常說的分類,通過已有的訓練樣本(即已知資料以及其對應的輸出)去訓練得到一個最優模型(這個模型屬于某個函數的集合,最優則表示在某個評價準則下是最佳的),再利用這個模型将所有的輸入映射為相應的輸出,對輸出進行簡單的判斷進而實作分類的目的,也就具有了對未知資料進行分類的能力。

3.1.1決策樹:

決策樹是用于分類和預測的主要技術之一,決策樹學習是以執行個體為基礎的歸納學習算法,它着眼于從一組無次序、無規則的執行個體中推理出以決策樹表示的分類規則。構造決策樹的目的是找出屬性和類别間的關系,用它來預測将來未知類别的記錄的類别。它采用自頂向下的遞歸方式,在決策樹的内部節點進行屬性的比較,并根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。

主要的決策樹算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它們在選擇測試屬性采用的技術、生成的決策樹的結構、剪枝的方法以及時刻,能否處理大資料集等方面都有各自的不同之處。

3.1.2 貝葉斯方法:

貝葉斯(Bayes)分類算法是一類利用機率統計知識進行分類的算法,如樸素貝葉斯(Naive Bayes)算法。這些算法主要利用Bayes定理來預測一個未知類别的樣本屬于各個類别的可能性,選擇其中可能性最大的一個類别作為該樣本的最終類别。由于貝葉斯定理的成立本身需要一個很強的條件獨立性假設前提,而此假設在實際情況中經常是不成立的,因而其分類準确性就會下降。為此就出現了許多降低獨立性假設的貝葉斯分類算法,如TAN(Tree Augmented Native Bayes)算法,它是在貝葉斯網絡結構的基礎上增加屬性對之間的關聯來實作的。

3.1.3 神經網絡

神經網絡是一種應用類似于大腦神經突觸聯接的結構進行資訊處理的數學模型。在這種模型中,大量的節點(稱”神經元”)之間互相聯接構成網絡,即”神經網絡”,以達到處理資訊的目的。神經網絡通常需要進行訓練,訓練的過程就是網絡進行學習的過程。訓練改變了網絡節點的連接配接權的值使其具有分類的功能,經過訓練的網絡就可用于對象的識别。目前,神經網絡已有上百種不同的模型,常見的有BP神經網絡、徑向基RBF網絡、Hopfield網絡、随機神經網絡(Boltzmann機)、競争神經網絡(Hamming網絡,自組織映射網絡)等。但是目前的神經網絡仍普遍存在收斂速度慢、計算量大、訓練時間長和不可解釋等缺點。

3.1.4 支援向量機(SVM)

支援向量機(SVM,Support Vector Machine)是根據統計學習理論提出的一種新的學習方法,它的最大特點是根據結構風險最小化準則,以最大化分類間隔構造最優分類超平面來提高學習機的泛化能力,較好地解決了非線性、高維數、局部極小點等問題。對于分類問題,支援向量機算法根據區域中的樣本計算該區域的決策曲面,由此确定該區域中未知樣本的類别。

3.1.5 內建學習分類模型

內建學習是一種機器學習範式,它試圖通過連續調用單個的學習算法,獲得不同的基學習器,然後根據規則組合這些學習器來解決同一個問題,可以顯著的提高學習系統的泛化能力。主要采用(權重)投票的方法組合多個基學習器,常見的算法有裝袋(Bagging)、提升/推進(Boosting)、随機森林等。內建學習由于采用了投票平均的方法組合多個分類器,是以有可能減少單個分類器的誤差,獲得對問題空間模型更加準确的表示,進而提高分類器的分類準确度。

3.1.6 其他分類學習模型

此外還有logistics回歸模型、隐馬爾科夫分類模型(HMM)、基于規則的分類模型等衆多的分類模型,對于處理不同的資料、分析不同的問題,各種模型都有自己的特性和優勢。

3.2 無監督學習模型

在非監督式學習中,資料并不被特别辨別,學習模型是為了推斷出資料的一些内在結構,應用場景包括關聯規則的學習以及聚類等。常見的聚類算法如下所示:

3.2.1 K-means聚類

K-means算法的基本思想是初始随機給定K個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,進而确定新的簇心。一直疊代,直到簇心的移動距離小于某個給定的值。

3.2.2 基于密度的聚類

根據密度完成對象的聚類。它根據對象周圍的密度(如DBSCAN)不斷增長聚類。典型的基于密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise):該算法通過不斷生長足夠高密度區域來進行聚類;它能從含有噪聲的空間資料庫中發現任意形狀的聚類。此方法将一個聚類定義為一組“密度連接配接”的點集。OPTICS(Ordering Points To Identify the Clustering Structure):并不明确産生一個聚類,而是為自動互動的聚類分析計算出一個增強聚類順序。

3.2.3 層次聚類方法

層次聚類方法對給定的資料集進行層次的分解,直到某種條件滿足為止。層次凝聚的代表是AGNES算法,層次分裂的代表是DIANA算法。具體又可分為凝聚的,分裂的兩種方案。

凝聚的層次聚類是一種自底向上的政策,首先将每個對象作為一個簇,然後合并這些原子簇為越來越大的簇,直到所有的對象都在一個簇中,或者某個終結條件被滿足,絕大多數層次聚類方法屬于這一類,它們隻是在簇間相似度的定義上有所不同。

分裂的層次聚類與凝聚的層次聚類相反,采用自頂向下的政策,它首先将所有對象置于同一個簇中,然後逐漸細分為越來越小的簇,直到每個對象自成一簇,或者達到了某個終止條件。

3.2.4 譜聚類

譜聚類(Spectral Clustering, SC)是一種基于圖論的聚類方法——将帶權無向圖劃分為兩個或兩個以上的最優子圖,使子圖内部盡量相似,而子圖間距離盡量距離較遠,以達到常見的聚類的目的。其中的最優是指最優目标函數不同,可以是割邊最小分割, 也可以是分割規模差不多且割邊最小的分割。譜聚類能夠識别任意形狀的樣本空間且收斂于全局最優解,其基本思想是利用樣本資料的相似矩陣(拉普拉斯矩陣)進行特征分解後得到的特征向量進行聚類。

此外常用的聚類方法還有基于網格的聚類、模糊聚類算法、自組織神經網絡SOM、基于統計學的聚類算法(COBWeb、AutoClass)等。

3.3 半監督學習

3.3.1 半監督學習概述

半監督學習算法要求輸入資料部分被辨別,部分沒有被辨別,這種學習模型可以用來進行預測,但是模型首先需要學習資料的内在結構以便合理的組織資料來進行預測。應用場景包括分類和回歸,算法包括一些對常用監督式學習算法的延伸,這些算法首先試圖對未辨別資料進行模組化,在此基礎上再對辨別的資料進行預測。如圖論推理算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.)等。

3.3.2 Multi-view algorithm(多視角算法)

一般多用于可以進行自然特征分裂的資料集中.考慮特殊情況(每個資料點表征兩個特征):每一個資料點看成是兩個特征的集合,然後利用協同訓練(Co-training algorithm)進行處理.協同訓練(co-training)算法,此類算法隐含地利用了聚類假設或流形假設,它們使用兩個或多個學習器,在學習過程中,這些學習器挑選若幹個置信度高的未标記示例進行互相标記,進而使得模型得以更新。

3.3.3 Graph-Based Algorithms(基于圖的算法)

基于圖的算法是基于圖正則化架構的半監督學習算法,此類算法直接或間接地利用了流形假設,它們通常先根據訓練例及某種相似度度量建立一個圖,圖中結點對應了(有标記或未标記)示例,邊為示例間的相似度,然後,定義所需優化的目标函數并使用決策函數在圖上的光滑性作為正則化項來求取最優模型參數。

**3.4 文本處理模型

3.4.1 分詞模型**

分詞模型主要在處理文本過程中使用,在此特指中文分詞模型。中文分詞算法現在一般分為三類:基于字元串比對,基于了解,基于統計的分詞。

基于字元串比對分詞:

機械分詞算法。将待分的字元串與一個充分大的機器詞典中的詞條進行比對。分為正向比對和逆向比對;最大長度比對和最小長度比對;單純分詞和分詞與标注過程相結合的一體化方法。是以常用的有:正向最大比對,逆向最大比對,最少切分法。實際應用中,将機械分詞作為初分手段,利用語言資訊提高切分準确率。優先識别具有明顯特征的詞,以這些詞為斷點,将原字元串分為較小字元串再機械比對,以減少比對錯誤率;或将分詞與詞類标注結合。

基于了解分詞:

分詞同時進行句法語義分析等模拟人對句子的了解,包括分詞子系統,句法語義系統,總控部分。總控部分協調下,分詞字系統可以獲得有關詞,句子等的句法和語義資訊對分詞歧義進行判斷。需要大量的語言知識資訊。

基于統計分詞:

相鄰的字同時出現的次數越多,越有可能構成一個詞語,對語料中的字組頻度進行統計,不需要切詞字典,但錯誤率很高。可以考慮:使用基本詞典進行關鍵詞分詞,使用統計方法識别新詞組,兩者結合。

3.4.2 TF-IDF模型

TF-IDF(term frequency–inverse document frequency)是一種用于資訊檢索與資訊探勘的常用權重技術。TF-IDF是一種統計方法,用以評估一字詞對于一個檔案集或一個語料庫中的其中一份檔案的重要程度。字詞的重要性随着它在檔案中出現的次數成正比增加,但同時會随着它在語料庫中出現的頻率成反比下降。TF-IDF權重的各種形式常被搜尋引擎應用,作為檔案與使用者查詢之間相關程度的度量或評級。除了TF-IDF以外,網際網路上的搜尋引擎還會使用基于連結分析的評級方法,以确定檔案在搜尋結果中出現的順序。

TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類别區分能力,适合用來分類。TFIDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF反文檔頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現的頻率(另一說:TF詞頻(Term Frequency)指的是某一個給定的詞語在該檔案中出現的次數)。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類别區分能力。如果某一類文檔C中包含詞條t的文檔數為m,而其它類包含t的文檔總數為k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類别區分能力不強。(另一說:IDF反文檔頻率(Inverse Document Frequency)是指果包含詞條的文檔越少,IDF越大,則說明詞條具有很好的類别區分能力。)但是實際上,如果一個詞條在一個類的文檔中頻繁出現,則說明該詞條能夠很好代表這個類的文本的特征,這樣的詞條應該給它們賦予較高的權重,并選來作為該類文本的特征詞以差別與其它類文檔。這就是IDF的不足之處.

3.4.3 LDA模型

LDA(Latent Dirichlet Allocation)是一種文檔主題生成模型,也稱為一個三層貝葉斯機率模型,包含詞、主題和文檔三層結構。所謂生成模型,就是說,我們認為一篇文章的每個詞都是通過“以一定機率選擇了某個主題,并從這個主題中以一定機率選擇某個詞語”這樣一個過程得到。文檔到主題服從多項式分布,主題到詞服從多項式分布。

LDA是一種非監督機器學習技術,可以用來識别大規模文檔集(document collection)或語料庫(corpus)中潛藏的主題資訊。它采用了詞袋(bag of words)的方法,這種方法将每一篇文檔視為一個詞頻向量,進而将文本資訊轉化為了易于模組化的數字資訊。但是詞袋方法沒有考慮詞與詞之間的順序,這簡化了問題的複雜性,同時也為模型的改進提供了契機。每一篇文檔代表了一些主題所構成的一個機率分布,而每一個主題又代表了很多單詞所構成的一個機率分布。

4 模型評價名額

4.1 模型評價概述

模組化建構過程中會得出一系列的分析結果、模式或模型。同一個采樣資料可以利用多種資料分析方法和模型進行分析,模型評價的目的之一就是從這些模型中自動找出一個最好的模型出來,另外就是要針對業務對模型進行解釋和應用。

模型效果評價通常分兩步,第一步是直接使用原來建立模型的樣本資料來進行檢驗。假如這一步都通不過,那麼所建立的決策支援資訊價值就不太大了。一般來說,在這一步應得到較好的評價。這說明你确實從這批資料樣本中挖掘出了符合實際的規律性。第一步通過後,第二步是另外找一批資料,已知這些資料是反映客觀實際的、規律性的。這次的檢驗效果可能會比前一種差,差多少是要注意的,若是差到所不能容忍程度,那就要考慮第一步建構的樣本資料是否具有充分的代表性,或是模型本身是否夠完善。這時候可能要對前面的工作進行反思了。若這一步也得到了肯定的結果時,那所建立的資料挖掘模型應得到很好的評價了。

4.2 常用的模型評價方法

4.2.1 預測準确率

預測準确率又稱作精度是檢索出相關文檔數與檢索出的文檔總數的比率,衡量的是檢索系統的查準率。取值在0和1之間,數值越接近1,查準率就越高。

計算公式:正确率 = 提取出的正确資訊條數 / 提取出的資訊條數

4.2.2 召回率

召回率是指檢索出的相關文檔數和文檔庫中所有的相關文檔數的比率,衡量的是檢索系統的查全率。取值在0和1之間,數值越接近1,查全率就越高。

計算公式:召回率 = 提取出的正确資訊條數 / 樣本中的資訊條數

4.2.3 綜合名額F值

F值為正确率和召回率的調和平均值,能夠綜合平衡的去表示模型的性能效果。

計算公式:F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)

4.2.4 ROC曲線

受試者工作特性(Receiver Operating Characteristic,ROC)曲線是一種非常有效的模型評價方法,可為標明臨界值給出定量提示。将靈敏度(Sensitivity)設在縱軸,1-特異性(1-Specificity)設在橫軸,就可得出ROC曲線圖。該曲線下的積分面積(Area)大小與每種方法優劣密切相關,反映分類器正确分類的統計機率,其值越接近1說明該算法效果越好。

4.2.5 資料相似度

聚類分群效果可以通過向量資料之間的相似度來衡量,向量資料之間的相似度定義為兩個向量之間的距離(實時向量資料與聚類中心向量資料),距離越近則相似度越大,即該實時向量資料歸為某個聚類。常用的相似度計算方法有:歐幾裡得距離法(Euclidean Distance)、皮爾遜相關系數法(Pearson Correlation Coefficient)、Cosine相似度和Tanimoto系數法。

4.2.6 其他的模型評價方法

除上述的模型評價方法外,還有一些較為詳細的模型評價方法。如可以用相對絕對誤差、平均絕對誤差、根均方差、相對平方根誤差等名額來衡量。此外模型的魯棒性和容錯性以及處理資料的速度、能夠處理資料的規模等都是衡量一個模型的重要名額。

5 資料挖掘開發平台

5.1 單機模型開發平台

直接在單機上部署資料挖掘開發環境,比如說安裝mysql+python就可以搭建一個資料挖掘環境。

5.2分布式叢集開發平台

5.2.1 Hadoop叢集環境

Hadoop 是一個通過分布式叢集技術,将多個實體機或虛拟機(VMware等廠商的虛拟化技術在一個實體機上運作多個虛拟機)當作一台機器運作。基于Hadoop的資料挖掘資料挖掘一旦完成,就會生成挖掘結果即模式。

5.4.2 Spark叢集環境

Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是Job中間輸出結果可以儲存在記憶體中,進而不再需要讀寫HDFS,是以Spark能更好地适用于資料挖掘與機器學習等需要疊代的map reduce的算法。

6 資料挖掘的開發流程

6.1 資料擷取

6.2 資料清洗

6.3 資料變換

6.4 特征工程

6.5 模型訓練

6.6 模型優化

6.7 結果分析

三、資料分析

相比于資料挖掘,資料分析更多在于利用一定的工具和一定的專業知識分析資料。最初的資料分析來源于統計學家和經濟學家的一些理論,進而結合一定的實際應用場景解決問題。資料分析更多的是偏重于業務層次的,對于大多數非計算機相關專業人士來說,掌握一般的資料分析方法是十分有用的,入門上手也相對簡單。

1 數學和專業的預備知識

機率論:資料分析的重要數學基礎,要熟悉常見的一些機率分布。

統計學:資料分析最早的依賴基礎,通常和機率論一起應用,資料分析要掌握常見的均值、方差、協方差等。

心理學:資料分析往往要結合不同的學科知識進行分析,在資料分析的過程中,分析人員往往要結合使用者的心理進行結果的調整和分析。

專業知識:一般來說,資料分析人員是對某一特定領域進行分析,這就要求分析人員具備一定的行業的專業知識。

2 使用資料分析軟體

SPSS:功能非常強大非常專業的資料統計軟體,界面友好,輸出結果美觀漂亮。SPSS軟體具有資訊的采集、處理、分析進行全面評估和預測等功能。包含廣義線性混合模型、自動線性模型、一個統計網頁入口portal和直複營銷direct marketing功能。

SAS: 是一個子產品化、內建化的大型應用軟體系統,由數十個專用子產品構成,功能包括資料通路、資料儲存及管理、應用開發、圖形處理、資料分析、報告編制、運籌學方法、計量經濟學與預測等等。

Excel:辦公套件中最能勝任資料分析的軟體,簡單實用。

Sql:非計算機專業的資料分析人員要操作資料必備的資料庫語言。

R: 近年興起的資料分析程式設計語言,資料可視化做的比較好,文法簡單,學習成本很低,很多非程式設計人員都可以數量掌握。

3 資料分析模型選取

資料分析人員可以借助一些現場的分析軟體進行分析,這些軟體內建了一些良好的分析模型,分析人員可以根據自己的實際應用場景進行合适的模型選擇。基本的分析方法有:對比分析法、分組分析法、交叉分析法、結構分析法、漏鬥圖分析法、綜合評價分析法、因素分析法、矩陣關聯分析法等。進階的分析方法有:相關分析法、回歸分析法、聚類分析法、判别分析法、主成分分析法、因子分析法、對應分析法、時間序列等。

4 分析結果展示

資料分析的結果通過一些可視化圖形或者報表形式進行展示能夠增強對分析結果的了解。常用的的分析結果展示方法有:

圖表展示:用一些柱狀圖、餅圖、盒圖等進行展示。

曲線展示:運用走勢曲線或者ROC曲線進行展示。

文字展示:通過語言文字描述進行結果的分析展示,但是不夠直覺。

5 資料分析的流程

5.1 資料擷取

5.2 資料清洗

5.3 分析工具選取

5.4 資料分析模型選擇

5.5 資料處理

5.6 處理結果展示

5.7 結果資料分析

繼續閱讀