在資料探勘工作中,通常處理的是乙個包含大量特徵且含義未知的資料集,並基於該資料集挖掘到有用的特徵。那麼這裡面一般是四個步驟:特徵工程、特徵選擇、模型構造、模型融合。特徵工程主要是清洗特徵、刪除無用特徵和構造新特徵,經過特徵工程這個過程我們可能會得到大量的特徵;而特徵選擇的目的就是從這大量的特徵中挑選出優秀的特徵,因為好的特徵更能夠提公升模型效能,同時也通過降維達到了避免維度災難的目的。本文主要利用sklearn 這個工具來實現常用的特徵選擇方法。
特徵選擇有兩個功能:1.減少特徵數量,起到降維作用,使泛化能力更強;2.減少過擬合,增強對特徵和特徵值之間的理解
1.1 皮爾森相關係數
皮爾森相關係數是一種最簡單的、能幫助理解特徵和標籤變數之間關係的方法。它衡量的是變數之間的線性相關性,其值在-1,1 之間;其中1 代表變數完全正相關,-1 代表完全負相關。
例如 a = [2,4,6,8] b = [4,8,12,16] c= [-4,-8,-12,-16] 使用scipy 來求解
import numpy as np
import scipy as sc
a = np.array(a)
b = np.array(b)
c = np.array(c)
print sc.stats.pearsonr(a,b)#(1.0,0.0)第乙個數代表pearson相關係數
print sc.stats.pearsonr(a,c)#(-1.0,0.0)
pearson相關係數的乙個明顯缺陷是只對線性關係敏感。如果關係是非線性的,即便兩個變數具有一一對應的關係,pearson相關性也可能會接近0。
1.2 最大資訊係數
它首先尋找一種最優的離散化方式,然後把互資訊取值轉化為一種度量方式。區間為[0,1] 可以使用sklearn下的 minepy 去求解
1.3 距離相關係數
距離相關係數是為了克服pearson 相關係數的弱點而生的。即是pearson 的係數為0 ,我們仍然不能說它們是無關的,因為可能是非線性相關。而若距離相關係數為0,那可以說兩變數無關。
儘管有mic 和距離相關係數存在,但當變數之間的關係接近線性相關時,pearson 相關係數仍然是不可替代的指標。乙個原因是pearson 相關係數計算速度快,適合於處理大規模資料;另乙個原因是pearson 相關係數的範圍為[-1,1],而mic係數為[0,1],所以它更能表達豐富的關係。
參考文獻
基於sklearn的特徵篩選
樣本中的有些特徵是所謂的 優秀特徵 使用這些特徵可以顯著的提高泛化能力。而有些特徵在樣本類別區分上並不明顯,在訓練中引入這些特徵會導致算力的浪費 另外有些特徵對樣本的分類有反作用,引入這些特徵反而會導致泛化能力下降 與pca 主成分分析 不同,特徵篩選不修改特徵值,而是尋找對模型效能提公升較大的盡量...
sklearn之特徵選擇
嵌入法是一種讓演算法自己決定使用哪些特徵的方法,即特徵選擇和演算法訓練同時進行。在使用嵌入法時,我們先使用某些機器學習的演算法和全部特徵對模型進行訓練,得到各個特徵的權值係數,根據權值係數從大到小選擇特徵。這些權值係數往往代表了特徵對於模型的某種貢獻或某種重要性,比如決策樹和樹的整合模型中的feat...
sklearn學習 特徵選擇
當特徵特別多的時候,且有冗餘的情況下,對特徵進行選擇不僅能使訓練速度加快,還可以排除一些負面特徵的干擾。sklearn的feature seletion提供了它許多特徵選取函式,目前包括單變數選擇方法和遞迴特徵消除演算法。它們均為轉化器,故在此不舉例說明如何使用。除了使用feature seleti...