天天看點

特征生成大法

作者介紹:

程虹升,唯品會大資料部資料分析師,資料分析和挖掘實戰的踐行者,“51CEO”公衆号的營運者。

Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.(by Jason Brownlee)

采集資料,清洗完畢,接下來就需要設計x變量(自變量,independent variable),之後再構模組化型。

x變量通常被稱作“特征”,是以設計和篩選x變量的過程也就是“特征生成”,包括兩個步驟:特征的生成,特征的選擇。

為什麼要做特征工程呢?

Better features means flexibility.

Better features means simpler models.

Better features means better results.

如果把分析任務比作養孩子,那麼特征工程就意味着這個孩子的“基因”,而後續選用的模型則是“後天環境”,“基因”好就能最大限度地防止GIGO(garbage in, garbage out)。

本文的主要内容為特征的生成,也就是如何從原始資料中獲得更豐富的資訊。

特征生成前的原始資料可以分3類情況:

  • 單列,即對單個變量進行轉換、衍生;
  • 多列,多列變量組合成一列變量,包括組合運算和降維;
  • 多行,一般針對時間序列而言,将一個樣本的多行時間序列資料統計後得到一行資料,即在時間尺度上壓縮;

1. 單列變量

特征生成大法

原始變量(後面均以“變量”指代“特征”)一般呈現為3種形式:

  • 字元型,如同人名一樣,隻是一個代号,e.g. 省市名稱;
  • 數值型,e.g. 數量,金額等,或者“0,1”數值标記;
  • 日期(時間)型,e.g. 交易時間,登入時間等;

一般情況下,字元型的變量是離散的,數值型和日期型變量則是連續的。

注:數值型變量有時是二值化的(binary),或者具有等級屬性,一般也看作是連續的。

1.1 離散變量

離散變量可以分為“類别型”和“順序型”兩類變量

資料一般分為4種類型:

類别型,e.g. 地區,省市;

順序型,雖然離散但是有順序,但順序之間的間隔不一定相等,e.g. 圍棋段位;

等距型,有序且間隔相等,但無絕對零點,可加減不可乘除,e.g. 溫度;

等比型,有絕對零點,可以做四則運算,e.g. 長度、品質、時間等;

類别型,e.g. 使用者所在的行業,居住省份資訊;

當種類比較少時,可以考慮變換成啞變量(dummy variable),如下圖:

特征生成大法

注:啞變量變換示例

當種類比較多時,則可以考慮對該變量的值進行歸類,e.g. 将省份轉化為五大區,然後再對歸類後的資料進行啞變量轉化

順序型,順序型的離散變量常被當作連續變量來看,比如常見的Likert量表得分;

e.g. 問卷調查使用者滿意度,回答可能是“非常不滿意,比較不滿意,一般,比較滿意,非常滿意”,然後可以考慮轉化為1-5的評分等級。

注:實際上在資料清洗的步驟中也可以做這一步。

1.2 連續變量

連續變量可以轉化為離散變量或者連續變量。

“連續->連續”轉化的情況一般有兩類:

  • 分布變換,常見的有log或exp變換、平方根和平方變換、立方根和立方變換等;
  • 量綱統一,常見的标準化一般有3類:Z分數,[0,1],[-1,1];

    注:标準化可以參考文章,學術期刊綜合評價資料标準化方法研究,俞立平等

“連續->離散”轉化按得到的值的個數可以分為:

  • 二值化binary,即最終得到的值是0或者1;

    e.g. 考試成績卡門檻值60分,>=60分為“及格”,記為1,<60分為“不及格”,記為0;

  • 分箱binning,分箱操作可以分為3類:等距離分箱、等數量分箱、按分布分箱;

    e.g. 作直方圖的時候即按等距離分箱來調整x label的顆粒度;

    e.g. 一大堆人排隊等電梯就類似于等數量分箱,電梯裝滿就走;

    e.g. “天才在左,瘋子在右”相當于按分布來篩選左右兩側的極端情況;

2. 多列變量

特征生成大法

即由多列變量衍生出一列變量,可以分為:

  • “顯式”運算,即我們可以清楚地知道原始變量怎麼一步步計算出新的變量的,最常見的就是四則運算;

    e.g. 變量A-貨車近3個月運作公裡裡程,變量B-貨車近3個月UBI超速報警次數---->衍生變量C-平均每10公裡的超速報警次數;

  • “隐式”運算,即得到的新變量和原來的變量的關系難以用一個函數來表達出來,e.g. 特征降維中常用的的主成份分析(PCA);

3.多行樣本(時間序列)

特征生成大法

單列變量和多列變量主要針對“橫截面”資料,“多行樣本”則是指時間序列資料,即一某研究對象在多個時間點有資料記錄(多行)。

時間序列的資料可以提取三類特征:

  • 整體特征,整體的統計情況;

    e.g. 單個使用者近一年的交易金額、訂單數、客單價等;

  • 局部特征,即在整體的時間區間内按其他分類變量或者按不同時間顆粒度計算得到的資料;

    e.g. 該使用者近一年内購買女裝、美妝、3C、母嬰、體用等各品類的交易情況;

    e.g. 該使用者四個季度分别的下單情況;

  • 趨勢特征,衡量發展性和穩定性的特征;

    e.g. 某使用者本季度和上季度的環比交易變化情況(絕對量或者百分比);

本文主要結構如下,特征生成的方法包含但不限于文中所及,更多資訊請參閱文末參考資料。

特征生成大法
  1. ​​https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/​​
  2. ​​https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/​​
  3. IBM SPSS 資料分析與挖掘實戰案例精粹,張文彤,鐘雲飛,第17章
  4. 機器學習,周志華,第11章
  5. ​​http://adataanalyst.com/machine-learning/comprehensive-guide-feature-engineering/​​
  6. ​​http://scikit-learn.org/stable/data_transforms.html​​

繼續閱讀