1.數據挖掘的基本任務
利用分類和預測、聚類分析、關聯規則、時序模式、偏差檢測、智能推薦等方法,幫助企業提取數據中蘊含的商業價值,提高企業的競爭力。
2.數據的挖掘和建模過程
- 定義挖掘目標
- 數據取樣。
抽取數據的標準:
- 相關性
- 可靠性
- 有效性
衡量取樣數據質量的標準:
- 資料完整無缺,各類指標項齊全。
- 數據準確無誤,反映的都是正常狀態下的水平
抽樣的方式:
- 隨機抽樣
- 等距抽樣
- 分類抽樣:依據某種屬性的取值來選擇數據子集。
- 分層抽樣
- 從起始順序抽樣
3.數據探索
數據探索可以從數據質量分析、數據特徵兩個角度出發。
數據質量分析:
檢測原始數據中是否存在髒數據,髒數據一般指不符合要求、以及不能直接進行相應分析的數據。
髒數據分類:
- 缺失值:
- 異常值:
- 不一致值
- 重複數據以及含有特殊符號(#、¥、*)的數據
1.異常值的分析:是檢測數據是否有錄入錯誤以及含有不合理數據
異常值又稱離羣點。
分析方法:
- 簡單統計量分析
- 正態分佈原則
- 箱型圖分析、
2.缺失值分析:數據缺失主要包括記錄缺失和記錄中的某個字段信息的缺失。
分析方法:簡單統計分析
3.一致性分析
不一致原因:在數據集合的過程中,由於來自不同的數據源,對重複存放的數據未能進行一致性更新造成的。
數據特徵分析
對數據進行質量分析之後,可以通過繪製圖表,計算某些特徵量等手段進行數據的特徵分析。
1.分佈分析:分佈分析能揭示數據的分佈特徵和分佈類型。
對於定量數據的分佈分析可以繪製頻率分佈表、繪製頻率分佈直方圖、莖葉圖進行直觀的分析
對於定性分類數據,可以用餅圖和條形圖顯示其分佈情況。
2.對比分析:指將來兩個相互聯繫的指標進行比較從數量上展示和說明研究對象規模的大小、水平的高低、速度的快慢以及各種關係是否協調。
分類:絕對數對比和相對數對比
3.統計量分析:用統計指標對定量數據進行統計描述,常從集中趨勢和離中趨勢兩個方面分析。
集中趨勢度量:均值、中位數、衆數
離中趨勢度量:極差、標準差、變異係數、四分位數間距
4.週期性分析:指探索某個變量是否隨時間的變化而呈現出某種週期性變化趨勢。
5.貢獻度分析:又稱帕累託分析(2/8定律),同樣的投入在不同的地方會產生不同的效益。
6.相關性分析
分析連續變量之間的線性相關程度額強弱,並適當的統計指標表示出來的過程又稱相關性分析。
分類:直接繪製散點圖、繪製散點圖矩陣、計算相關係數
數據的探索函數
1.Pandas的統計特徵函數
方法 | 函數功能 | 所屬庫 |
sum() | 樣本求和(按列計算) | Pandas |
mean() | 樣本算數平均數 | Pandas |
var() | 樣本方差 | Pandas |
std() | 樣本標準差 | Pandas |
corr() | 樣本的Spearman(Person)相關係數矩陣 | Pandas |
cov() | 協方差矩陣 | Pandas |
skew() | 樣本值得偏度(三階矩) | Pandas |
kurt() | 樣本值的峯度(四階矩) | Pandas |
describe() | 給出樣本的基本描述(如均值、標準差) | Pandas |
2.拓展統計特徵函數
方法 | 功能 | 庫 |
cumsum() | 依次給出前1、2....n個數的和 | Pandas |
cumprod() | 依次給出前1、2....n個數的積 | Pandas |
cummax() | 依次給出前1、2....n個數的最大值 | Pandas |
cummin() | 依次給出前1、2....n個數的最小值 | Pandas |
3.統計作圖函數
方法 | 功能 | 庫 |
plot() | 繪製線性二維圖、折線圖 | Matplotlib/Pandas |
pie() | 繪製餅形圖 | Matplotlib/Pandas |
hist() | 繪製二位條形直方圖,可顯示數據分配情況 | Matplotlib/Pandas |
boxplot | 繪製樣本數據的箱型圖 | Pandas |
plot(logy=True) | 繪製y軸的對數圖形 | Pandas |
plot(yerr=error) | 繪製誤差條形圖 | Pandas |
4.數據的預處理
當採樣的數據維度過大時,需要進行降維處理、缺失值處理等都是預處理的過程。
目的:提高數據質量,讓數據更好的適應挖掘功能工具。
預處理主要包括:數據清洗、數據集成、數據交換、數據規約。
1.數據清洗:
主要刪除原始數據集中無關數據、重複數據、平滑噪音數據、篩選掉與挖掘主題無關的數據、處理缺失值、異常值。
- 缺失值處理:刪除記錄、數據插補、不處理
常用的插補方法:均值/中位數/衆數插補、用固定值、最近臨插補 、迴歸方法、插值法(拉格朗日插值法、牛頓插值法)
- 異常值處理:刪除有異常的記錄、視爲缺失值、平均數修正、不處理
2.數據集成
就是將多個數據源合併存放在一個一致的數據存儲中的過程。
實體識別:是指從不同數據源識別現實世界的實體,統一不同數據源的矛盾。(同名異義、異名同義、單位不統一)
冗餘屬性識別:(同一屬性多次出現,同一屬性命名不一致導致重複)
3.數據變換
- 簡單的函數變換
- 規範化:將數據按照比例進行縮放,使之落入一個特定的區域,便於進行綜合分析。
- 最大-最小規範化
- 零-均值規範化
- 小數定標規範化
- 連續屬性離散化;將連續屬性變換成分類屬性。(離散化的子任務:分類數和如何將連續的屬性值映射到分類值。)常用的離散化方法:
- 等寬法
- 等頻法
- 基於聚類分析方法
- 屬性構造:利用已知屬性構造新屬性,並加入到現有的屬性集中。
- 小波變換:主要運用於信號處理、圖像處理、語音處理、模式識別等領域。
4.數據規約
數據規約產生更小但保持原數據的完整性的新數據集。在規約後的數據集上進行分析和挖掘更有效率。
意義:
- 降低無效、錯誤數據對建模的影響,提高建模的準確性。
- 少量且具代表性的數據將大幅縮減數據挖掘所需的時間。
- 降低存儲數據的成本。
屬性規約:
通過屬性合併來創建新屬性維數,或者直接刪除不相關的屬性(維)來減少數據維數,從而提高數據挖掘的效率、降低計算成本。
目的:尋找出最小的屬性子集並確保新數據子集的概率分佈儘可能的接近原來的數據集的概率分佈。
常用方法:
- 合併屬性
- 逐步向前選擇
- 逐步向後刪除
- 決策樹歸納
- 主要成分分析
數值規約:
指通過選擇替代的、較小的數據來減少數據量,包括有參數方法和無參數方法。
- 有參數方法:使用一個模型來評估數據,只需存放參數,而不需要存放實際數據。例如迴歸(線性迴歸和多元迴歸)和對數線性模型(近似離散屬性集的多維概率分佈)
- 無參數方法:需要存放實際數據。(直方圖、聚類、抽樣、參數迴歸)
Python主要數據預處理函數
函數名 | 功能 | 庫 |
interpolate | 一維、高維數據插入 | Scipy |
unique | 出去數據重複元素、得到單值元素列表 | pandas/numpy |
isnull | 判斷是否爲空 | Pandas |
notnull | 判斷是否爲非空 | Pandas |
PCA | 對指標變量矩陣進行主成分分析 | Scikit-learn |
random | 生成隨機矩陣 | Numpy |
5.挖掘建模
是數據挖掘的核心環節。主要選擇哪種算法構建模型。(分類與預測、聚類、關聯規則、時序模式、偏差檢測、智能推薦等)
1.分類與預測:
分類和預測是預測問題的兩種主要類型。分類主要是預測分類標號(離散屬性),而預測主要是建立連續值函數模型,預測給定自變量對應的應變量的值。
分類模型過程:分類算法有兩個過程,第一步是學習步,通過歸納分析訓練樣本集來建立分類模型得到的分類規則;
第二步是分類步,先用已知測試樣本集評估分類規則的準確率,如果準確率可以接受,則使用該模型對未知類標號的待測樣本集進行預測。
預測模型過程:第一步通過訓練集建立預測屬性(數值型)的函數模型。第二步是在模型通過檢驗後進行預測和控制。
常用的分類和預測的算法:
- 迴歸分析
- 決策樹
- 人工神經網絡
- 貝葉斯網絡
- 支持向量機
2.聚類分析
是在沒有給定劃分類別的情況下,根據數據相似度進行樣本的分組的一種方法。與分類模型需要使用有類標記的樣本構成的訓練數據不同,聚類模型可以建立在無類標記的數據上,是一種非監督的學習算法。聚類輸入是一組未被標記的樣本,聚類根據數據自身的距離或者相似度將其劃分爲若干組,劃分的原則是組內距離最小化而組間(外部)距離最大化。
監督學習:通過已有的一部分輸入數據與輸出數據之間的對應關係,生成一個函數,將輸入映射到合適的輸出,例如分類。
非監督學習:直接對輸入數據集進行建模,例如聚類。
半監督學習:綜合利用有類標的數據和沒有類標的數據,來生成合適的分類函數。
常用的聚類分析方法:K_Means、k-中心點、系統聚類。
3.關聯規則
找出數據集中各項之間的關聯關係。而這種關係在數據中並沒有直接表示出來。
常用的關聯算法:
Apriori、FP-Tree、Eclat算法、灰色關聯法。
4.時序模式
給定一個已被觀測了的時間序列,預測該序列的未來值。
常用的時序算法:
平滑法、趨勢擬合法、組合模型、AR模型、MA模型、ARMA模型、ARIMA模型
5.離羣點檢測
發現與大部分其他對象顯著不同的對象。
離羣點的成因:數據來源不同的類、自然變異、數據測量、收集誤差。
離羣點檢測的方法:基於統計、基於鄰近度、基於密度、基於聚類。