99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀一些常見的特征選擇方法
一些常見的特征選擇方法
2018-02-25
收藏

一些常見的特征選擇方法

現(xiàn)實(shí)中產(chǎn)生的特征維度可能很多,特征質(zhì)量參差不齊,不僅會(huì)增加訓(xùn)練過程的時(shí)間,也可能會(huì)降低模型質(zhì)量。因此,提取出最具代表性的一部分特征來參與訓(xùn)練就很重要了。

通常有特征抽取和特征選擇兩種方法。這里分別介紹一下。

特征抽取

特征抽取中最常見的當(dāng)屬PCA了。

PCA

對(duì)于特征之間存在正交關(guān)系,數(shù)據(jù)滿足高斯分布或指數(shù)分布的數(shù)據(jù),作線性變換,使用方差、協(xié)方差去噪,生成新的主元,接下來按重要性排序后取少數(shù)參與訓(xùn)練,達(dá)到減少特征的目的。
這里最重要的思想是把多個(gè)特征進(jìn)行線性變換,使用較少的特征表達(dá)原來多個(gè)特征的主要特點(diǎn)。
由于現(xiàn)實(shí)中取得的數(shù)據(jù)絕大部分滿足高斯分布,所以PCA應(yīng)用極廣。

人臉識(shí)別應(yīng)用
將多幅同一人的人臉圖像進(jìn)行PCA變換,找到代表人臉的主要特征模型。當(dāng)有新的人臉需要識(shí)別時(shí),進(jìn)行相同變換,并與已存在的人臉特征模型進(jìn)行匹配。

R應(yīng)用方法
//PCA方案1:用SVD實(shí)現(xiàn)
pca1<-prcomp(USArrests, scale = TRUE)
//PCA方案2:采用線性代數(shù)中的實(shí)對(duì)稱均值的對(duì)角化實(shí)現(xiàn)
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


上面三行分別為標(biāo)準(zhǔn)差,方差貢獻(xiàn)率,累計(jì)方差貢獻(xiàn)率。
根據(jù)上面的數(shù)據(jù),至PC3時(shí),累計(jì)方差貢獻(xiàn)率已達(dá)0.95664,因此只取前三個(gè)特征已經(jīng)足夠。

特征選擇

特征選擇主要有Filter、Wrapper、Embedded等幾種不同的思路。這里主要寫寫Filter。

卡方檢驗(yàn)

在有不同特征值的影響下,對(duì)兩組目標(biāo)變量作卡方檢驗(yàn),計(jì)算x2值,看兩組數(shù)據(jù)是否有統(tǒng)計(jì)學(xué)上的明顯差異。

這里給出R中的代碼例子。

1、使用卡方檢驗(yàn)判斷患者治療方式對(duì)治療效果的影響

library(vcd)//加載vcd數(shù)據(jù)包
//準(zhǔn)備進(jìn)行卡檢驗(yàn)所需的數(shù)據(jù),提取治療方式與治療效果
mytable<-xtabs(~Treatment+Improved,data=Arthritis)
//對(duì)mytable進(jìn)行卡方檢驗(yàn)
chisq.test(mytable)
以下是輸出結(jié)果

    Pearson's Chi-squared test

    data: mytable
    X-squared = 13.055, df = 2, p-value = 0.001463

p < 0.01,可以判斷患者接受的治療方式對(duì)治療效果有明顯影響。
2、使用卡方檢驗(yàn)判斷患者的性別對(duì)治療效果的影響
library(vcd)//加載vcd數(shù)據(jù)包
//準(zhǔn)備進(jìn)行卡檢驗(yàn)所需的數(shù)據(jù),提取患者性別與治療效果
mytable<-xtabs(~Improved+Sex,data=Arthritis)
//對(duì)mytable進(jìn)行卡方檢驗(yàn)
chisq.test(mytable)
以下是輸出結(jié)果

    Pearson's Chi-squared test

    data: mytable
    X-squared = 4.8407, df = 2, p-value = 0.08889



p > 0.05,可以判斷患者的性別對(duì)治療效果無明顯影響。

