- 突圍算法:機器學習算法應用
- 劉凡平
- 3221字
- 2020-09-05 00:31:29
3.2 數據的特征縮放和特征編碼
數據特征建立在高質量的數據基礎之上,是抽象出數據關鍵內容的形態。數據特征是機器學習算法最關注的部分,也是算法能夠達成基本業務要求的必要條件。
3.2.1 特征縮放
特征縮放(Feature Scaling)是一種用于規范自變量或數據特征范圍的方法,在數據處理中,也稱為數據規范化,通常在數據預處理步驟中執行。
由于原始數據的值范圍變化很大,因此在某些機器學習算法中,如果沒有數據規范化,則目標函數的結果偏差可能會較大。例如,假定在某分類器中通過歐幾里得度量計算兩點之間的距離,如果其中一個元素的取值范圍非常大,則計算的距離將受此元素的影響較大。因此需要對所有特征的范圍進行處理,使每個特征都能夠成比例地對結果產生影響。
除上述原因外,特征縮放的另一個重要作用是基于特征縮放后的元素,梯度下降收斂速度要快得多。
特征縮放常常以數據標準化(Standardization)和數據歸一化(Normalization)的方式進行處理。數據標準化是將數據按比例進行縮放,使得標準化落入一個固定的較小區間;數據歸一化是把數據轉換為[0,1]或[-1,1]區間的小數。特征縮放的具體方法包括最小最大值歸一化、Z-score、非線性歸一化等。
1.最小最大值歸一化
顧名思義,最小最大值歸一化(Min-Max Normalization)是基于最小值和最大值進行歸一化處理,通過對數據的每一個維度的值進行重新調節,使得最終的數據向量落在[0,1]區間內,計算公式見式(3-3)。

其中,x′為處理之后的值,x為原始值。顯然,根據上述公式,原始數據中的最大值歸一化后為1,最小值歸一化后為0。
最小最大值歸一化適用數據比較集中的情況。倘若最大值和最小值不穩定,則很容易使結果不穩定,導致使用效果也不穩定。在實際使用中,可以用經驗常量值替代最大值和最小值。當有新數據加入時,可能會導致最大值或最小值發生變化,因此需要重新定義和計算。
與最小最大值歸一化類似的是均值歸一化(Mean Normalization),計算公式見式(3-4)。均值歸一化的結果相對穩定,但是依然受限于集合中的最小值和最大值:

2.Z-score
Z-score也被稱作零—均值標準化,是最為常用的標準化方法之一。經過處理的數據服從標準正態分布,均值為0,標準差為1。計算公式見式(3-5),其中為所有樣本的均值,σ為所有樣本的標準差。

Z-score適用數據的最大值和最小值未知的情況,或有超出取值范圍的離群數據的情況。Z-score要求原始數據的分布近似為正態分布,處理后的數據服從標準正態分布。
在分類算法和聚類算法中,常常需要使用距離來度量相似性,此時,Z-score比最小最大值歸一化更為優異。在不涉及距離度量、協方差計算、數據不服從正態分布時,可以使用最小最大值歸一化。
3.非線性歸一化
非線性歸一化經常用在數據分化較大的場景,有些數值很大,有些數值很小,所以需要通過一些數學函數對原始值進行映射,如log函數轉換、atan函數轉換等。具體需要根據數據分布的情況,決定采用的非線性函數。
(1)log函數轉換。log函數對于大的x而言增長非常緩慢,所以常使用log函數來壓縮大的數據。基于log函數的歸一化計算公式見式(3-6)。

例如,對于數值序列(15,21,32,41,54,66,77,78,89),基于log函數轉換之后的結果如圖3-4所示。如果想讓處理結果分布在[0,1]區間,則要求原輸入數據不應小于1。

圖3-4
(2)atan函數轉換。atan函數返回的是反正切值,返回的角度范圍在-π/2到π/2之間。基于atan函數的歸一化計算公式見式(3-7)。

對于數值序列(15,21,32,41,54,66,77,78,89),通過atan函數轉換之后的結果如圖3-5所示。如果想讓處理結果分布在[0,1]區間,則原始輸入數據應大于或等于0,小于0的數據被映射到[-1,0]。

