喬銘宇,陳旻杰,張琳那
(北方工業大學,北京100144)
如今,機器學習被廣泛應用到各個領域,如人工智能、專家系統、數據挖掘、圖像處理[1]等。而隨著互聯網的興起和大數據技術的發展深度學習的越來越受歡迎。數據倉庫[2]和大數據技術為深度學習提供了可觀的數據集。而數據預處理則成為深度學習的不可或缺的重要流程。隨著數據記錄和屬性規模的急劇增長,大數據處理平臺和并行數據分析算法也隨之出現。于此同時,這也推動了數據降維處理的應用。對于高維度數據,并不便于輸入神經網絡直接進行處理,所以需要提前對高位數據進行降維操作,由此,降維工作顯得格外重要。而對于大規模數據,降維速度的快慢則直接影響后續工作的進程。而越來越多的降維技術被陸續提出并使用。如主成分分析(PCA)[3]、低方差濾波(Low Variance Filter)、高相關濾波(High Correlation Filter)、隨機森林/組合樹(Random Forests)、反向特征消除(Backward Feature Elimination)、前向特征構造(Forward Feature Construction)、局部線性潛入(LLE)[4]等降維算法。這些算法各有千秋,而本文為了進一步提高降維的運算速度,提出了一種改進的降維算法。
在現實世界中,數據多是冗余的,即存在數據相關。高維空間可以用低維空間的聯合分布形式表示。例如,MNIST手寫數字數據集[5]中的數據,本是高維特征,卻可以用低維空間表示。我們很容易得知高維數據的優點,數據維度高,則其所包含的信息量就大。但是數據當然不是維度越高越好,因為還需要考慮實際的計算能力。對于數據而言,維度越高,則所消耗的計算時間越長,對計算設備的要求越高,由此,在計算上所消耗的資金數額也就越大。這就是高維度數據的缺點,消耗計算資源,計算時間大,甚至造成“維度災難”。所以為了適應需要,降維算法隨之誕生。降維,顧名思義,其目的就是降低數據的維度。很明顯的,降低維度會損失原數據的一些信息,如果是損失冗余信息,倒也無傷大雅,但如果是損失了關鍵信息,那勢必會對之后的工作產生嚴重的影響。數據的好壞決定著模型的訓練結果,而深度學習中更是對數據集的質量提出了更高的要求。所以,不能盲目地降低數據維度,而忽略特征的損失。但上文提到。高維數據的各個維度之間,存在著數據相關,而這些高相關的維度,通俗地講,就是比較像的維度。就好比一家公司只招收一名會計,那么兩名會計來應聘,就會錄取一名,而淘汰一名,因為這兩個人的技能太相似了。所以對于高相關的維度信息,我們選擇保留其中一個維度即可,因為保留的這個維度,就可以近似代表與其高相關的維度信息。對于維度之間的相關性,本文在此簡單介紹一下。可以把每一個維度特征抽象成一個向量,然后不同維度之間的相關性就可以轉化為不同向量間的相似度度量,向量之間的相似度度量又可以進一步轉化為向量之間的距離度量,而向量之間的距離度量方法又有很多,簡單且比較實用的方法有:余弦相似度度量、歐幾里德距離、曼哈頓距離等。易知,向量間的距離越近,則相似程度越到。那么這些向量所代表的維度特征之間的相關程度則越強。以上高相關濾波降維算法的概述。而另一種常見且實用的降維算法是低方差濾波降維算法。其核心思想是該方法假設數據列變化非常小的列包含的信息量少。因此,所有的數據列方差小的列被移除。但有一件事必須注意:方差與數據范圍相關的,所以在采用該方法前需要對數據做歸一化處理。從思想上來看,低方差濾波降維算法無疑是一個好算法,但在降維前對數目如此之多,維度如此之高的數據全部進行歸一化操作,這無疑又是一個消耗計算能力,需要大量計算時間的操作。所以,本文對低方差濾波降維算法進行改進,目的是消除歸一化操作所帶來的時間損耗,以更快地實現降維操作。
針對低方差濾波降維算法的利與弊,我們對該算法進行改進,在保留該算法的優點的基礎上,對它的缺點進行優化處理。上文提到,低方差濾波降維需要在降維前對所有數據進行歸一化處理,而我們追根溯源,該方法是所以要用到歸一化是因為方差計算與數據范圍有關。那么,我們只需用一種與方差計算相似,但與數據范圍無關的計算代替方差計算,且確保可以達到降維效果即可。由方差公式可知:


