十二種特徵工程相關技術簡介
本文主要包含的目錄如下:
- 一、簡介
- 二、錯誤資料和缺失值
- 三、特徵的種類
- 四、特徵工程技巧
- 4.1、分箱(Binning)
- 4.2、獨熱編碼(One-Hot Encoding)
- 4.3、特徵雜湊(Hashing Trick)
- 4.4、巢狀法(Embedding)
- 4.5、取對數(Log Transformation)
- 4.6、特徵縮放(Scaling)
- 4.7、標準化(Normalization)
- 4.8、特徵互動(Feature Interaction)
- 五、時間特徵處理
- 5.1、分箱法
- 5.2、趨勢線(Treadlines)
- 5.3、事件貼近(Closeness to major events)
- 5.4、時間差(Time Difference)
一、簡介
機器學習的特徵工程是將原始的輸入資料轉換成特徵,以便於更好的表示潛在的問題,並有助於提高預測模型準確性的過程。
找出合適的特徵是很困難且耗時的工作,它需要專家知識,而應用機器學習基本也可以理解成特徵工程。但是,特徵工程對機器學習模型的應用有很大影響,有句俗話叫做“資料和特徵決定了機器學習模型的效能上限”。
二、錯誤資料和缺失值
特徵工程之前需要對 缺失資料 和 錯誤資料 進行處理。錯誤資料可以矯正,有的錯誤是格式錯誤,如日期的格式可能是“201·8-09-19”和“20180920”這種混合的,要統一。
缺失資料的處理:
- 去掉所在行/列
- 取均值
- 中位數
- 眾數
- 使用演算法預測
三、特徵的種類
機器學習的輸入特徵包括幾種:
數值特徵:包括整形、浮點型等,可以有順序意義,或者無序資料。
分類特徵:如ID、性別等。
時間特徵:時間序列如月份、年份、季度、日期、小時等。
空間特徵:經緯度等,可以轉換成郵編,城市等。
文字特徵:文件,自然語言,語句等,這裡暫時不介紹處理。
四、特徵工程技巧
4.1、分箱(Binning)
資料分箱(Binning)是一種資料預處理技術,用於減少輕微觀察錯誤的影響。落入給定小間隔bin的原始資料值由代表該間隔的值(通常是中心值)代替。這是一種量化形式。 統計資料分箱是一種將多個或多或少連續值分組為較少數量的“分箱”的方法。例如,如果您有關於一組人的資料,您可能希望將他們的年齡安排到較小的年齡間隔。對於一些時間資料可以進行分箱操作,例如一天24小時可以分成早晨[5,8),上午[8,11),中午[11,14),下午[14,19),夜晚[10,22),深夜[19,24)和[24,5)。因為比如中午11點和12點其實沒有很大區別,可以使用分箱技巧處理之後可以減少這些“誤差”。
4.2、獨熱編碼(One-Hot Encoding)
獨熱編碼(One-Hot Encoding)是一種資料預處理技巧,它可以把類別資料變成長度相同的特徵。例如,人的性別分成男女,每一個人的記錄只有男或者女,那麼我們可以建立一個維度為2的特徵,如果是男,則用(1,0)表示,如果是女,則用(0,1)。即建立一個維度為類別總數的向量,把某個記錄的值對應的維度記為1,其他記為0即可。對於類別不多的分類變數,可以採用獨熱編碼。
4.3、特徵雜湊(Hashing Trick)
對於類別數量很多的分類變數可以採用特徵雜湊(Hashing Trick),特徵雜湊的目標就是將一個資料點轉換成一個向量。利用的是雜湊函式將原始資料轉換成指定範圍內的雜湊值,相比較獨熱模型具有很多優點,如支援線上學習,維度減小很多燈。具體參考資料特徵處理之特徵雜湊(Feature Hashing)。
4.4、巢狀法(Embedding)
巢狀法(Embedding)是使用神經網路的方法來將原始輸入資料轉換成新特徵,嵌入實際上是根據您想要實現的任務將您的特徵投影到更高維度的空間,因此在嵌入空間中,或多或少相似的特徵在它們之間具有小的距離。 這允許分類器更好地以更全面的方式學習表示。例如,word embedding就是將單個單詞對映成維度是幾百維甚至幾千維的向量,在進行文件分類等,原本具有語義相似性的單詞對映之後的向量之間的距離也比較小,進而可以幫助我們進一步進行機器學習的應用,這一點比獨熱模型好很多。
4.5、取對數(Log Transformation)
取對數就是指對數值做log轉換,可以將範圍很大的數值轉換成範圍較小的區間中。Log轉換對分佈的形狀有很大的影響,它通常用於減少右偏度,使得最終的分佈形狀更加對稱一些。它不能應用於零值或負值。對數刻度上的一個單位表示乘以所用對數的乘數。在某些機器學習的模型中,對特徵做對數轉換可以將某些連乘變成求和,更加簡單,這不屬於這部分範圍了。
如前所述,log轉換可以將範圍很大的值縮小在一定範圍內,這對某些異常值的處理也很有效,例如使用者檢視的網頁數量是一個長尾分佈,一個使用者在短時間內檢視了500個和1000個頁面都可能屬於異常值,其行為可能差別也沒那麼大,那麼使用log轉換也能體現這種結果。
4.6、特徵縮放(Scaling)
特徵縮放是一種用於標準化獨立變數或資料特徵範圍的方法。 在資料處理中,它也稱為資料標準化,並且通常在資料預處理步驟期間執行。特徵縮放可以將很大範圍的資料限定在指定範圍內。由於原始資料的值範圍變化很大,在一些機器學習演算法中,如果沒有標準化,目標函式將無法正常工作。 例如,大多數分類器按歐幾里德距離計算兩點之間的距離。 如果其中一個要素具有寬範圍的值,則距離將受此特定要素的控制。 因此,應對所有特徵的範圍進行歸一化,以使每個特徵大致與最終距離成比例。
應用特徵縮放的另一個原因是梯度下降與特徵縮放比沒有它時收斂得快得多。特徵縮放主要包括兩種:
- 最大最小縮放(Min-max Scaling)
- 標準化縮放(Standard(Z) Scaling)
4.7、標準化(Normalization)
在最簡單的情況下,標準化意味著將在不同尺度上測量的值調整到概念上的共同尺度。在更復雜的情況下,標準化可以指更復雜的調整,其中意圖是使調整值的整個機率分佈對齊。在一般情況下,可能有意將分佈與正態分佈對齊。
在統計學的另一種用法中,標準化上將不同單位的數值轉換到可以互相比較的範圍內,避免總量大小的影響。標準化後的資料對於某些最佳化演算法如梯度下降等也很重要。
4.8、特徵互動(Feature Interaction)
在迴歸模型中加入互動項是一種非常常見的處理方式。它可以極大的擴充迴歸模型對變數之間的依賴的解釋。具體參見迴歸模型中的互動項簡介(Interactions in Regression)。
五、時間特徵處理
幾乎所有的時間特徵都要處理,時間特徵有序列性,其順序有意義。這裡簡單列舉幾種處理方式。
5.1、分箱法
這是最常用的方法,如前面所述。有時候11點與12點之間差別並沒有意義,可以採用上述分箱法處理。
5.2、趨勢線(Treadlines)
多使用趨勢量而不是總量來編碼,例如使用上個星期花銷,上個月花銷,去年的花銷,而不是總花銷。兩個總花銷相同的客戶可能在消費行為上有很大差別。
5.3、事件貼近(Closeness to major events)
假日之前幾天,每個月第一個週六等。這種重要時間節點附近的值可能更有意義。
5.4、時間差(Time Difference)
上次使用者互動的時間到這次使用者互動時間間隔,這種時間差別意義也很大。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2648602/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AlphaGo相關技術:蒙特卡羅方法簡介Go
- JEECMS原始碼基本結構及相關技術簡介原始碼
- SSD的兩種技術簡介
- 隱私計算相關技術介紹
- 論文第2章:相關技術介紹
- Weex技術相關
- OCR技術簡介
- FRAM技術簡介
- Raid 技術簡介AI
- RAID技術簡介AI
- Java相關技術點及技術內容Java
- SpringCloud簡介以及相關元件SpringGCCloud元件
- iOS 端 DNS 相關技術iOSDNS
- java 相關技術與框架Java框架
- 資料科學中的非數學特徵工程技術資料科學特徵工程
- 各大防毒軟體比較與相關防毒技術介紹(轉)防毒
- 大資料技術簡介大資料
- WebSocket原理及技術簡介Web
- 搜尋排序技術簡介排序
- 區塊鏈-技術簡介區塊鏈
- 區塊鏈技術簡介區塊鏈
- oracle 閃回技術簡介Oracle
- Linux HugePage技術簡介Linux
- 影片壓縮技術簡介
- python技術簡介(三)Python
- 【Java初探01】——Java簡介及相關Java
- 初學者 | NLP相關任務簡介
- Docker相關簡介以及使用方法Docker
- 微服務框架相關技術整理微服務框架
- 遊戲伺服器相關技術遊戲伺服器
- 培訓當前相關技術
- 通訊系統之TDM技術和FDM技術簡介
- javascript關於URI相關內容簡單介紹JavaScript
- 元素 offset client scroll 相關屬性簡介client
- 技術簡介——後端開發後端
- 積體電路技術簡介
- 深入React技術棧(1):簡介React
- React與Redux整合技術簡介ReactRedux