数据特征处理方法
特征分類
對特征進行分類,對于不同的特征應該有不同的處理方法。
根據不同的分類方法,可以將特征分為
(1)Low level特征和High level特征。
Low level特征——較低級別的特征,主要是原始特征,不需要或者需要非常少的人工處理和干預。
例如文本特征中的詞向量特征,圖像特征中的像素點,用戶id,商品id等。
Low level特征一般維度比較高,不能用過于復雜的模型。
?
High level特征——經過較復雜的處理,結合部分業務邏輯或者規則、模型得到的特征。
例如人工打分,模型打分等特征,可以用于較復雜的非線性模型。
?
Low level 比較針對性,覆蓋面小。長尾樣本的預測值主要受high level特征影響。 高頻樣本的預測值主要受low level特征影響。
(2)穩定特征與動態特征。
穩定特征——變化頻率(更新頻率)較少的特征
例如評價平均分,團購單價格等,在較長的時間段內都不會發生變化。
?
動態特征——更新變化比較頻繁的特征,有些甚至是實時計算得到的特征
例如距離特征,2小時銷量等特征。或者叫做實時特征和非實時特征。
?
針對兩類特征的不同可以針對性地設計特征存儲和更新方式
例如
對于穩定特征,可以建入索引,較長時間更新一次,如果做緩存的話,緩存的時間可以較長。
對于動態特征,需要實時計算或者準實時地更新數據,如果做緩存的話,緩存過期時間需要設置的較短。
(3)二值特征、連續特征、枚舉特征。
二值特征——主要是0/1特征,即特征只取兩種值:0或者1
例如用戶id特征:目前的id是否是某個特定的id,詞向量特征:某個特定的詞是否在文章中出現等等。
?
連續值特征——取值為有理數的特征,特征取值個數不定,例如距離特征,特征取值為是0~正無窮。
?
枚舉值特征——主要是特征有固定個數個可能值,例如今天周幾,只有7個可能值:周1,周2,...,周日。
?
在實際的使用中,我們可能對不同類型的特征進行轉換,例如將枚舉特征或者連續特征處理為二值特征。
?
枚舉特征處理為二值特征技巧:
將枚舉特征映射為多個特征,每個特征對應一個特定枚舉值,例如今天周幾,可以把它轉換成7個二元特征:今天是否是周一,今天是否是周二,...,今天是否是周日。
連續值處理為二值特征方法:
先將連續值離散化(后面會介紹如何離散化),再將離散化后的特征切分為N個二元特征,每個特征代表是否在這個區間內。
?
特征處理與分析
?
特征分類后要對特征進行處理
包括1.特征歸一化,離散化,缺省值處理。2.特征降維方法。3.特征選擇方法等。——主要用于單個特征的處理。
?
-
歸一化
不同的特征有不同的取值范圍,在有些算法中,例如線性模型或者距離相關的模型像聚類模型、knn模型等,特征的取值范圍會對最終的結果產生較大影響,例如二元特征的取值范圍為[0,1],而距離特征取值可能是[0,正無窮),在實際使用中會對距離進行截斷,例如[0,3000000],但是這兩個特征由于取值范圍不一致導致了模型可能會更偏向于取值范圍較大的特征,為了平衡取值范圍不一致的特征,需要對特征進行歸一化處理,將特征取值歸一化到[0,1]區間。
常用的歸一化方法
包括
1.函數歸一化
通過映射函數將特征取值映射到[0,1]區間,例如最大最小值歸一化方法,是一種線性的映射。還有通過非線性函數的映射,例如log函數等。
2.分維度歸一化
可以使用最大最小歸一化方法,但是最大最小值選取的是所屬類別的最大最小值,即使用的是局部最大最小值,不是全局的最大最小值。
3.排序歸一化
不管原來的特征取值是什么樣的,將特征按大小排序,根據特征所對應的序給予一個新的值。 -
離散化
在上面介紹過連續值的取值空間可能是無窮的,為了便于表示和在模型中處理,需要對連續值特征進行離散化處理。
常用的離散化方法
包括
1.等值劃分
將特征按照值域進行均分,每一段內的取值等同處理。例如某個特征的取值范圍為[0,10],我們可以將其劃分為10段,[0,1),[1,2),...,[9,10)。
2.等量劃分
根據樣本總數進行均分,每段等量個樣本劃分為1段。例如距離特征,取值范圍[0,3000000],現在需要切分成10段,如果按照等比例劃分的話,會發現絕大部分樣本都在第1段中。使用等量劃分就會避免這種問題,最終可能的切分是[0,100),[100,300),[300,500),..,[10000,3000000],前面的區間劃分比較密,后面的比較稀疏。 -
缺省值處理
有些特征可能因為無法采樣或者沒有觀測值而缺失,例如距離特征,用戶可能禁止獲取地理位置或者獲取地理位置失敗,此時需要對這些特征做特殊的處理,賦予一個缺省值。缺省值如何賦予,也有很多種方法。例如單獨表示,眾數,平均值等。
另外一篇關于處理“特征工程之連續特征與離散特征處理方法介紹”見此文
http://blog.csdn.net/shenxiaoming77/article/details/51543724
總結
- 上一篇: Andriod --- JetPack
- 下一篇: 模型融合之stacking方法