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

熱線電話:13121318867

登錄
首頁精彩閱讀二分類模型中,如何應(yīng)對分類自變量取值過多
二分類模型中,如何應(yīng)對分類自變量取值過多
2016-11-28
收藏

二分類模型中,如何應(yīng)對分類自變量取值過多

這是個信息無限充裕的年代,是個數(shù)據(jù)爆炸的年代,也是數(shù)據(jù)過載的年代。大數(shù)據(jù)之大,不僅在于體量巨大,更在于結(jié)構(gòu)和內(nèi)容的復(fù)雜,因此如何處理好數(shù)據(jù)一直是我們工作少為人知、卻也無法忽視的重點。本期,我們就以二分類模型中自變量取值過載為例,給大家講講應(yīng)對之道~

在二分類建模過程中,難免會遇到分類自變量取值過多的情況,比如用來表示觀測值地域?qū)傩缘淖宰兞浚谖覈词惯x用省級層面的信息,最多也可達31種取值。處理分類自變量時,最常用的方法是將其拆分為若干取值為“0”和”1”的二分變量,這樣就會導(dǎo)致模型的維度過多,自由度降低,不僅對建模樣本提出了更高的要求,還增加了模型參數(shù)估計的難度和模型的訓(xùn)練時間。因此,今天我們基于自己的經(jīng)驗,在這里談?wù)剬@個問題的處理思路。

一、利用聚類算法進行類別合并

既然這個問題是分類變量取值過多導(dǎo)致的,那么,最直接的解決思路顯然就是對類別進行合并。當(dāng)然,合并不能是主觀隨意的,而應(yīng)該是基于定量分析之后的結(jié)果。為了便于敘述,不妨假設(shè)某個分類型自變量X有A1,A2,…,An等取值,我們可以計算出每個類別中實際的Y=1比例。具體計算過程如下表所示:

然后就可以利用聚類分析來進行類別的合并了。第一種思路是采用系統(tǒng)聚類法,將A1,A2,…,An看做聚類的對象,各個類別的Y=1比例作為指標(biāo)進行聚類,即有n個聚類對象,1個聚類指標(biāo)。聚類結(jié)束之后,將聚為一類的類別進行合并。當(dāng)然,究竟聚為幾類最合適,還可以采用一些指標(biāo)來輔助確定,比如SAS軟件中的R-square、半偏態(tài)R-square以及偽F統(tǒng)計量等,都可以用來輔助確定類的個數(shù)。


第二種思路就是采用有序樣品的聚類,長期關(guān)注我們公眾號的小伙伴可能還記得,我們在前期的文章中曾經(jīng)利用這個方法來進行數(shù)據(jù)離散化,這里我們利用這個方法進行類別的合并,處理起來也比較簡單,將各個類別按照Y=1比例從小到大的順序進行排列,再利用Fisher算法將Y=1比例相近的類別進行合并。這樣做最大的好處是我們可以根據(jù)信息損失,得到最優(yōu)的類別個數(shù)和相應(yīng)的最優(yōu)合并方法。

二、利用決策樹進行類別合并

利用決策樹進行類別合并時,首先需要選擇一個衡量分類變量之間相關(guān)性或影響程度的指標(biāo),我們可以使用在前期的文章中曾經(jīng)介紹過IV信息量或一致性比率。這種類別合并的基本步驟可以表示為:

1、將各個類別按照Y=1比例從小到大的順序進行排列,并將所有類別視為一個組;

2、利用IV信息量(或者一致性比率),找出最優(yōu)的二元分割方法,使得被選中的分組方案是所有分組方案中預(yù)測能力最強的,這樣將所有類別分成了兩組,不妨假設(shè)為組1和組2;

3、將組1按照上一步同樣的步驟分為組11和組12,組2分為組21和組22。再利用IV信息量比較組1和組2的最優(yōu)分組的預(yù)測能力大小,取預(yù)測能力最強的組進行分裂,這樣將所有類別分成了三組,不妨假設(shè)為組1、組2和組3。

然后,按照第3步的做法不斷分裂下去,直到分裂形成的組數(shù)達到預(yù)先設(shè)定的個數(shù)為止。如果因變量是二分變量,可以使用IV信息量或一致性比率;如果因變量的取值個數(shù)大于2,那么就可以使用一致性比率來進行預(yù)測力的判斷?!禨AS編程與數(shù)據(jù)挖掘商業(yè)案例》一書種提供了一份觀測值為32264的數(shù)據(jù)集,其中因變量是二分變量,有一個分類自變量LOCATION有19種可能的取值,我們利用這里介紹的算法對變量LOCATION進行合并,將合并后的類別個數(shù)設(shè)定為5,下圖是分裂的具體過程:

其中原始的19個變量記為B1,B2,…,B19,經(jīng)過4次分裂,19個取值最后被分為5個組,圓圈里面的表示的就是這5個組里面包括的原始變量名稱,每個方框下面對應(yīng)的數(shù)字表示該步分裂所對應(yīng)的順序。由于采用的是自上而下的分裂算法,很顯然,分裂后保留的組數(shù)越多,算法所耗費的時間也就越長。

三、WOE編碼

WOE就是所謂的證據(jù)權(quán)重(weight of evidence),該方法計算出分類變量每一個類別的WOE值,這樣就可以用這個WOE值組成的新變量來替代原來的分類變量。由于新變量是數(shù)值型變量,因此該方法實際是將分類變量轉(zhuǎn)化為數(shù)值變量,不用再生成虛擬變量,避免了由此產(chǎn)生的維度過多的問題。我們用下面的表格來表示W(wǎng)OE值的計算過程:

注:LN表示自然對數(shù)函數(shù)。

從上表可以看出,WOE值實際上是該類別中Y=1與Y=0比例之比的自然對數(shù)。需要注意的是,該表的Y=1比例與上一張表的Y=1比例計算方式是不一樣的,上一張表的Y=1比例是該類別中Y=1觀測個數(shù)與該類別所有觀測個數(shù)之比,而這一張表示該類別Y=1觀測個數(shù)與樣本中所有Y=1觀測個數(shù)之比。WOE編碼法在利用logistic模型建立信用評分卡時應(yīng)用較多。

四、小結(jié)

比較而言,前兩種類別合并的方法,雖然減少了類別個數(shù),但是仍然需要生成若干二分變量;當(dāng)使用一致性比率進行預(yù)測力判斷時,第二種方法也適用于多分類模型;第三種方法將分類變量直接轉(zhuǎn)化為數(shù)值型變量,模型簡潔,易于操作。但是如果出現(xiàn)類別中Y=1或者Y=0個數(shù)為零的情況,將導(dǎo)致WOE值無法計算。因此,也可以將兩種方法結(jié)合起來,先進行簡單的類別合并,避免Y=1或者Y=0個數(shù)為零的情況,然后再進行WOE編碼。

總之,數(shù)據(jù)的世界是日益復(fù)雜的,大數(shù)據(jù)尤其如此。在面對繁復(fù)的海量數(shù)據(jù)時,我們需要很多方法和經(jīng)驗,將數(shù)據(jù)轉(zhuǎn)化成更簡潔有效的信息;希望大家能從本文中得到一點啟發(fā)。

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

若不方便掃碼,搜微信號: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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }