
一些常見的特征選擇方法
現實中產生的特征維度可能很多,特征質量參差不齊,不僅會增加訓練過程的時間,也可能會降低模型質量。因此,提取出最具代表性的一部分特征來參與訓練就很重要了。
特征抽取
對于特征之間存在正交關系,數據滿足高斯分布或指數分布的數據,作線性變換,使用方差、協方差去噪,生成新的主元,接下來按重要性排序后取少數參與訓練,達到減少特征的目的。
這里最重要的思想是把多個特征進行線性變換,使用較少的特征表達原來多個特征的主要特點。
由于現實中取得的數據絕大部分滿足高斯分布,所以PCA應用極廣。
人臉識別應用
將多幅同一人的人臉圖像進行PCA變換,找到代表人臉的主要特征模型。當有新的人臉需要識別時,進行相同變換,并與已存在的人臉特征模型進行匹配。
R應用方法
//PCA方案1:用SVD實現
pca1<-prcomp(USArrests, scale = TRUE)
//PCA方案2:采用線性代數中的實對稱均值的對角化實現
pca2<-princomp(USArrests,cor=T)
summary(pc1)
summary的輸出為:
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.5749 0.9949 0.59713 0.41645
Proportion of Variance 0.6201 0.2474 0.08914 0.04336
Cumulative Proportion 0.6201 0.8675 0.95664 1.00000
上面三行分別為標準差,方差貢獻率,累計方差貢獻率。
根據上面的數據,至PC3時,累計方差貢獻率已達0.95664,因此只取前三個特征已經足夠。
特征選擇
特征選擇主要有Filter、Wrapper、Embedded等幾種不同的思路。這里主要寫寫Filter。
卡方檢驗
在有不同特征值的影響下,對兩組目標變量作卡方檢驗,計算x2值,看兩組數據是否有統計學上的明顯差異。
這里給出R中的代碼例子。
1、使用卡方檢驗判斷患者治療方式對治療效果的影響
library(vcd)//加載vcd數據包
//準備進行卡檢驗所需的數據,提取治療方式與治療效果
mytable<-xtabs(~Treatment+Improved,data=Arthritis)
//對mytable進行卡方檢驗
chisq.test(mytable)
以下是輸出結果
Pearson's Chi-squared test
data: mytable
X-squared = 13.055, df = 2, p-value = 0.001463
p < 0.01,可以判斷患者接受的治療方式對治療效果有明顯影響。
2、使用卡方檢驗判斷患者的性別對治療效果的影響
library(vcd)//加載vcd數據包
//準備進行卡檢驗所需的數據,提取患者性別與治療效果
mytable<-xtabs(~Improved+Sex,data=Arthritis)
//對mytable進行卡方檢驗
chisq.test(mytable)
以下是輸出結果
Pearson's Chi-squared test
data: mytable
X-squared = 4.8407, df = 2, p-value = 0.08889
p > 0.05,可以判斷患者的性別對治療效果無明顯影響。
上面的實驗中,p值表示不同列之間的相互獨立的概率。
在1中,由于p值很小,所以拒絕了治療方式與治療效果之間相互獨立的假設。
在2中,由于p值不夠小,所以無法拒絕性別與治療效果之間相互獨立的假設。
WOE、IV
預測目標變量所需的信息總量蘊含在所有的特征中,某個特征所蘊含信息量(IV值)越大,則越重要。
IV值的計算以WOE為基礎。
詳細的概念、原理及公式可以參考這篇文章
數據挖掘模型中的IV和WOE詳解:http://www.ruiqisteel.com/view/24633.html
接下來看看R中的應用
//安裝和加載woe包。
install.packages("woe")
library(woe)
//計算數據集mtcars中,cyl這一列對目標變量am的woe值和iv值。
woe(Data=mtcars,"cyl",FALSE,"am",10,Bad=0,Good=1)
以下是輸出結果
BIN BAD GOOD TOTAL BAD% GOOD% TOTAL% WOE IV BAD_SPLIT GOOD_SPLIT
1 4 3 8 11 0.158 0.615 0.344 135.9 0.621 0.273 0.727
2 6 4 3 7 0.211 0.231 0.219 9.1 0.002 0.571 0.429
3 8 12 2 14 0.632 0.154 0.438 -141.2 0.675 0.857 0.143
//計算數據集mtcars中,mpg這一列對目標變量am的woe值和iv值。
woe(Data=mtcars,"mpg",TRUE,"am",10,Bad=0,Good=1)
以下是輸出結果
BIN MIN MAX BAD GOOD TOTAL BAD% GOOD% TOTAL% WOE IV BAD_SPLIT GOOD_SPLIT
1 1 10.4 14.3 4 0 4 0.211 0.000 0.125 -Inf Inf 1.00 0.00
2 2 14.7 15.2 3 1 4 0.158 0.077 0.125 -71.9 0.058 0.75 0.25
3 3 15.5 17.3 3 1 4 0.158 0.077 0.125 -71.9 0.058 0.75 0.25
4 4 17.8 19.2 4 0 4 0.211 0.000 0.125 -Inf Inf 1.00 0.00
5 5 19.2 21.0 1 3 4 0.053 0.231 0.125 147.2 0.262 0.25 0.75
6 6 21.4 22.8 2 2 4 0.105 0.154 0.125 38.3 0.019 0.50 0.50
7 7 22.8 27.3 2 2 4 0.105 0.154 0.125 38.3 0.019 0.50 0.50
8 8 30.4 33.9 0 4 4 0.000 0.308 0.125 Inf Inf 0.00 1.00
信息熵與信息增益
信息的熵,表示不確定性。
在一個數據集中,先對目標分類變量進行熵的計算,再對目標分類變量按某一個特征值進行分組后進行一次熵的計算,兩次熵值之差就是該特征值的信息增益。特征值的信息增益越大,表示該特征值的重要性越高。
這里有一個前提,即,目標變量是一個分類變量。
這里使用R語言代碼作個說明
一個老太太去買菜,市場上可供選擇的東西有以下幾種:西紅柿(1)、白菜(2)、豆腐(3)、咸菜(4)、饅頭(5)、西瓜(6)、櫻桃(7)、蘋果(8)、豬肉(10)、牛肉(11)、羊肉(12)。不給出任何其它信息之前,我們無法判斷老太太今天會買什么菜。此時熵值最大,為
install.packages("entropy")
library(entropy)
y<-c(1,2,3,4,5,6,7,8,9,10,11,12)
//使用max likehood方式計算熵值
entropy(y,method = "ML")//輸出值為:2.327497
接下來,在給出4條老太太買菜習慣的信息后,我們發現老太太今天只可能會買櫻桃或西瓜。
此時不確定性變小,熵值變小,為:
y<-c(6,7)
entropy(y,method = "ML")//輸出值為:0.6901857
因此,4條老太太買菜習慣的信息增閃為:2.327497-0.6901857=1.637311
Gini指數
這個指標同信息增益原理類似,哪個特征對Gini指數貢獻大,哪個特征重要。
給出R語言實現
不給出任何信息時,Gini指數為:
install.packages("ineq")
library(ineq)
y<-c(1,2,3,4,5,6,7,8,9,10,11,12)
Gini(y)//輸出結果為:0.3055556
給出4個買菜習慣信息后,Gini指數為:
y<-c(6,7)
Gini(y)//輸出結果為:0.03846154
相關性
數據集中的兩個特征之間存在共線性,即較強的線性關系,就存在冗余,在最終訓練時只使用其中一個就足夠。
這里列出一些衡量相關性的值。
1、協方差與相關系數。
這兩個值描述的是兩個變量與各自期望值之間的誤差是否變動一致,它們之間可以互相轉換,一般使用相關系數較多。相關系數范圍為[-1,1],其中-1代表完全負相關,1代表完全正相關,0代表完全獨立。
這里列出R應用方法
//計算兩列數據之間的相關系數
cor(mtcars$cyl,mtcars$disp,method = "pearson")//輸出值為:0.9020329,表示兩列數據正相關
cor(mtcars$mpg,mtcars$disp,method = "pearson")//輸出值為:-0.8475514,表示負相關
//計算兩列數據之間的協方差
cov(mtcars$cyl,mtcars$disp,method = "pearson")//輸出值為:199.6603
cov(mtcars$mpg,mtcars$disp,method = "pearson")//輸出值為:-633.0972
method取值有三種:
pearson:適用于連續變量,如分析血壓值和年齡的相關性。
spearman:適用于順序數據,如分析數學和語言成績排名相關性。
kendall:適用于有序分類變量,如分析疼痛級別分類和病情嚴重程序分類。
2、偏相關
當數據集中的特征很多時,兩個特征之間的相關性會受到很多其它特征的影響。在排除掉其它特征的影響之后,計算出來的兩個特征的相關性系數,叫偏相關系數。
在特征z固定的前提下,分析x、y的相關性,得到的是一階偏相關系數,在特征z、q固定的前提下,得到的是二階偏相關系數。
這里給出R應用
library(ggm)
data("marks")//加載marks數據集
var(marks)//計算marks數據集的方差矩陣
//計算固定analysis,statistics時,vectors和algebra的二階偏相關系數
pcor(c("vectors", "algebra", "analysis", "statistics"), var(marks))//輸出結果為:0.388203
pcor(c(2,3,4,5), var(marks))//與上一句代碼意義相同
//偏相關系數的顯著性檢驗,入參分別為:偏相關系數,固定變量個數,樣本量
pcor.test(0.388203,2,dim(marks)[1])//輸出值p=0.0002213427,p<0.01,因此,在固定analysis,statistics時,vectors和algebra兩個特征存在明顯偏相關性
Lasso
Lasso的基本思想是在回歸系數的絕對值之和小于一個常數的約束條件下,使殘差平方和最小化,從而能夠產生某些嚴格等于0的回歸系數,達到特征選擇的目的。
這里給出R中的應用例子
data(diabetes)//加載數據集diabetes
//使用lasso進行特征選擇
lars(diabetes$x,diabetes$y,type="lasso")
輸出結果為:
Call:
lars(x = diabetesx,y=diabetesy)
R-squared: 0.518
Sequence of LASSO moves:
bmi ltg map hdl sex glu tc tch ldl age hdl hdl
Var 3 9 4 7 2 10 5 8 6 1 -7 7
Step 1 2 3 4 5 6 7 8 9 10 11 12
Var行即是lasso給出的特征選擇順序,Setp行即時順序編號。
以下方法可以得到各特征的多重共線性:
data<-lars(diabetes$x,diabetes$y)
summary(data)
輸出結果為:
LARS/LASSO
Call: lars(x = diabetesx,y=diabetesy)
Df Rss Cp
0 1 2621009 453.7263
1 2 2510465 418.0322
2 3 1700369 143.8012
3 4 1527165 86.7411
4 5 1365734 33.6957
5 6 1324118 21.5052
6 7 1308932 18.3270
7 8 1275355 8.8775
8 9 1270233 9.1311
9 10 1269390 10.8435
10 11 1264977 11.3390
11 10 1264765 9.2668
12 11 1263983 11.0000
按data中Step行指定的順序,依次選取特征,則Cp的值從上往下對應變化,Cp值越小,表示回歸模型越精確。
如果我們取前3個特征,則cp值為86.7411。如果取前7個特征,則Cp值為8.8775,達到最小。
因此,計算量允許的范圍內,取前7個特征進行訓練,得到的回歸模型最精確。如果要嚴格控制計算量,則取前3個特征即可。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24