數據挖掘與數據分析梳理
6 人贊了文章
數據挖掘與數據分析梳理
一、數據挖掘和數據分析概述
數據挖掘和數據分析都是從數據中提取一些有價值的信息,二者有很多聯繫,但是二者的側重點和實現手法有所區分。
數據挖掘和數據分析的不同之處:
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 分析結果展示
數據分析的結果通過一些可視化圖形或者報表形式進行展示能夠增強對分析結果的理解。
常用的的分析結果展示方法有:cda數據分析師培訓
圖表展示:用一些柱狀圖、餅圖、盒圖等進行展示。
曲線展示:運用走勢曲線或者ROC曲線進行展示。
文字展示:通過語言文字描述進行結果的分析展示,但是不夠直觀。
5 數據分析的流程
5.1 數據獲取
5.2 數據清洗
5.3 分析工具選取
5.4 數據分析模型選擇
5.5 數據處理
5.6 處理結果展示
5.7 結果數據分析
推薦閱讀:
※4. 怎樣才算是一個合格的數據分析師
※一個簡單實例帶你輕鬆入門EXCEL數據分析
※離職率數據分析
※數據分析師分哪些方向
※成為一名數據分析師,應該掌握怎樣的技術棧?