1、冗餘:部分特徵相關度太高,消耗計算效能,影響決策樹分支的選擇。
2、雜訊:部分特徵是對**結果有負影響
3、降維:減少特徵數量、降維,使模型泛化能力更強,減少過擬合
4、特徵選擇與降維的關係:特徵選擇只篩選掉原本特徵裡和結果**關係不大的,後者做特徵的計算組合構成新特徵。svd、pca降維也能解決一定的高緯度問題。
x = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
selector = variancethreshold(threshold=(.8 * (1 - .8))) #引數threshold為方差的閾值
selector.fit_transform(x)
>>>array([[2, 0],
[1, 4],
[1, 1]])
(2)對於回歸問題(y連續),可採用:
(3)特徵選擇方式
(4)例子
from sklearn.datasets import load_iris
from sklearn.feature_selection import selectkbest
from sklearn.feature_selection import chi2
iris = load_iris()
x, y = iris.data, iris.target
print(x.shape)
x_new = selectkbest(chi2, k=2).fit_transform(x, y)
print(x_new.shape)
>>>(150, 4)
>>>(150, 2)
pearson相關係數 (pearson correlation):皮爾森相關係數是一種最簡單的,能幫助理解特徵和響應變數之間關係的方法,該方法衡量的是變數之間的線性相關性,結果的取值區間為[-1,1],-1表示完全的負相關,+1表示完全的正相關,0表示沒有線性相關。
import numpy as np
from scipy.stats import pearsonr
np.random.seed(0)
size = 300
x = np.random.normal(0, 1, size)
# pearsonr(x, y)的輸入為特徵矩陣和目標向量,能夠同時計算 相關係數 和p-value.
print("lower noise", pearsonr(x, x + np.random.normal(0, 1, size)))
print("higher noise", pearsonr(x, x + np.random.normal(0, 10, size)))
>>>lower noise (0.7182483686213841, 7.32401731299835e-49)
>>>higher noise (0.057964292079338155, 0.3170099388532475)
from sklearn.feature_selection import rfe
from sklearn.ensemble import randomforestclassifier
from sklearn.datasets import load_iris
rf = randomforestclassifier()
iris=load_iris()
x,y=iris.data,iris.target
rfe = rfe(estimator=rf, n_features_to_select=3)
x_rfe = rfe.fit_transform(x,y)
x_rfe.shape
>>>(150, 3)
from sklearn.feature_selection import selectfrommodel
from sklearn.svm import linearsvc
from sklearn.datasets import load_iris
iris=load_iris()
x,y=iris.data,iris.target
lsvc = linearsvc(c=0.01, penalty="l1", dual=false).fit(x,y)
model = selectfrommodel(lsvc, prefit=true)
x_embed = model.transform(x)
x_embed.shape
(1)變數重要性
(2)共線性
方差膨脹係數 vif:在多元回歸中,我們可以通過計算方差膨脹係數vif來檢驗回歸模型是否存在嚴重的多重共線性問題
v if
=11−
r2
vif = \frac
vif=1−
r21
其中,r
ir_i
ri為自變數 對其餘自變數作回歸分析的負相關係數。方差膨脹係數是容忍度1−r
21-r^2
1−r2
的倒數。
方差膨脹係數vif越大,說明自變數之間存在共線性的可能性越大。一般來講,如果方差膨脹因子超過10,則回歸模型存在嚴重的多重共線性。又根據hair(1995)的共線性診斷標準,當自變數的容忍度大於0.1,方差膨脹係數小於10的範圍是可以接受的,表明白變數之間沒有共線性問題存在。
特徵工程 之 特徵篩選
從現有的m個特徵中選出n個特徵 n m 降低特徵維度減少計算量的同時,使模型效果達到最優。在實際業務中,用於模型中的特徵維度往往很高,幾萬維。如一些ctr預估問題中,特徵維度高達上億維,維度過高會增大模型計算複雜度。但實際情況是,並不是每個特徵對模型的 都是有效果的,所以需要去除一些不必要的特徵,從...
機器學習之特徵篩選
機器學習模型的訓練除了考慮模型的準確性之外,還要考慮計算效能。冗餘的特徵雖然不會影響到模型的效能,但卻會使得計算機做出無用功。特徵篩選與pca這類通過選擇主成分對特徵進行重建的方法有所區別 pca壓縮之後的特徵往往無法解釋 但是特徵篩選不存在對特徵值的修改,而更加側重於尋找那些對模型的效能提公升較大...
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...