喬銘宇,陳旻杰,張琳那
(北方工業(yè)大學(xué),北京100144)
如今,機器學(xué)習(xí)被廣泛應(yīng)用到各個領(lǐng)域,如人工智能、專家系統(tǒng)、數(shù)據(jù)挖掘、圖像處理[1]等。而隨著互聯(lián)網(wǎng)的興起和大數(shù)據(jù)技術(shù)的發(fā)展深度學(xué)習(xí)的越來越受歡迎。數(shù)據(jù)倉庫[2]和大數(shù)據(jù)技術(shù)為深度學(xué)習(xí)提供了可觀的數(shù)據(jù)集。而數(shù)據(jù)預(yù)處理則成為深度學(xué)習(xí)的不可或缺的重要流程。隨著數(shù)據(jù)記錄和屬性規(guī)模的急劇增長,大數(shù)據(jù)處理平臺和并行數(shù)據(jù)分析算法也隨之出現(xiàn)。于此同時,這也推動了數(shù)據(jù)降維處理的應(yīng)用。對于高維度數(shù)據(jù),并不便于輸入神經(jīng)網(wǎng)絡(luò)直接進行處理,所以需要提前對高位數(shù)據(jù)進行降維操作,由此,降維工作顯得格外重要。而對于大規(guī)模數(shù)據(jù),降維速度的快慢則直接影響后續(xù)工作的進程。而越來越多的降維技術(shù)被陸續(xù)提出并使用。如主成分分析(PCA)[3]、低方差濾波(Low Variance Filter)、高相關(guān)濾波(High Correlation Filter)、隨機森林/組合樹(Random Forests)、反向特征消除(Backward Feature Elimination)、前向特征構(gòu)造(Forward Feature Construction)、局部線性潛入(LLE)[4]等降維算法。這些算法各有千秋,而本文為了進一步提高降維的運算速度,提出了一種改進的降維算法。
在現(xiàn)實世界中,數(shù)據(jù)多是冗余的,即存在數(shù)據(jù)相關(guān)。高維空間可以用低維空間的聯(lián)合分布形式表示。例如,MNIST手寫數(shù)字?jǐn)?shù)據(jù)集[5]中的數(shù)據(jù),本是高維特征,卻可以用低維空間表示。我們很容易得知高維數(shù)據(jù)的優(yōu)點,數(shù)據(jù)維度高,則其所包含的信息量就大。但是數(shù)據(jù)當(dāng)然不是維度越高越好,因為還需要考慮實際的計算能力。對于數(shù)據(jù)而言,維度越高,則所消耗的計算時間越長,對計算設(shè)備的要求越高,由此,在計算上所消耗的資金數(shù)額也就越大。這就是高維度數(shù)據(jù)的缺點,消耗計算資源,計算時間大,甚至造成“維度災(zāi)難”。所以為了適應(yīng)需要,降維算法隨之誕生。降維,顧名思義,其目的就是降低數(shù)據(jù)的維度。很明顯的,降低維度會損失原數(shù)據(jù)的一些信息,如果是損失冗余信息,倒也無傷大雅,但如果是損失了關(guān)鍵信息,那勢必會對之后的工作產(chǎn)生嚴(yán)重的影響。數(shù)據(jù)的好壞決定著模型的訓(xùn)練結(jié)果,而深度學(xué)習(xí)中更是對數(shù)據(jù)集的質(zhì)量提出了更高的要求。所以,不能盲目地降低數(shù)據(jù)維度,而忽略特征的損失。但上文提到。高維數(shù)據(jù)的各個維度之間,存在著數(shù)據(jù)相關(guān),而這些高相關(guān)的維度,通俗地講,就是比較像的維度。就好比一家公司只招收一名會計,那么兩名會計來應(yīng)聘,就會錄取一名,而淘汰一名,因為這兩個人的技能太相似了。所以對于高相關(guān)的維度信息,我們選擇保留其中一個維度即可,因為保留的這個維度,就可以近似代表與其高相關(guān)的維度信息。對于維度之間的相關(guān)性,本文在此簡單介紹一下??梢园衙恳粋€維度特征抽象成一個向量,然后不同維度之間的相關(guān)性就可以轉(zhuǎn)化為不同向量間的相似度度量,向量之間的相似度度量又可以進一步轉(zhuǎn)化為向量之間的距離度量,而向量之間的距離度量方法又有很多,簡單且比較實用的方法有:余弦相似度度量、歐幾里德距離、曼哈頓距離等。易知,向量間的距離越近,則相似程度越到。那么這些向量所代表的維度特征之間的相關(guān)程度則越強。以上高相關(guān)濾波降維算法的概述。而另一種常見且實用的降維算法是低方差濾波降維算法。其核心思想是該方法假設(shè)數(shù)據(jù)列變化非常小的列包含的信息量少。因此,所有的數(shù)據(jù)列方差小的列被移除。但有一件事必須注意:方差與數(shù)據(jù)范圍相關(guān)的,所以在采用該方法前需要對數(shù)據(jù)做歸一化處理。從思想上來看,低方差濾波降維算法無疑是一個好算法,但在降維前對數(shù)目如此之多,維度如此之高的數(shù)據(jù)全部進行歸一化操作,這無疑又是一個消耗計算能力,需要大量計算時間的操作。所以,本文對低方差濾波降維算法進行改進,目的是消除歸一化操作所帶來的時間損耗,以更快地實現(xiàn)降維操作。
針對低方差濾波降維算法的利與弊,我們對該算法進行改進,在保留該算法的優(yōu)點的基礎(chǔ)上,對它的缺點進行優(yōu)化處理。上文提到,低方差濾波降維需要在降維前對所有數(shù)據(jù)進行歸一化處理,而我們追根溯源,該方法是所以要用到歸一化是因為方差計算與數(shù)據(jù)范圍有關(guān)。那么,我們只需用一種與方差計算相似,但與數(shù)據(jù)范圍無關(guān)的計算代替方差計算,且確??梢赃_到降維效果即可。由方差公式可知:
此處O表示大O漸進符號。
然后再分別對這兩組數(shù)據(jù)的方差取算數(shù)平方根,即標(biāo)準(zhǔn)差,依次為σ1、σ2,則不妨設(shè):
此處O表示大O漸進符號。
那么在對σ1、σ2依次除以各組數(shù)據(jù)的均值mean1、mean2,記為f1、f2,則不妨設(shè):
此處O表示大O漸進符號。
由此我們發(fā)現(xiàn),通過對方差采用如下公式轉(zhuǎn)換:
max|ai|為該組數(shù)據(jù)對每個值取絕對值后的最大值,這里之所以用絕對值最大值做分母而不用均值做分母,是通過實驗證實,用絕對值最大值做分母比用均值做分母,對于計算結(jié)果更加穩(wěn)定。
本文將f成為該數(shù)據(jù)集的正態(tài)方差因子。
其中,σ2為數(shù)據(jù)的方差,mean代表數(shù)據(jù)的均值。這里之所以將公式(9)中的無關(guān)因子N一起取算數(shù)平方根,是因為考慮到數(shù)據(jù)可能存在缺省項,由此不從維度的數(shù)據(jù)總數(shù)N可能會有些許區(qū)別,從而產(chǎn)生誤差,而對N取算數(shù)平方根,則可以弱化這種誤差的影響。
特別的,為了試驗中,方便比較實驗結(jié)果,我們規(guī)定:
g的分母是均值,是為了和公式(9)中的f做對比,所以在本文中稱g為偽正態(tài)方差因子,簡稱為正態(tài)因子。
整體上,通過這種方式,我們即可無需再對降維前的數(shù)據(jù)進行歸一化處理,從而大大節(jié)約了計算時間和計算成本。
接下來本文將通過實驗證明上面的假設(shè)。
本題采用2021年美國大學(xué)生數(shù)學(xué)建模大賽D題的數(shù)據(jù)集full_music_data.csv進行實驗。
首先將該數(shù)據(jù)集中的如表1所示的14列進行處理,將每列數(shù)據(jù)視為一個屬性集合,并分別在各自集合內(nèi)部計算每組屬性的方差σ2和正態(tài)方差因子f(該數(shù)據(jù)集無缺省項)。
表1
計算結(jié)果可視化如圖1-圖3所示。
由圖1和圖2對比分析得:雖然各屬性的方差值和正態(tài)方差因子值不相等,但各屬性間的方差值的大小順序與正態(tài)方差因子值的大小順序是完全一致的。
圖2 各屬性的正態(tài)方差因子比較
由圖1和圖3對比分析得:各屬性的方差的大小關(guān)系與各屬性的偽正態(tài)因子的大小關(guān)系差別很大,所以證實了公式(9)的分母需要取該組數(shù)據(jù)中的絕對值最大值,而不是取該組數(shù)據(jù)的均值。所以公式(9)的正確性和科學(xué)性得到了證實。
圖1 各屬性的方差比較
圖3 各屬性的偽正態(tài)因子比較
由此我們得出結(jié)論,原低方濾波降維算法中的方差可以用本文中的正態(tài)方差因子代替。由此省略了降維前歸一化操作的時間。所以,實驗證實了本文改進降維算法的正確性和可行性。
為適應(yīng)深度學(xué)習(xí)快速發(fā)展的趨勢,大數(shù)據(jù)集高維數(shù)據(jù)的預(yù)處理顯得格外重要。而降維是減輕計算壓力的一種有效方式。降維算法層出不窮,如高相關(guān)濾波降維、低方差降維等,但這兩者都需要在降維前提前進行數(shù)據(jù)的歸一化處理,而對高維數(shù)據(jù)進行歸一化處理無疑是又增加了計算時間和計算耗費。為了進一步減少計算時間,減輕計算資源的損耗,本文實現(xiàn)了一種基于低方差波算法的改進降維算法。通過實驗證明,本文的改進降維算法確實比原本的低方差濾波降維算法所需時間更短,且與低方差濾波降維算法相比,本文的改進算法對于降維后對原數(shù)據(jù)集特征損失的影響并沒有明顯增加。但本文的改進降維算法仍然需要對降維前的各組數(shù)據(jù)分別計算方差,這仍然會對計算時間延長造成一定的影響。所以,在后續(xù)的研究中,將會進一步考慮對降維算法的計算時間進行優(yōu)化。