機器學習特徵處理筆記概要
在特徵工程之前,資料的特徵需要經過哪些必要的預處理(preprocessing)?
其中最廣為人知的預處理技巧可能就是特徵縮放(feature scaling),它的目的是保證所有的特徵數值具有相同的數量級。在有些情況下,資料中的某些特徵會具有不同的尺度,比如在電商上買衣服時,身高和體重就是不同尺度的特徵。
舉個簡單例子來說:
假設我的身高 / 體重是 1.85 公尺 /64 公斤,而買了同款衣服的兩個朋友,1.75 公尺 /80 公斤的穿 l 號合適,1.58 公尺 /52 公斤的穿 s 號正好。直觀判斷的話,l 碼應該更合適我。可如果把(身高,體重)的二元組看作二維空間上的點的話,代表我自己的點顯然和代表 s 碼的點之間的歐式距離更近。如果電商不開眼的話,保不齊就會把 s 碼推薦給我。
實際上,不會有電商做出這麼弱智的推薦,因為他們都會進行特徵縮放。在上面的例子中,由於體重資料比身高資料高出了乙個數量級,因此在計算歐式距離時,身高的影響相比於體重是可以忽略不計的,起作用的相當於只有體重乙個特徵,這樣的演算法自然就會把體重相近的劃分到同乙個類別。
特徵縮放的作用就是消除特徵的不同尺度所造成的偏差,具體的變換方法有以下這兩種:
不難看出,標準化的方法用原始資料減去均值再除以標準差,不管原始特徵的取值範圍有多大,得到的每組新資料都是均值為 0,方差為 1,這意味著所有資料被強行拉到同乙個尺度之上;歸一化的方法則是用每個特徵的取值區間作為一把尺子,再利用這把尺將不同的資料按比例進行轉換,讓所有資料都落在 [0, 1] 這個範圍之內。雖然實現方式不同,但兩者都能夠對資料做出重新標定,以避免不同尺度的特徵產生不一致的影響,可謂殊途同歸。
除了尺度之外,資料的偏度也是值得關注的乙個問題。偏度(skewness)是用於描述概率分布非對稱性的乙個指標。資料服從有偏分布意味著資料當中可能存在著異常點(outlier)。
面對偏度較大的資料,第一反應就應該是檢查是否有異常點存在。一般來說,如果少量資料點和其他資料點有明顯區別,就可以認為是異常點。在處理異常點時,首先要檢測這些資料的可靠性,判斷異常取值是不是由錯誤或者失誤導致。如果異常點本身並沒有問題,需要考慮的下乙個問題就是異常點和正常點是否**於不同的生成機制,從而具有不同的概率分布。如果對異常點所在的分布的取樣資料較少,就不足以體現出分布的特性,導致單個資料點看起來顯得突兀。
對於像決策樹這類對異常點比較敏感的演算法來說,不管**如何,異常點都需要被處理。最直接的處理辦法就是將異常點移除,但當資料集容量較小時,這種一刀切的方式會進一步減少可用的資料,造成資訊的丟失,這時就需要採用名為**「空間標識」(spatial sign)**的數值處理方法。
空間標識方法先對所有的資料點進行前面提到的標準化處理,再用樣本向量的 2 範數對樣本中的所有特徵進行歸一化,其數學表示式可以寫成
式中的 n 是資料的維度。顯然,空間標識演算法將所有的資料點都對映到高維空間的球面上,這個對映和標準化或者歸一化的不同之處在於它處理的物件並不是所有樣本的同乙個特徵,而是同乙個樣本的所有特徵,讓所有樣本呈現一致的尺度。
當然,即使在沒有異常點的情況下,資料依然可能呈現出有偏的分布,這在數字影象處理中並不罕見。有偏分布的乙個明顯特點是最大值和最小值之間相差較大,通常可以達到20 倍或者更高。
這種資料尺度的不一致即使出現在單個特徵上也不是一件好事情,對它進行修正,也就是**對資料進行去偏度處理的常用方法就是取對數變換(log transformation),也就是對特徵取值取對數。**最大值和最小值之間的 20 倍差距經過對數變換後變為 log220=4.3,這就在乙個可以接受的範圍內了。除了對數之外,求平方根和求倒數也是移除偏度的常見處理方式。
異常點也好,尺度不一致的資料也好,它們至少還都是完整的資料。可有些時候,乙個樣本裡的某些特徵會壓根兒沒有取值,而是一片空白,這種情況被稱為缺失值(missing values)。解決其較好的方法為給這些缺失值進行人為的賦值(imputation)。
人為賦值相當於在機器學習中又巢狀了一層機器學習,裡層的機器學習被用於估計未知的屬性值,也要使用訓練資料。最常用的賦值演算法是k 近鄰演算法:選取離具有缺失值的樣本最近的 k 個樣本,並以它們對應特徵的平均值為缺失值賦值。此外,線性回歸也可以用來對缺失值進行擬合。但可以確定的是,不管採用什麼方法,人為賦值都會引入額外的不確定性,給模型帶來的效能造成影響。
機器學習 特徵處理
引自 在機器學習任務中,學習器都會對資料有一定的要求,比如在最近鄰演算法中,我需要尋找與中心點最近鄰的點,假設我們使用歐式距離度量,如果有乙個屬性值是千萬量級,而另乙個屬性是100以內,那麼如此計算的距離會嚴重依賴於大量級的屬性,這對最後模型結果是有很大的影響的。總之,預處理的目的就是為了能夠讓學習...
機器學習 特徵預處理
通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料的過程。特徵的單位或者大小相差較大,或者某特徵的方差相比其他的特徵要大出幾個數量級,容易影響 支配 目標結果,使得一些演算法無法學習到其它的特徵。對資料進行標準化或者歸一化可解決此類現象 資料標準化 是消除變數間的量綱關係,從而使資料具有可...
機器學習 特徵工程 特徵預處理
定義 將原始資料轉換為更好地代表 模型的潛在問題的特徵的過程,從而提高了對未知資料的 準確性。內容 主要有三部分 1 特徵抽取 2 特徵預處理 3 資料的降維 特徵預處理 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。1 包含內容 2 sklearn特徵處理api sklearn.pr...