「資料與特徵決定了乙個模型的上限,而模型演算法的目的則為逼近這個上限」
對於特徵一般的處理流程是|:特徵提取->特徵清洗–>特徵處理–>特徵監控
無量綱化使得不同規格的資料轉換成為到同一規格。常見的無量綱化處理包括標準化與區間縮放法;一般而言,標準化的前提是特徵服從正態分佈,經過標準化後,將其轉換為標準正態分佈。區間縮放法利用了邊界值的資訊,將特徵的取值區間縮放到某乙個特定的範圍,例如:[0,1]區間。
標準化變換之後,各個維度的特徵的均值是0,方差為1,也叫作z-score規範化,計算公式如下:x』=
(x–x
(e))
/s
x』 = (x – x(e)) /s
x』=(x–
x(e)
)/s
//標準化
import numpy as np
from sklearn import preprocessing
x = np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])
x_scaled = preprocessing.scale(x)
print(x_scaled)
區間縮放法又被稱之為最大-最小標準化,最大-最小標準化是對原始資料進行線性變換,變換到[0,1 ],計算公式為:x′=
(x−m
in)/
(max
−min
)x' = (x - min) / (max - min)
x′=(x−
min)
/(ma
x−mi
n)
//區間縮放
import numpy as np
from sklearn import preprocessing
x = np.array([[1.,-1.,2.,],[2.,0.,0.],[0.,1.,-1.]])
x_max_min_scaled = preprocessing.minmaxscaler().fit_transfrom(x)
print(x_max_min_scaled)
很多情況下,對資料進行非線性的變換也是乙個很好的特徵處理方法,常用的非線性變換有基於多項式,基於指數函式和基於對數函式的非線性變換。
一般而言,一般對數變換後的特徵分布更加平穩。對數變換能過很好的解決隨著自變數的增加,因變數的方差增大的問題。另外一方面,對非線性的資料通過對數變換,轉換成為線性資料,便於利用線性模型進行相關的操作。
無監督的離散化
分箱:等寬分箱:就是根據箱子的個數得出固定的寬度。
等頻分箱:就是使得每乙個箱子中的資料個數是一樣的
在等頻或者等寬分箱完成後,可以用箱子中的平均值或者說是中位數代替。其中,等寬分箱法對於異常點比較敏感,而等頻分箱法有時候會將具有相同標籤特徵的屬性分到不同的箱子裡面。
基於聚類的離散化:類似於knn演算法,就是分成不同的簇
有監督的離散化:
基於熵的離散化:類似於決策樹的思想。是一種有監督的,自頂向下的**技術。
基於卡方的離散化:是一種有監督的,自底向上的技術。(合併的方法)
特徵雜湊的目標是把原始的高維特徵向量壓縮成為較低維的特徵向量,且盡量不損失原始特徵的表達能力,是一種快速且比較節省空間的特徵向量化方法。
特徵處理 數值特徵處理
專案工作流程 標準化標籤,將標籤值統一轉換成range 標籤值個數 1 範圍內 簡單來說 labelencoder 是對不連續的數字或者文字進行編號 one hot的基本思想 將離散型特徵的每一種取值都看成一種狀態,若你的這一特徵中有n個不相同的取值,那麼我們就可以將該特徵抽象成n種不同的狀態,on...
推薦系統中的ID特徵為什麼有用?
常見的id類特徵有使用者特徵user id,物品特徵item id等,通常來說這類特徵都是人為按順序編碼的特徵,並不能反映使用者或者物品的自然屬性特徵。但是在很多推薦相關的文章,都有提到使用這類特徵,而且似乎還非常重要,並且除了推薦系統,在計算廣告 反欺詐風控模型裡都有成功的案例。這是為什麼呢?一 ...
特徵預處理,特徵選擇
統一量綱 特徵規格不一樣,不能放在一起比較。主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要 主要有標準化,區間放縮,歸一化。標準化 標準化,均值為0,方差為1 from sklearn.preprocessing import standardscaler 標準化,返回值...