數(shù)據(jù)規(guī)約
在大數(shù)據(jù)集上進行復(fù)雜的數(shù)據(jù)分析和挖掘需要很長時間,數(shù)據(jù)規(guī)約產(chǎn)生更小但保持原數(shù)據(jù)完整性的新數(shù)據(jù)集。在規(guī)約后的數(shù)據(jù)集上進行分析和挖掘?qū)⒏行省?br> 數(shù)據(jù)規(guī)約的意義在于:
- 降低無效、錯誤數(shù)據(jù)對建模的影響,提高建模的準確性;
- 少量且具代表性的數(shù)據(jù)將大幅縮減數(shù)據(jù)挖掘所需的時間;
- 降低存儲數(shù)據(jù)的成本。
屬性規(guī)約
屬性規(guī)約通過屬性合并來創(chuàng)建新屬性維數(shù),或者直接通過刪除不相關(guān)的屬性(維)來減少數(shù)據(jù)維數(shù),從而提高數(shù)據(jù)挖掘的效率、降低計算成本。屬性規(guī)約的目標是尋找出最小的屬性子集并確保新數(shù)據(jù)子集的概率分布盡可能地接近原來數(shù)據(jù)集的概率分布。屬性規(guī)約常用的方法如下:

逐步向前選擇、逐步向后刪除和決策樹歸納是屬于直接刪除不相關(guān)屬性(維)方法。主成分分析是一種用于連續(xù)屬性的數(shù)據(jù)降維方法,它構(gòu)造了原始數(shù)據(jù)的一個正交變換,新空間的基底去除了原始空間基底下數(shù)據(jù)的相關(guān)性,只需使用少數(shù)新變量就能夠解釋原始數(shù)據(jù)中的大部分變異。在應(yīng)用中,通常是選出比原始變量個數(shù)少,能解釋大部分數(shù)據(jù)中的變量的幾個新變量,即所謂主成分,來代替原始變量進行建模。
主成分分析的計算步驟如下。
1)設(shè)原始變量X1,X2,...,Xp的n次觀測數(shù)據(jù)矩陣為:

2)將數(shù)據(jù)矩陣按列進行中心標準化。為了方便,將標準化后的數(shù)據(jù)矩陣仍然記為X。
3)求相關(guān)系數(shù)矩陣R,R=(rij)p×p,rij的定義為:

其中,rij=rji,rii=1。
4)求R的特征方程det(R-λE)=0的特征根λ1≥λ2≥λp>0。
5)確定主成分個數(shù)m:

α根據(jù)實際問題確定,一般取80%。
6)計算m個相應(yīng)的單位特征向量:

7)計算主成分:

在Python中,主成分分析的函數(shù)位于Scikit-Learn下:
sklearn.decomposition.PCA(n_components = None, copy = True, whiten = False)
參數(shù)說明:
(1)n_components
意義:PCA算法中所要保留的主成分個數(shù)n,也即保留下來的特征個數(shù)n。
類型:int或者string,缺省時默認為None,所有成分被保留。賦值為int,比如n_components=1,將把原始數(shù)據(jù)降到一個維度。賦值為string,比如n_components='mle',將自動選取特征個數(shù)n,使得滿足所要求的的方差百分比。
(2)copy
類型:bool,True或者False,缺省時默認為True。
意義:表示是否在運行算法時,將原始訓(xùn)練數(shù)據(jù)復(fù)制一份。若為True,則運行PCA算法,原始訓(xùn)練數(shù)據(jù)的值不會有任何改變,因為是在原始數(shù)據(jù)的副本上進行運算;若為False,則運算PCA算法后,原始訓(xùn)練數(shù)據(jù)的值會改,因為是在原始數(shù)據(jù)上進行降維計算。
(3)whiten
類型:bool,缺省時默認為False。
意義:白化,使得每個特征具有相同的方差。
使用主成分分析降維的程序如下所示:
import pandas as pd
# 參數(shù)初始化
inputfile = 'data/principal_component.xls'
outputfile = 'tmp/dimention_reducted.xls' # 降維后的數(shù)據(jù)
data = pd.read_excel(inputfile, header = None) # 讀入數(shù)據(jù)
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
pca.components_ # 返回模型的各個特征向量
pca.explained_variance_ratio_ # 返回各個成分各自的方差百分比
運行代碼,得到如下結(jié)果:


從上面的結(jié)果可以得到特征方程det(R-λE)=0有7個特征根、對應(yīng)的7個單位向量以及各個成分各自的方差百分比(也稱為貢獻率)。其中,方差百分比越大,說明向量的權(quán)重越大。
當選取前4個主成分時,累計貢獻率已達到97.37%,說明選取前3個主成分進行計算已經(jīng)相當不錯了,因此可以重新建立PCA模型,設(shè)置n_components=3,計算出成分結(jié)果。
pca = PCA(3)
pca.fit(data)
low_d = pca.transform(data) # 用它來降低維度
pd.DataFrame(low_d).to_excel(outputfile) # 保存結(jié)果
pca.inverse_transform(low_d) # 必要時可以用inverse_transform()函數(shù)來復(fù)原數(shù)據(jù)
降維結(jié)果如下:

