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

熱線電話:13121318867

登錄
首頁精彩閱讀構(gòu)建機器學習系統(tǒng)的20個經(jīng)驗教訓
構(gòu)建機器學習系統(tǒng)的20個經(jīng)驗教訓
2016-01-05
收藏

構(gòu)建機器學習系統(tǒng)的20個經(jīng)驗教訓

數(shù)據(jù)科學家對優(yōu)化算法和模型以進一步發(fā)掘數(shù)據(jù)價值的追求永無止境。在這個過程中他們不僅需要總結(jié)前人的經(jīng)驗教訓,還需要有自己的理解與見地,雖然后者取決于人的靈動性,但是前者卻是可以用語言來傳授的。最近Devendra Desale就在KDnuggets上發(fā)表了一篇文章,總結(jié)了Quora的工程副總裁Xavier AmatriainNetflixQuora從事推薦系統(tǒng)機器學習工作時所總結(jié)的20條經(jīng)驗教訓。 

更多的數(shù)據(jù) & 更好的模型

并不是數(shù)據(jù)越多結(jié)果就越好,高質(zhì)量的數(shù)據(jù)才能產(chǎn)生高質(zhì)量的結(jié)果。多并不意味著好,事實上,有些情況下較少的數(shù)據(jù)反而效果更好,因此數(shù)據(jù)要適量,質(zhì)量要高。

可能并不需要所有的大數(shù)據(jù)

組織可能積累了不同種類的大數(shù)據(jù),但是并不是每一個場景都會用到所有的數(shù)據(jù)。大部分情況下,通過一些樣本數(shù)據(jù)就能獲得比較好甚至是比使用全量數(shù)據(jù)更好的效果。

有時候更復雜的模型并沒有帶來任何提升,但這并不意味著就不需要它了

如果將一個線性模型的特征數(shù)據(jù)作為另一個更復雜模型(例如非線性模型)的輸入,而復雜模型產(chǎn)生的結(jié)果并沒有任何提升,那并不意味著這個復雜模型就毫無意義。因為通常情況下只有更復雜的特征數(shù)據(jù)才需要更復雜的模型,對于簡單的特征數(shù)據(jù)復雜模型往往難以發(fā)揮出自身優(yōu)勢。

學會處理展現(xiàn)偏見

系統(tǒng)通常會將那些預測的比較正確的結(jié)果展示給用戶,用戶會選擇性的查看,但是用戶不看的那部分并不一定就毫無吸引力。更好的選擇是通過關(guān)注模型或者MAB分析用戶的點擊概率,合理地呈現(xiàn)內(nèi)容。

認真思考訓練數(shù)據(jù)

構(gòu)建訓練和測試數(shù)據(jù)的時候需要充分考慮結(jié)果和各種不同的場景。例如,如果要訓練一個預測用戶是否喜歡某部電影的分類器,那么產(chǎn)生數(shù)據(jù)的可能場景包括:用戶看完電影并給出了一星的評價,用戶看了5分鐘、15分鐘或者一小時之后離開,用戶再次查看電影等,如何選擇這些數(shù)據(jù)是需要經(jīng)過深思熟慮的。

UI是用戶與算法通信的唯一方式

系統(tǒng)通過UI展現(xiàn)算法結(jié)果,用戶通過UI提供算法反饋,它們應該是相互對應的關(guān)系,任何一個發(fā)生變化另一個也需要進行改變。 數(shù)據(jù)和模型是否已經(jīng)足夠好了?

要有正確的評估方法

產(chǎn)品決策始終應該是數(shù)據(jù)驅(qū)動的。對于不同的問題,要選擇正確的評估方法,例如,通過A/B測試來衡量不同特征數(shù)據(jù),不同算法的優(yōu)劣;通過脫機測試使用 (IR) 度量測試模型的性能。

分布式算法重要,但是理解它的分布式程度更重要

分布式/并行算法分三級:第一級針對總體的每一個子集,第二級針對超參數(shù)的每一種組合,第三級針對訓練數(shù)據(jù)的每一個子集,每一級都有不同的要求。

慎重地選擇超參數(shù)

要選擇正確的度量標準自動化超參數(shù)的優(yōu)化。 有些事情能線下做,有些不能,有些介于兩者之間,為此需要支持多層次的機器學習

隱式信號幾乎總是打敗顯式信號

許多數(shù)據(jù)科學家認為隱式反饋更有用。但真的是這樣么?實際上有些情況下結(jié)合不同形式的隱式和顯式信號能更好地表示長期目標。

模型會學習你教給他的內(nèi)容

機器學習算法并不是一個隨意的過程,它的每一步都涉及到科學方法。模型要從訓練數(shù)據(jù)、目標函數(shù)和度量中學習。

有監(jiān)督 + 無監(jiān)督的學習

開發(fā)模型的時候不能簡單地選擇有監(jiān)督的或者無監(jiān)督的學習,它們各有長處,適用場景不同,用戶需要根據(jù)具體情況同時迭代地使用它們,通過兩種方法的融合獲得更好的效果。

所有的事情都是一種集成(Ensemble

使用機器學習的大部分應用程序都是一個集合體。你可以添加完全不同的方法(例如CF和基于內(nèi)容的方式),你也可以在集成層使用許多不同的模型(例如LR、GDBT、RFANN)。

一個模型的輸出可能是另一個模型的輸入

確保模型的輸出具有良好的數(shù)據(jù)依賴關(guān)系,例如可以容易地改變值的分布而不影響依賴它的其他模型。要盡量避免反饋循環(huán),因為這樣會在管道中造成依賴和瓶頸。另外,機器學習的模式設(shè)計也需要遵循最佳的軟件工程實踐,例如封裝、抽象、高內(nèi)聚和松耦合。

特征工程的失與得

良好的機器學習特征可重用、可轉(zhuǎn)換、可解釋并且可靠。捕獲的特征越好,結(jié)果越精確。為了量化數(shù)據(jù)的屬性必須將維度翻譯成特征。

機器學習基礎(chǔ)設(shè)施的兩面性

任何機器學習基礎(chǔ)設(shè)施都需要考慮兩種不同的模式。模式1:機器學習實驗需要擴展性、易用性和可重用性。模式2:機器學習產(chǎn)品不僅需要模式1的特性,還需要性能和可伸縮性。理想情況下,應該保持這兩種模式盡可能地相近。

要能回答有關(guān)于模型的問題

必須能夠向產(chǎn)品所有者解釋模型的行為,知道如何使用模型,它需要哪些特征,導致失敗的原因是什么;同時還需要知道產(chǎn)品所有者或投資者的期望,能夠向他們介紹模型為產(chǎn)品帶來了什么價值。

不需要分發(fā)機器學習算法

Hadoop/Spark這些容易的分布式計算平臺也有一些陷阱,例如成本和網(wǎng)絡(luò)延遲,實際上有些情況不使用它們也能很好的完成工作,通過智能數(shù)據(jù)樣本、離線模式以及高效的并行代碼等方法訓練模型所花費的時間甚至比這些分布式平臺要少的多。

數(shù)據(jù)科學 vs. 機器學習工程不為人知的故事

擁有強大的能夠挖掘數(shù)據(jù)價值的數(shù)據(jù)科學家是非常值得的。但是既懂數(shù)據(jù)又有扎實工程技能的數(shù)據(jù)科學家非常稀少,通常情況下,構(gòu)建數(shù)據(jù)科學家團隊和機器學習工程團隊并讓他們通力配合才是比較好的方案。

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