在機器學習應用中盒齿,特征工程扮演著重要的角色翎承,可以說特征工程是機器學習應用的基礎(chǔ)待讳。在機器學習界流傳著這樣一句話:“數(shù)據(jù)和特征決定決定了機器學習算法的上限创淡,而模型和算法只是不斷逼近這個上限而已”。在機器學習應用中碧浊,特征工程介于“數(shù)據(jù)”和“模型”之間劳较,特征工程是使用數(shù)據(jù)的專業(yè)領(lǐng)域知識創(chuàng)建能夠使機器學習算法工作的特征的過程。美國計算機科學家Peter Norvig有兩句經(jīng)典名言:“基于大量數(shù)據(jù)的簡單模型勝于基于少量數(shù)據(jù)的負責模型抖仅〕Щ”以及“更多的數(shù)據(jù)勝于聰明的算法屎慢,而好的數(shù)據(jù)勝于多的數(shù)據(jù)欲虚⌒佬”因此锈锤,特征工程的前提便是收集足夠多的數(shù)據(jù),其次則是從大量數(shù)據(jù)中提取關(guān)鍵信息并表示為模型所需要的形式。合適的特征可以讓模型預測更加容易,機器學習應用更有可能成功。
特征提取
從數(shù)學的角度講,特征工程就是將原始數(shù)據(jù)空間變換到新的特征空間 痰滋,或者說是換一種數(shù)據(jù)的表達方式敲街,在新的特征空間中,模型能夠更好地學習數(shù)據(jù)中的規(guī)律多艇。因此像吻,特征抽取就是對原始數(shù)據(jù)進行變換的過程峻黍。大多數(shù)模型和算法要求輸入是維度相同的實向量,因此特征工程首先需要經(jīng)原始數(shù)據(jù)轉(zhuǎn)化為實向量拨匆。將原始數(shù)據(jù)空間變換為模型輸入向量空間的過程便是特征工程所要做的事情姆涩。
特征工程的提取依賴于業(yè)務領(lǐng)域知識惭每,特征工程可以說是業(yè)務邏輯的一種數(shù)學層面的表示台腥。所以特征工程的第一步是理解業(yè)務數(shù)據(jù)和業(yè)務邏輯蜓竹。特征提取液可以看作用特征描述業(yè)務邏輯的過程蛛碌,特征提取的目標是對業(yè)務進行精確堕澄、全面的描述。
如何尋找特征继准?
我們通常根據(jù)業(yè)務場景尋找相關(guān)特征枉证,例如在美團酒店搜索排序中,描述酒店的特征有酒店的位置移必、上線時間室谚、星級等,描述用戶的特征有用戶的注冊時間崔泵、VIP等級秒赤、地理位置等,這些特征是靜態(tài)的憎瘸,可以從數(shù)據(jù)庫中抽取入篮。除此之外,用戶在App上的瀏覽幌甘、交易等行為記錄中包含了大量的信息潮售,特征抽取則主要是從這些信息抽取出相關(guān)因素痊项,用數(shù)值變量進行表示。常用的統(tǒng)計類特征有計數(shù)特征酥诽,如瀏覽次數(shù)鞍泉、下單次數(shù)等;比率特征肮帐,如點擊率咖驮、轉(zhuǎn)化率等;統(tǒng)計量特征训枢,如價格均值托修、標準差、分位數(shù)恒界、偏度诀黍、峰度等。
探索性數(shù)據(jù)分析
探索性數(shù)據(jù)分析(Exploratory Data Analysis,EDA)是采用各種技術(shù)(大部分為可視化技術(shù))在盡量少的先驗假設條件下仗处,探索數(shù)據(jù)內(nèi)部結(jié)構(gòu)和規(guī)律的一種數(shù)據(jù)分析方法或理念眯勾,也是常用特征工程中發(fā)現(xiàn)好的特征方法。
EDA技術(shù)通称攀模可分為兩類:一類是可視化技術(shù)吃环,如箱形圖、直方圖洋幻、多變量圖郁轻、鏈圖、帕累托圖文留、散點圖好唯、莖葉圖、平行坐標燥翅、讓步比骑篙、多維尺度分析、目標投影追蹤森书、主成分分析靶端、多線性主成分分析、降維凛膏、非線性降維等杨名;另一類是定量技術(shù),如樣本均值猖毫、方差台谍、分位數(shù)、峰度吁断、偏度等趁蕊。
數(shù)值特征
常見的數(shù)值特征的處理方法:
- 截斷:對于連續(xù)型數(shù)值特征镊折,有時候太多的精度可能只是噪聲,所以可以在保留重要信息的前提下對特征進行階段介衔,截斷后的特征也可以看作是類別特征。另外骂因,至于長尾的數(shù)據(jù)炎咖,可以先進行對數(shù)轉(zhuǎn)換,然后進行截斷寒波。
- 二值化:對于一些計數(shù)特征乘盼,例如用戶對一首歌的訪問次數(shù)、用戶對某個商品的瀏覽次數(shù)俄烁,處理這些計數(shù)特征绸栅,首先要考慮的是,保留為原始計數(shù)還是轉(zhuǎn)換為二值變量來標識是否存在或進行分桶操作页屠。
- 分桶:常見的分桶方法有固定寬度的分桶粹胯、分位數(shù)分桶,還可以通過聚類的方式將特征分為多個類別辰企。分桶可以看作是對數(shù)值變量的離散化风纠。
- 縮放:常見的縮放有:標準化縮放、最大最小值縮放牢贸、Box-Cox變換竹观、對數(shù)變換等數(shù)學變換操作。
- 缺失值處理:常用的缺失值處理方法有:默認值填充潜索、均值臭增、中位數(shù)、眾數(shù)填充等竹习,具體看實際模型應用效果做選擇誊抛。
- 特征交叉:數(shù)值特征交叉或組合可以表示數(shù)值特征之間的相互作用,比如加整陌、減芍锚、乘、除等等操作蔓榄,有的模型可以自動處理特征組合并炮,如FM和FFM模型等。特征交叉是為了彌補線性模型無法表達非線性性質(zhì)的不足的補充甥郑,有助于提升線性模型的表達能力逃魄,但是需要很多人工特征工程。
- 非線性編碼:主要是利用將原始特征輸入隨機森林等模型澜搅,再將模型的訓練結(jié)果輸出作為新的特征應用到線性模型中伍俘。
- 行統(tǒng)計量:除了對原始數(shù)值變量進行處理之外邪锌,直接對行向量進行統(tǒng)計也可以作為一類特征,如統(tǒng)計行向量中空值的個數(shù)癌瘾、0的個數(shù)觅丰、正值或負值的個數(shù),以及均值妨退、方差妇萄、最小值、最大值咬荷、偏度冠句、峰度等。
類別特征
常見的類別類別變量的處理方法:
- 自然數(shù)編碼:即將文本或數(shù)值表示的類別變量分配一個編號再作為特征喂給模型幸乒。
- 獨熱編碼:最常見的類別編碼處理方式即One-Hot懦底。
- 分層編碼:例如對于郵政編碼或者身份證號等類別特征,可以取不同位數(shù)進行分層罕扎,然后按層次進行自然數(shù)編碼聚唐,這類編碼一般需要專業(yè)領(lǐng)域知識。
- 散列編碼:對于有些取值特別多的類別特征腔召,使用獨熱編碼得到的特征矩陣非常稀疏拱层,因此在進行獨熱編碼之前可以先對類別進行散列編碼,這樣可以避免特征矩陣過于稀疏宴咧。實際應用中我們可以重復多次選取不同的散列函數(shù)根灯,利用融合的方式來提升模型效果。
- 計數(shù)編碼:計數(shù)編碼是將類別特征用其對應的計數(shù)來代替掺栅,這對線性和非線性模型都有效烙肺。
- 計數(shù)排名編碼:它利用計數(shù)的排名對類別特征進行編碼,這種編碼方式對異常點不敏感氧卧,類別特征取值不會沖突桃笙。
- 目標編碼:它基于目標變量對類別特征進行編碼。例如沙绝,在廣告點擊率預測問題中搏明,我們計算廣告主ID在過去固定一段時間內(nèi)的點擊率,對廣告主ID進行目標編碼闪檬。
- 類別特征之間交叉組合:例如針對城市ID和商品ID兩個類別特征星著,我們可以計算某個城市有多少不同的商品ID以及當前ID出現(xiàn)次數(shù)的分布,從而得到新的數(shù)值特征粗悯,或者計算某個城市出現(xiàn)次數(shù)最多的商品ID,從而得到一個新的類別特征虚循。
-
類別特征和數(shù)值特征之間交叉組合:這類特征通常是在類別特征某個類別中計算數(shù)值特征的一些統(tǒng)計量。例如針對用戶ID,統(tǒng)計過去一段時間內(nèi)在網(wǎng)站上的瀏覽次數(shù) 、購買次數(shù)横缔、以及購買價格的統(tǒng)計量铺遂,如均值、中位數(shù)茎刚、標準差襟锐、最大值和最小值等;針對產(chǎn)品膛锭,統(tǒng)計用戶對產(chǎn)品的評分粮坞、評論次數(shù)、購買次數(shù)泉沾、瀏覽次數(shù)等。
時間特征
在實際應用中妇押,時間往往是一個非常重要的因素跷究,例如用戶在購物網(wǎng)站上的瀏覽、購買敲霍、收藏的時間俊马,產(chǎn)品在購物網(wǎng)站上的上線時間,顧客在銀行的存款和借款時間肩杈、還款時間等柴我。
空間特征
如經(jīng)緯度,可以將經(jīng)緯度作為數(shù)值變量使用扩然,也可以做散列變換為類別特征使用艘儒。
文本特征
對于文本特征,類別特征的處理方法同樣適用夫偶,基于深度學習的自動特征工程效果變的越來越好界睁。但是好的特征仍然具有競爭力。文本特征往往產(chǎn)生特別稀疏的特征矩陣兵拢。常見的文本特征預處理方法有:將字符轉(zhuǎn)為小寫翻斟、分詞、去除無用字符说铃、提取詞根访惜、拼寫糾錯、詞干提取腻扇、標點符號編碼债热、文檔特征、實體插入和提取幼苛、Word2Vec阳柔、文本相似性、去除停止詞蚓峦、TF-IDF舌剂、LDA济锄、LSA等。