原始數(shù)據(jù)從8維被降維到了3維,同時這3維數(shù)據(jù)占了原始數(shù)據(jù)95%以上的信息。
數(shù)據(jù)規(guī)約
數(shù)據(jù)規(guī)約指通過選擇替代的、較小的數(shù)據(jù)來減少數(shù)據(jù)量,包括有參數(shù)方法和無參數(shù)方法兩類。有參數(shù)方法是使用一個模型來評估數(shù)據(jù),只需存放參數(shù),而不需要存放實際數(shù)據(jù),例如回歸(線性回歸和多元回歸)和對數(shù)線性模型(近似離散屬性集中的多維概率分布)。無參數(shù)方法就需要存放實際數(shù)據(jù),例如直方圖、聚類、抽樣(采樣)。
(1)直方圖
直方圖使用分箱來近似數(shù)據(jù)分布,是一種流行的數(shù)據(jù)規(guī)約形式。屬性A的直方圖將A的數(shù)據(jù)分布劃分為不相交的子集或桶。如果每個桶只代表單個屬性值/頻率對,則該桶稱為單桶。通常,桶表示給定屬性的一個連續(xù)區(qū)間。
(2)聚類
聚類技術(shù)將數(shù)據(jù)元組(即記錄,數(shù)據(jù)表中的一行)視為對象。它將對象劃分為簇,使一個簇的對象相互“相似”,而與其他簇中的對象“相異”。在數(shù)據(jù)規(guī)約中,用數(shù)據(jù)的簇替換實際數(shù)據(jù)。該技術(shù)的有效性依賴于簇的定義是否符合數(shù)據(jù)的分布性質(zhì)。
(3)抽樣
抽樣也是一種數(shù)據(jù)規(guī)約技術(shù),它用比原始數(shù)據(jù)小得多的隨機樣本(子集)表示原始數(shù)據(jù)集。假定原始數(shù)據(jù)集D包含N個元組,可以采用抽樣方法對D進行抽樣。常用的抽樣方法:
s個樣本無放回簡單隨機抽樣:從D的N個元組中抽取s個樣本(s<N),其中D中任意元組被抽取的概率均為1/N,即所有元組的抽取是等可能的。
s個樣本有放回簡單隨機抽樣:該方法類似于無放回簡單隨機抽樣,不同在于每次一個元組從D中抽取后,記錄它,然后放回原處。
聚類抽樣:如果D中的元組分組放入M個互不相交的“簇”,則可以得到s個簇的簡單隨機抽樣,其中s<M。例如,數(shù)據(jù)庫中元組通常一次檢索一頁,這樣每頁就可以視為一個簇。
分層抽樣:如果D劃分成互不相交的部分,稱作層,則通過對每一層的簡單隨機抽樣就可以得到D的分層樣本。例如,可以得到關(guān)于顧客數(shù)據(jù)的一個分層樣本,按照顧客的每個年齡組創(chuàng)建分層。
用于數(shù)據(jù)規(guī)約時,抽樣最常用來估計聚集查詢的結(jié)果。在制定的誤差范圍內(nèi),可以確定(使用中心極限定理)估計一個給定的函數(shù)所需的樣本大小。通常樣本的大小s相對于N非常小。而通過簡單地增加樣本大小,這樣的集合可以進一步求精。
(4)參數(shù)回歸
簡單線性模型和對數(shù)線性模型可以用來近似描述給定的數(shù)據(jù)。(簡單)線性模型對數(shù)據(jù)建模,使之擬合一條直線。一下介紹一個簡單線性模型的例子,對對數(shù)線性模型只進行簡單介紹。
把點對(2,5),(3,7),(4,9),(5,12),(6,11),(7,15),(8,18),(9,19),(11,22),(12,25),(13,24),(15,30),(17,35)規(guī)約成線性函數(shù)y=wx+b。即擬合函數(shù)y=2x+1.3線上對應(yīng)的點可以近似看作已知點。

其中,
y的方差是常量13.44。在數(shù)據(jù)挖掘中,x和y是數(shù)值屬性。系數(shù)2和1.3(稱作回歸系數(shù))分別位直線的斜率和y軸截距。系數(shù)可以用最小二乘方法求解,它使數(shù)據(jù)的實際直線與估計直線之間的誤差最小化。多元線性回歸是(簡單)線性回歸的擴充,運行響應(yīng)變量y建模為兩個或多個預(yù)測變量的線性函數(shù)。對線性模型:用來描述期望頻數(shù)與協(xié)變量(指因變量有線性相關(guān)并在探討自變量與因變量關(guān)系時通過統(tǒng)計技術(shù)加以控制的變量)之間的關(guān)系??紤]期望頻數(shù)m取值在0到正無窮之間,故需要進行對數(shù)變換為
f(m)=lnm,使它的取值在-∞與∞之間。對數(shù)線性模型:

對數(shù)線性模型一般用來近似離散的多維概率分布。在一個n元組的集合中,每個元組可以看作是n維空間中的一個點??梢允褂脤?shù)線性模型基于維組合的一個較小子集,估計離散化的屬性集的多維空間中每個點的概率,這使得高位數(shù)據(jù)空間可以由較低維空間構(gòu)造。因此,對數(shù)線性模型也可以用于維規(guī)約(由于低維空間的點通常比原來的數(shù)據(jù)點占據(jù)較少的空間)和數(shù)據(jù)光滑(因為與較高維空間的估計相比,較低維空間的聚集估計較少受抽樣方法影響)。