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

熱線電話:13121318867

登錄
首頁精彩閱讀統(tǒng)計挖掘那些事:分層抽樣與交叉驗證
統(tǒng)計挖掘那些事:分層抽樣與交叉驗證
2017-03-30
收藏

統(tǒng)計挖掘那些事:分層抽樣與交叉驗證

1留出法(Hold out)與分層抽樣

留出法的意思就是直接將總數(shù)據(jù)D劃分為兩個對立集合,訓(xùn)練集S以及測試集T,我們有S+T=D,以及S交T等于空集;

舉個簡單例子說明,例如我們在研究客戶流失,在集合D中我們有1000個樣本,我們利用隨機抽樣的方法從中抽取800個樣本作為訓(xùn)練集,剩下的200個作為測試集。

劃分出集合后,我們就可以在訓(xùn)練集S上進行模型訓(xùn)練,再在測試集T上評估結(jié)果。假如在訓(xùn)練集中,我們有700個樣本被正確分類,那么分類的正確率就有700/800*100%=87.5%,而在測試集中,假如我們只有150個樣本被正確分類,那么分類的正確率績優(yōu)150/200*100%=75%.

但實際上,這樣的做法是存在一定的問題的。由于我們采取的是完全隨機抽樣的方法,這就可能會由于抽樣劃分的問題而改變了原有的數(shù)據(jù)分布。

例如在上述1000個樣本中,其中有200名客戶被標記為流失,800名客戶被標記為普通客戶。

接下來,我們隨機抽取數(shù)據(jù)集D中的800個樣本作為訓(xùn)練集,200個樣本作為測試。但是由于抽樣的問題,其中有100名流失客戶被分在了訓(xùn)練集,另外的100名客戶被分在了測試集。

讓我們在回顧一下分布比例,原本在數(shù)據(jù)集D中,流失客戶的分布比例是20%,而經(jīng)過劃分后,我們在訓(xùn)練集中的流失比例只有12.5%,而在測試集中流失比例達到50%,顯然,我們的數(shù)據(jù)分布與原有的數(shù)據(jù)分布發(fā)生了極大的改變,而這很有可能給我們的模型訓(xùn)練以及評估帶來非常大的隱患。

因此,為了避免這種情況,在我們使用留出法進行訓(xùn)練集測試集劃分的時候,也會采用分層抽樣的方法。

回到原來的例子,我們可能從200個流失客戶中隨機抽取80%放到訓(xùn)練集,20%放到測試集;再從800個非流失客戶中抽取80%放到訓(xùn)練集,剩下20%又放回到測試集。值得注意的是,劃分訓(xùn)練集以及測試集的方法是多樣的,我們完全可以通過抽樣方法的結(jié)合,幫助我們更好的決定訓(xùn)練集以及測試集的組成;

除了結(jié)合抽樣方式,另外一種改進策略被稱為“重復(fù)抽樣”。它的思想是這樣的,考慮到我們只進行一次隨機抽樣劃分訓(xùn)練集與測試集可能會有存在較大的不穩(wěn)定性,因此我們就將抽樣結(jié)果重復(fù)p次,最后把p次結(jié)果進行加和求平均。

2交叉驗證(Cross Validation)

雖然留出法可以通過分層抽樣解決數(shù)據(jù)分布不等的問題,但是由于我們需要拿出一部分數(shù)據(jù)作為測試,因此總有部分的數(shù)據(jù)不能用于構(gòu)建模型,而一種更好的選擇是交叉驗證,一般也簡稱CV。

交叉驗證法是一個將整體數(shù)據(jù)集平均劃分為k份,先取第一份子集數(shù)據(jù)作為測試集,剩下的k-1份子集數(shù)據(jù)作為訓(xùn)練集進行一次試驗;之后再取第二份子集數(shù)據(jù),剩下的k-1份子集數(shù)據(jù)在進行一次試驗,不斷往復(fù),最后重復(fù)k次的過程,一般我們稱之為k折交叉檢驗,交叉檢驗是我們進行參數(shù)調(diào)整過程中非常重要的一個方法。

一般我們常用十折交叉檢驗,不妨我們設(shè)定k=10進行舉例:

首先我們把總數(shù)據(jù)集劃分為10份,分別成D1,D2,… …,D10;

以上過程,我們稱之為10折交叉檢驗。一般而言,在平常的使用中,10折交叉檢驗比較常見,當然也會有5折交叉檢驗,3折交叉檢驗。

更進一步地,類似于留出法可以采取重復(fù)抽樣,對于交叉檢驗來說同樣也存在著劃分方式的不同情況,因此我們也可以采用不同的劃分方式重復(fù)進行交叉試驗的方法,例如,我們利用不同的劃分方式劃分數(shù)據(jù)5次,每次都是劃分為10折,那我們就稱之為5次10折交叉試驗

特別地,交叉驗證還有一種特殊情況,稱之為留一交叉驗證(leave one Out)。它是指,我們令樣本劃分次數(shù)k等于數(shù)據(jù)集合D的樣本數(shù)量n,即對樣本集合D劃分為n份子集,每份子集只包含一個樣本。這個方法的優(yōu)缺點都十分的明顯,優(yōu)點點我們每次的訓(xùn)練集都與原始數(shù)據(jù)集非常接近,并且也能做到訓(xùn)練集與測試集是對立的,這樣可以保證我們得到的結(jié)果相對比較準確。但相對而言,采取這樣的方式也意味著我們的計算開銷會大大增加。數(shù)據(jù)分析師培訓(xùn)

首先選擇D1數(shù)據(jù)集作為測試集,D2,…D10作為訓(xùn)練集。在訓(xùn)練集上構(gòu)建模型,在測試集上進行模型評估,得到評估記過O1;

之后選擇D2數(shù)據(jù)集作為測試集,D1,D3,…D10作為訓(xùn)練集。在訓(xùn)練集上構(gòu)建模型,在測試集上進行模型評估,得到評估記過O2;

分別抽去D3,D4,…,D10作為測試集,一共重復(fù)10次,并得到10個結(jié)果:O1,O2,…,O10;

將得到10個結(jié)果:O1,O2,…,O10加和取平均,作為最終評估結(jié)果O。

數(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); }