圖3-5
非線性的轉換方式還有很多,讀者可以根據業務場景自定義函數。非線性歸一化方法在原始數據保持相對大小的情況下進行了非線性映射,這意味著數據相對大小的差距仍然存在,但絕對差距已經發生了變化,且差距不是成比例變化的,因此適合較為復雜的場景。
最小最大值歸一化、Z-score、非線性歸一化是目前比較常用的特征縮放方法,此外,縮放至單位長度的特征縮放方法在機器學習領域中也時常被用到,計算公式為x′=x/||x||。通過縮放特征向量的分量,將每個分量除以向量的歐幾里得距離,使整個向量的長度為1。
在圖像領域有類似的對原始數據處理的方法,例如,對圖像的歸一化處理,在處理自然圖像時,獲得的原始圖像像素值在[0,255]區間,常用的處理方法是將這些像素值除以255,使它們縮放在[0,1]區間。
3.2.2 特征編碼
一般來說,通過各種渠道獲得的數據相對雜亂,并且可能帶有各種非數字的特殊符號,如中文表述等。但實際上,機器學習模型所需的數據是數值型的,因為只有數值型的數據才會真正被計算。因此,對于非數值型的特征值,需要對其進行相應的編碼,使其能夠被高效計算。當然,編碼過程實際上是另外一種量化過程。根據解決問題的場景,我們可以把數據的特征編碼分為標簽編碼、獨熱編碼和多熱編碼等。
1.標簽編碼(Label Encoding)
標簽編碼主要針對的是離散型特征,適用原始數據是有序離散的場景。例如,(香蕉,車厘子)這樣的特征是無法直接被模型使用的,因此需要將這些特征轉換為算法模型能理解的編碼。一個很容易想到的方法就是把這些特征數字化,即標簽編碼。比如(香蕉,車厘子)可以用(0,1)表示,(手機,電腦,平板……)可以用(0, 1, 2, …)表示。即對于一個有K個類別的特征,可以用(0, K-1)的連續整數進行標簽編碼。
2.獨熱編碼(One-hot Encoding)
在很多應用場景中,特征是非連續型的變量,如果需要對這部分變量進行計算,則需要借助其他方法把這些變量數值化,而獨熱編碼非常適合處理離散型的特征值。
例如,性別有兩個離散變量,即男和女,而實際上,男、女是無法直接參與計算的,數值化并不是將男和女分別數值為1和-1,因為1和-1依然是離散變量,數值0對離散變量1和-1沒有直接意義,類別之間本身也是無序的。
獨熱編碼表示一種特殊的位元組合,一個特征僅允許一個位為1,其他位必須為0。獨熱向量是機器學習中經獨熱編碼之后產生的向量。在任意維度的獨熱向量中,僅有一個維度的值是1,其余均為0。例如,向量(00010)中有且僅有一位為1,將離散型數據轉換成獨熱向量的過程被稱為獨熱編碼。若情況相反,向量中只有一個0,其余均為1,則稱為獨冷編碼(One-cold Encoding)。例如,某離散型數據“蘋果”“梨子”“桃子”,它們的獨熱向量分別為(1 0 0)、(0 1 0)和(0 0 1)。
在一般的回歸問題、分類問題、聚類問題等機器學習算法應用中,特征之間距離的計算或相似度的計算是非常重要的。距離或相似度的計算大部分是通過余弦相似性、歐氏距離等計算的,使用獨熱編碼,將離散特征的取值擴展到歐氏空間,離散特征的某個取值就對應歐氏空間的某個點,距離可以通過歐氏距離計算。例如,香蕉的獨熱向量為(1 0 0),通過算法計算的某未知水果的向量是(0.8 0.1 0.1),則通過歐氏距離計算可以知道該水果很可能為香蕉。
獨熱編碼解決了分類器不好處理屬性數據的問題,在一定程度上起到了擴充特征的作用。當類別的數量較多時,特征空間會變得非常大,在這種情況下,一般可以用主成成分分析來減少維度,且獨熱編碼與主成成分分析這種組合在實際場景中應用得非常廣泛。
從運算的角度,獨熱編碼至少帶來了三方面的好處:
(1)將離散型的數據轉換為離散型數值,有助于算法的處理和計算;
(2)轉換成固定維度的獨熱向量,方便機器學習算法進行線性代數的計算;
(3)在獨熱向量中,絕大部分數值都是0,如果使用稀疏矩陣的數據結構進行計算,則可以節省計算內存。
3.多熱編碼(Multi-hot Encoding)
在獨熱編碼中,有且僅有一個位的值為1;而在多熱編碼中,允許多個位的值為1。多熱編碼大多出現在存在多個特征屬性的場景,而非唯一一個。例如,在水果列表(香蕉,蘋果,車厘子)中,某顧客喜歡的水果并非有且只有一個,如果顧客喜歡的是香蕉和蘋果,則可以多熱編碼為(1 1 0)。
● 從技術實現的角度來看,多熱編碼在神經網絡或深度學習的一些輸入中較為常見,將復雜的混合特征通過多熱編碼的形式傳遞給算法模型。
● 從應用場景的角度來看,多熱編碼在用戶畫像中的應用非常多,尤其是通過多熱編碼表示用戶的特征形態、靜態屬性、行為屬性等。
● 從數據的本質的角度來看,對數據的多熱編碼處理實際上是一種稀疏矩陣的降維壓縮過程。
- ANSYS 14熱力學/電磁學/耦合場分析自學手冊
- ANSYS Workbench熱力學分析實例演練(2020版)
- SOLIDWORKS二次開發與API教程(2020版)
- 從零開始:AutoCAD 2010中文版建筑制圖基礎培訓教程
- MATLAB與機器學習
- 深度學習高手筆記(卷1):基礎算法
- 基于C#的Web應用
- CAE分析大系:ABAQUS巖土工程實例詳解
- 中文版Creo 2.0完全自學教程
- SolidWorks 2012從入門到精通(中文版)
- 從零開始:AutoCAD 2010中文版機械制圖基礎培訓教程(中文版)
- 信息化與新型城鎮化:互動效應與路徑研究
- 開放式IEC 61131控制系統設計
- 中文版AutoCAD 2013全套室內裝潢設計典型實例
- AutoCAD 2014中文版實用教程