此處O表示大O漸進符號。
然后再分別對這兩組數據的方差取算數平方根,即標準差,依次為σ1、σ2,則不妨設:

此處O表示大O漸進符號。
那么在對σ1、σ2依次除以各組數據的均值mean1、mean2,記為f1、f2,則不妨設:

此處O表示大O漸進符號。
由此我們發現,通過對方差采用如下公式轉換:

max|ai|為該組數據對每個值取絕對值后的最大值,這里之所以用絕對值最大值做分母而不用均值做分母,是通過實驗證實,用絕對值最大值做分母比用均值做分母,對于計算結果更加穩定。
本文將f成為該數據集的正態方差因子。
其中,σ2為數據的方差,mean代表數據的均值。這里之所以將公式(9)中的無關因子N一起取算數平方根,是因為考慮到數據可能存在缺省項,由此不從維度的數據總數N可能會有些許區別,從而產生誤差,而對N取算數平方根,則可以弱化這種誤差的影響。
特別的,為了試驗中,方便比較實驗結果,我們規定:

g的分母是均值,是為了和公式(9)中的f做對比,所以在本文中稱g為偽正態方差因子,簡稱為正態因子。
整體上,通過這種方式,我們即可無需再對降維前的數據進行歸一化處理,從而大大節約了計算時間和計算成本。
接下來本文將通過實驗證明上面的假設。
本題采用2021年美國大學生數學建模大賽D題的數據集full_music_data.csv進行實驗。
首先將該數據集中的如表1所示的14列進行處理,將每列數據視為一個屬性集合,并分別在各自集合內部計算每組屬性的方差σ2和正態方差因子f(該數據集無缺省項)。

表1
計算結果可視化如圖1-圖3所示。
由圖1和圖2對比分析得:雖然各屬性的方差值和正態方差因子值不相等,但各屬性間的方差值的大小順序與正態方差因子值的大小順序是完全一致的。

圖2 各屬性的正態方差因子比較
由圖1和圖3對比分析得:各屬性的方差的大小關系與各屬性的偽正態因子的大小關系差別很大,所以證實了公式(9)的分母需要取該組數據中的絕對值最大值,而不是取該組數據的均值。所以公式(9)的正確性和科學性得到了證實。

圖1 各屬性的方差比較

圖3 各屬性的偽正態因子比較
由此我們得出結論,原低方濾波降維算法中的方差可以用本文中的正態方差因子代替。由此省略了降維前歸一化操作的時間。所以,實驗證實了本文改進降維算法的正確性和可行性。
為適應深度學習快速發展的趨勢,大數據集高維數據的預處理顯得格外重要。而降維是減輕計算壓力的一種有效方式。降維算法層出不窮,如高相關濾波降維、低方差降維等,但這兩者都需要在降維前提前進行數據的歸一化處理,而對高維數據進行歸一化處理無疑是又增加了計算時間和計算耗費。為了進一步減少計算時間,減輕計算資源的損耗,本文實現了一種基于低方差波算法的改進降維算法。通過實驗證明,本文的改進降維算法確實比原本的低方差濾波降維算法所需時間更短,且與低方差濾波降維算法相比,本文的改進算法對于降維后對原數據集特征損失的影響并沒有明顯增加。但本文的改進降維算法仍然需要對降維前的各組數據分別計算方差,這仍然會對計算時間延長造成一定的影響。所以,在后續的研究中,將會進一步考慮對降維算法的計算時間進行優化。