上面的實(shí)驗(yàn)中,p值表示不同列之間的相互獨(dú)立的概率。
在1中,由于p值很小,所以拒絕了治療方式與治療效果之間相互獨(dú)立的假設(shè)。
在2中,由于p值不夠小,所以無法拒絕性別與治療效果之間相互獨(dú)立的假設(shè)。

WOE、IV

預(yù)測(cè)目標(biāo)變量所需的信息總量蘊(yùn)含在所有的特征中,某個(gè)特征所蘊(yùn)含信息量(IV值)越大,則越重要。
IV值的計(jì)算以WOE為基礎(chǔ)。
詳細(xì)的概念、原理及公式可以參考這篇文章
數(shù)據(jù)挖掘模型中的IV和WOE詳解:http://www.3lll3.cn/view/24633.html


接下來看看R中的應(yīng)用

//安裝和加載woe包。
install.packages("woe")
library(woe)
//計(jì)算數(shù)據(jù)集mtcars中,cyl這一列對(duì)目標(biāo)變量am的woe值和iv值。
woe(Data=mtcars,"cyl",FALSE,"am",10,Bad=0,Good=1)
以下是輸出結(jié)果
    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

//計(jì)算數(shù)據(jù)集mtcars中,mpg這一列對(duì)目標(biāo)變量am的woe值和iv值。
woe(Data=mtcars,"mpg",TRUE,"am",10,Bad=0,Good=1)
以下是輸出結(jié)果
    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

信息熵與信息增益

信息的熵,表示不確定性。
在一個(gè)數(shù)據(jù)集中,先對(duì)目標(biāo)分類變量進(jìn)行熵的計(jì)算,再對(duì)目標(biāo)分類變量按某一個(gè)特征值進(jìn)行分組后進(jìn)行一次熵的計(jì)算,兩次熵值之差就是該特征值的信息增益。特征值的信息增益越大,表示該特征值的重要性越高。
這里有一個(gè)前提,即,目標(biāo)變量是一個(gè)分類變量。

這里使用R語(yǔ)言代碼作個(gè)說明
一個(gè)老太太去買菜,市場(chǎng)上可供選擇的東西有以下幾種:西紅柿(1)、白菜(2)、豆腐(3)、咸菜(4)、饅頭(5)、西瓜(6)、櫻桃(7)、蘋果(8)、豬肉(10)、牛肉(11)、羊肉(12)。不給出任何其它信息之前,我們無法判斷老太太今天會(huì)買什么菜。此時(shí)熵值最大,為

install.packages("entropy")
library(entropy)
y<-c(1,2,3,4,5,6,7,8,9,10,11,12)
//使用max likehood方式計(jì)算熵值
entropy(y,method = "ML")//輸出值為:2.327497
接下來,在給出4條老太太買菜習(xí)慣的信息后,我們發(fā)現(xiàn)老太太今天只可能會(huì)買櫻桃或西瓜。
此時(shí)不確定性變小,熵值變小,為:

y<-c(6,7)
entropy(y,method = "ML")//輸出值為:0.6901857
因此,4條老太太買菜習(xí)慣的信息增閃為:2.327497-0.6901857=1.637311
Gini指數(shù)

這個(gè)指標(biāo)同信息增益原理類似,哪個(gè)特征對(duì)Gini指數(shù)貢獻(xiàn)大,哪個(gè)特征重要。

給出R語(yǔ)言實(shí)現(xiàn)
不給出任何信息時(shí),Gini指數(shù)為:

install.packages("ineq")
library(ineq)
y<-c(1,2,3,4,5,6,7,8,9,10,11,12)
Gini(y)//輸出結(jié)果為:0.3055556
給出4個(gè)買菜習(xí)慣信息后,Gini指數(shù)為:

y<-c(6,7)
Gini(y)//輸出結(jié)果為:0.03846154
相關(guān)性
數(shù)據(jù)集中的兩個(gè)特征之間存在共線性,即較強(qiáng)的線性關(guān)系,就存在冗余,在最終訓(xùn)練時(shí)只使用其中一個(gè)就足夠。
這里列出一些衡量相關(guān)性的值。

