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

熱線電話:13121318867

登錄
首頁精彩閱讀訓練集、驗證集和測試集的意義
訓練集、驗證集和測試集的意義
2018-03-28
收藏

訓練集、驗證集和測試集的意義

有監(jiān)督機器學習中,經(jīng)常會說到訓練集(train)、驗證集(validation)和測試集(test),這三個集合的區(qū)分可能會讓人糊涂,特別是,有些讀者搞不清楚驗證集和測試集有什么區(qū)別。

I. 劃分

如果我們自己已經(jīng)有了一個大的標注數(shù)據(jù)集,想要完成一個有監(jiān)督模型的測試,那么通常使用均勻隨機抽樣的方式,將數(shù)據(jù)集劃分為訓練集、驗證集、測試集,這三個集合不能有交集,常見的比例是8:1:1,當然比例是人為的。從這個角度來看,三個集合都是同分布的。

如果是做比賽,官方只提供了一個標注的數(shù)據(jù)集(作為訓練集)以及一個沒有標注的測試集,那么我們做模型的時候,通常會人工從訓練集中劃分一個驗證集出來。這時候我們通常不再劃分一個測試集,可能的原因有兩個:1、比賽方基本都很摳,訓練集的樣本本來就少;2、我們也沒法保證要提交的測試集是否跟訓練集完全同分布,因此再劃分一個跟訓練集同分布的測試集就沒多大意義了。

II. 參數(shù)

有了模型后,訓練集就是用來訓練參數(shù)的,說準確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成后,用來測試一下當前模型的準確率。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。那么為啥還需要一個測試集呢?

這就需要區(qū)分一下模型的各種參數(shù)了。事實上,對于一個模型來說,其參數(shù)可以分為普通參數(shù)和超參數(shù)。在不引入強化學習的前提下,那么普通參數(shù)就是可以被梯度下降所更新的,也就是訓練集所更新的參數(shù)。另外,還有超參數(shù)的概念,比如網(wǎng)絡層數(shù)、網(wǎng)絡節(jié)點數(shù)、迭代次數(shù)、學習率等等,這些參數(shù)不在梯度下降的更新范圍內(nèi)。盡管現(xiàn)在已經(jīng)有一些算法可以用來搜索模型的超參數(shù),但多數(shù)情況下我們還是自己人工根據(jù)驗證集來調(diào)。

III. 所以

那也就是說,從狹義來講,驗證集沒有參與梯度下降的過程,也就是說是沒有經(jīng)過訓練的;但從廣義上來看,驗證集卻參與了一個“人工調(diào)參”的過程,我們根據(jù)驗證集的結(jié)果調(diào)節(jié)了迭代數(shù)、調(diào)節(jié)了學習率等等,使得結(jié)果在驗證集上最優(yōu)。因此,我們也可以認為,驗證集也參與了訓練。

那么就很明顯了,我們還需要一個完全沒有經(jīng)過訓練的集合,那就是測試集,我們既不用測試集梯度下降,也不用它來控制超參數(shù),只是在模型最終訓練完成后,用來測試一下最后準確率。

IV. 然而

聰明的讀者就會類比到,其實這是一個無休止的過程。如果測試集準確率很差,那么我們還是會去調(diào)整模型的各種參數(shù),這時候又可以認為測試集也參與訓練了。好吧,我們可能還需要一個“測試測試集”,也許還需要“測試測試測試集”...

算了吧,還是在測試集就停止吧。

數(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)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 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); }