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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)模型需要多少訓練數(shù)據(jù)
數(shù)據(jù)模型需要多少訓練數(shù)據(jù)
2018-07-27
收藏

數(shù)據(jù)模型需要多少訓練數(shù)據(jù)

毫無疑問機器學習是大數(shù)據(jù)分析不可或缺的一部分,在使用機器學習技術(shù)的時候工程師除了要選擇合適的算法之外還需要選擇合適的樣本數(shù)據(jù)。那么工程師到底應該選擇哪些樣本數(shù)據(jù)、選擇多少樣本數(shù)據(jù)才最合適呢?來自于Google的軟件工程師Malay Haldar最近發(fā)表了一篇題為《數(shù)據(jù)模型需要多少訓練數(shù)據(jù)》的文章對此進行了介紹。

訓練數(shù)據(jù)的質(zhì)量和數(shù)量通常是決定一個模型性能的最關(guān)鍵因素。一旦訓練數(shù)據(jù)準備好,其他的事情就順理成章了。但是到底應該準備多少訓練數(shù)據(jù)呢?答案是這取決于要執(zhí)行的任務,要滿足的性能,所擁有的輸入特征、訓練數(shù)據(jù)中的噪音、提取特征中的噪音以及模型的復雜程度等因素。而找出這些變量之間相互關(guān)系的方法就是在不同數(shù)據(jù)量的訓練數(shù)據(jù)上訓練模型并繪制學習曲線。但是這僅僅適合于已經(jīng)有一定數(shù)量的訓練數(shù)據(jù)的情況,如果是最開始的時候,或者說只有很少一點訓練數(shù)據(jù)的情況,那應該怎么辦呢?

與死板地給出所謂精確的“正確”答案相比,更靠譜的方法是通過估算和具體的經(jīng)驗法則。例如本文將要介紹的實證方法:首先自動生成很多邏輯回歸問題。然后對生成的每一個問題,研究訓練數(shù)據(jù)的數(shù)量與訓練模型的性能之間的關(guān)系。最后通過觀察這兩者在這一系列問題上的關(guān)系總結(jié)出一個簡單的規(guī)則。

生成一系列邏輯回歸問題并研究不同數(shù)據(jù)量的訓練數(shù)據(jù)所造成的影響的代碼可以從GitHub上獲取。相關(guān)代碼是基于Tensorflow實現(xiàn)的,運行這些代碼不需要任何特殊的軟件或者硬件,用戶可以在自己的筆記本上運行整個實驗。代碼運行之后生成的圖表如下:

其中,X軸是訓練樣本的數(shù)量與模型參數(shù)數(shù)量的比率。Y軸是訓練模型的得分(f-score)。不同顏色的曲線表示不同參數(shù)數(shù)量的模型。例如,紅色曲線代表模型有128個參數(shù),曲線的軌跡表明了隨著訓練樣本從128 x 1到 128 x 2并不斷增長的過程中該模型的得分變化。

通過該圖表,我們能夠發(fā)現(xiàn)模型得分并不會隨著參數(shù)規(guī)模的變化而變化。但是這是針對線性模型而言,對于一些隱藏的非線性模型并不適合。當然,更大的模型需要更多的訓練數(shù)據(jù),但是對于一個給定的訓練模型數(shù)量與模型參數(shù)數(shù)量比率其性能是一樣的。該圖表還顯示,當訓練樣本的數(shù)量與模型參數(shù)數(shù)量的比率達到10:1之后,模型得分基本穩(wěn)定在0.85,該比率便可以作為良好性能模型的一種定義。根據(jù)該圖表我們可以總結(jié)出10X規(guī)則,也就是說一個優(yōu)秀的性能模型需要訓練數(shù)據(jù)的數(shù)量10倍于該模型中參數(shù)的數(shù)量。

10X規(guī)則將估計訓練數(shù)據(jù)數(shù)量的問題轉(zhuǎn)換成了需要知道模型參數(shù)數(shù)量的問題。對于邏輯回歸這樣的線性模型,參數(shù)的數(shù)量與輸入特征的數(shù)量相等,因為模型會為每一個特征分派一個相關(guān)的參數(shù)。但是這樣做可能會有一些問題:

特征可能是稀疏的,因而可能會無法直接計算出特征的數(shù)量。

由于正則化和特征選擇技術(shù),很多特征可能會被拋棄,因而與原始的特征數(shù)相比,真正輸入到模型中的特征數(shù)會非常少。

避免這些問題的一種方法是:必須認識到估算特征的數(shù)量時并不是必須使用標記的數(shù)據(jù),通過未標記的樣本數(shù)據(jù)也能夠?qū)崿F(xiàn)目標。例如,對于一個給定的大文本語料庫,可以在標記數(shù)據(jù)進行訓練之前通過生成單詞頻率的歷史圖表來理解特征空間,通過歷史圖表廢棄長尾單詞進而估計真正的特征數(shù),然后應用10X規(guī)則來估算模型需要的訓練數(shù)據(jù)的數(shù)據(jù)量。

需要注意的是,神經(jīng)網(wǎng)絡構(gòu)成的問題集與邏輯回歸這樣的線性模型并不相同。為了估算神經(jīng)網(wǎng)絡所需要的參數(shù)數(shù)量,你需要:

如果輸入是稀疏的,那么需要計算嵌套層使用的參數(shù)的數(shù)量。參照word2vec的Tensorflow教程示例。

計算神經(jīng)網(wǎng)絡中邊的數(shù)量

由于神經(jīng)網(wǎng)絡中參數(shù)之間的關(guān)系并不是線性的,所以本文基于邏輯回歸所做的實證研究并不適合神經(jīng)網(wǎng)絡。但是在這種情況下,可以將10X規(guī)則作為訓練數(shù)據(jù)所需數(shù)據(jù)量的下限。

盡管有上面的問題,根據(jù)Malay Haldar的經(jīng)驗,10X規(guī)則對于大部分問題還是適用的,包括淺神經(jīng)網(wǎng)絡。如果有疑問,可以在Tensorflow的代碼中插入自己的模型和假設,然后運行代碼進行驗證研究。


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