1、協(xié)方差與相關(guān)系數(shù)。
這兩個(gè)值描述的是兩個(gè)變量與各自期望值之間的誤差是否變動(dòng)一致,它們之間可以互相轉(zhuǎn)換,一般使用相關(guān)系數(shù)較多。相關(guān)系數(shù)范圍為[-1,1],其中-1代表完全負(fù)相關(guān),1代表完全正相關(guān),0代表完全獨(dú)立。

這里列出R應(yīng)用方法

//計(jì)算兩列數(shù)據(jù)之間的相關(guān)系數(shù)
cor(mtcars$cyl,mtcars$disp,method = "pearson")//輸出值為:0.9020329,表示兩列數(shù)據(jù)正相關(guān)
cor(mtcars$mpg,mtcars$disp,method = "pearson")//輸出值為:-0.8475514,表示負(fù)相關(guān)
//計(jì)算兩列數(shù)據(jù)之間的協(xié)方差
cov(mtcars$cyl,mtcars$disp,method = "pearson")//輸出值為:199.6603
cov(mtcars$mpg,mtcars$disp,method = "pearson")//輸出值為:-633.0972

method取值有三種:
pearson:適用于連續(xù)變量,如分析血壓值和年齡的相關(guān)性。
spearman:適用于順序數(shù)據(jù),如分析數(shù)學(xué)和語(yǔ)言成績(jī)排名相關(guān)性。
kendall:適用于有序分類變量,如分析疼痛級(jí)別分類和病情嚴(yán)重程序分類。
2、偏相關(guān)
當(dāng)數(shù)據(jù)集中的特征很多時(shí),兩個(gè)特征之間的相關(guān)性會(huì)受到很多其它特征的影響。在排除掉其它特征的影響之后,計(jì)算出來的兩個(gè)特征的相關(guān)性系數(shù),叫偏相關(guān)系數(shù)。
特征z固定的前提下,分析x、y的相關(guān)性,得到的是一階偏相關(guān)系數(shù),在特征z、q固定的前提下,得到的是二階偏相關(guān)系數(shù)。
這里給出R應(yīng)用
library(ggm)
data("marks")//加載marks數(shù)據(jù)集
var(marks)//計(jì)算marks數(shù)據(jù)集的方差矩陣
//計(jì)算固定analysis,statistics時(shí),vectors和algebra的二階偏相關(guān)系數(shù)
pcor(c("vectors", "algebra", "analysis", "statistics"), var(marks))//輸出結(jié)果為:0.388203
pcor(c(2,3,4,5), var(marks))//與上一句代碼意義相同
//偏相關(guān)系數(shù)的顯著性檢驗(yàn),入?yún)⒎謩e為:偏相關(guān)系數(shù),固定變量個(gè)數(shù),樣本量
pcor.test(0.388203,2,dim(marks)[1])//輸出值p=0.0002213427,p<0.01,因此,在固定analysis,statistics時(shí),vectors和algebra兩個(gè)特征存在明顯偏相關(guān)性
Lasso
Lasso的基本思想是在回歸系數(shù)的絕對(duì)值之和小于一個(gè)常數(shù)的約束條件下,使殘差平方和最小化,從而能夠產(chǎn)生某些嚴(yán)格等于0的回歸系數(shù),達(dá)到特征選擇的目的。
這里給出R中的應(yīng)用例子
data(diabetes)//加載數(shù)據(jù)集diabetes
//使用lasso進(jìn)行特征選擇
lars(diabetes$x,diabetes$y,type="lasso")

輸出結(jié)果為:

    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行即時(shí)順序編號(hào)。

以下方法可以得到各特征的多重共線性:

data<-lars(diabetes$x,diabetes$y)
summary(data)

輸出結(jié)果為:

    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的值從上往下對(duì)應(yīng)變化,Cp值越小,表示回歸模型越精確。
如果我們?nèi)∏?個(gè)特征,則cp值為86.7411。如果取前7個(gè)特征,則Cp值為8.8775,達(dá)到最小。
因此,計(jì)算量允許的范圍內(nèi),取前7個(gè)特征進(jìn)行訓(xùn)練,得到的回歸模型最精確。如果要嚴(yán)格控制計(jì)算量,則取前3個(gè)特征即可。



數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }