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

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代從軟件到機(jī)器學(xué)習(xí)工程師的旅程
從軟件到機(jī)器學(xué)習(xí)工程師的旅程
2022-03-14
收藏


我已經(jīng)在iZettle工作了大約四年了。我在這家公司的旅程并不是以機(jī)器學(xué)習(xí)工程師的身份開始的,而是隨著我在公司的成長而過渡到機(jī)器學(xué)習(xí)工程師。

我的正規(guī)教育是計(jì)算機(jī)科學(xué)/軟件工程,事實(shí)上我已經(jīng)做了大約8年的軟件開發(fā)人員。作為一名軟件工程師,這些年給了我一些技能,這些技能使我走向ML工程的道路變得相當(dāng)特別。我想和大家分享我希望在準(zhǔn)備這個(gè)角色時(shí)能更多地關(guān)注什么,以及我認(rèn)為我的背景如何幫助我完成這個(gè)轉(zhuǎn)變。

怎么開始的


首先-為什么?我對(duì)我的軟件工程師工作不滿意嗎?我認(rèn)為做一名ML工程師比做一名軟件工程師更好嗎?絕不是!這只是我喜歡花什么時(shí)間的問題,那就是數(shù)據(jù)。我從15歲就開始編碼了,我一直很喜歡它。但我最喜歡的是用我的作品去了解世界。作為許多人,我有許多“寵物項(xiàng)目”想法永遠(yuǎn)不會(huì)出現(xiàn),但當(dāng)我閱讀這份想法清單時(shí),我發(fā)現(xiàn)了這樣的事情:構(gòu)建工具來使用推特?cái)?shù)據(jù)來檢測自然災(zāi)害,分析我的社交媒體賬戶數(shù)據(jù)來理解我自己的行為,檢測朋友聊天中的情緒,等等。你看到模式了嗎?所有這些項(xiàng)目想法都尋求對(duì)某些情況的理解,并且都以數(shù)據(jù)為中心。那時(shí)我一直對(duì)數(shù)據(jù)很感興趣,大約兩年前我決定把它作為我的主要工作。我想認(rèn)為機(jī)器學(xué)習(xí)是我個(gè)人的選擇,但本著數(shù)據(jù)驅(qū)動(dòng)的精神,我可以將我的決定與近年來機(jī)器學(xué)習(xí)領(lǐng)域的炒作聯(lián)系起來,當(dāng)時(shí)你讀到的每一篇科技文章都是關(guān)于ML創(chuàng)新的,所以我想我永遠(yuǎn)不會(huì)知道。

不管怎樣,我做出了這個(gè)決定,對(duì)我來說幸運(yùn)的是,iZettle正在運(yùn)行一個(gè)機(jī)器學(xué)習(xí)指導(dǎo)項(xiàng)目,我很高興地加入了這個(gè)項(xiàng)目。

學(xué)習(xí)過程


在這個(gè)指導(dǎo)程序中,我們學(xué)習(xí)了bookPython機(jī)器學(xué)習(xí)的所有章節(jié)。每周,我們會(huì)討論一章,編寫一些練習(xí)來實(shí)驗(yàn)所學(xué)的概念。我發(fā)現(xiàn)它非常令人興奮,它確實(shí)奠定了我對(duì)機(jī)器學(xué)習(xí)如何工作的基本理解。

除此之外,我利用空閑時(shí)間參加了一些在線課程,比如Udacity中的aDeep Learning Specialisation,參加inKagglecompetitions(我不得不承認(rèn),沒有太大成功),并試圖實(shí)施我之前提到的一些項(xiàng)目。

我告訴你們所有這些不是為了吹牛,而是為了讓你們明白我正在盡可能多地吸收關(guān)于這個(gè)主題的知識(shí),當(dāng)我準(zhǔn)備更換標(biāo)題時(shí),我覺得我對(duì)機(jī)器學(xué)習(xí)有非常扎實(shí)的理解。

經(jīng)過6個(gè)多月的緊張學(xué)習(xí),我加入了iZettle的機(jī)器學(xué)習(xí)團(tuán)隊(duì)。

什么課程和書本沒有教給你


我充滿活力地加入了這個(gè)團(tuán)隊(duì),渴望開始我的第一個(gè)項(xiàng)目。從第一個(gè)項(xiàng)目開始,我開始注意到學(xué)習(xí)機(jī)器學(xué)習(xí)和實(shí)際機(jī)器學(xué)習(xí)是多么的不同。第一個(gè)項(xiàng)目是試圖為我們的商人預(yù)測破產(chǎn),這樣我們就可以伸出援手,幫助他們做生意。

當(dāng)你做一個(gè)來自一門課程或一本書的項(xiàng)目時(shí),該項(xiàng)目最重要的部分已經(jīng)為你完成了。也就是說:您到底想做什么?在課程中,您會(huì)得到一個(gè)數(shù)據(jù)集和一個(gè)目標(biāo)度量,您所要做的就是“按摩”您的數(shù)據(jù)和訓(xùn)練模型,以便在您的目標(biāo)度量上獲得良好的性能。

在這種情況下,有幾件事你沒有學(xué)到,甚至從來沒有質(zhì)疑過:

問題定義:如何將問題公式化,以便從機(jī)器學(xué)習(xí)的角度來看它是有意義的?對(duì)于破產(chǎn)問題,我感到震驚的是,我的腦海中突然冒出了多少問題,幾乎是不知從哪里冒出來的:預(yù)測破產(chǎn)意味著什么?是不是意味著一個(gè)商人明天就要破產(chǎn)了?一周后?一個(gè)月后?我怎么知道我們哪一個(gè)商戶已經(jīng)破產(chǎn)了?是缺乏活動(dòng)嗎?那么季節(jié)性呢?是一些外部信息嗎?我如何將它映射到一個(gè)標(biāo)簽,讓我的算法可以從中學(xué)習(xí)?…我太習(xí)慣于被賦予一個(gè)有標(biāo)簽的數(shù)據(jù)集,以至于我從未考慮過僅僅創(chuàng)建這個(gè)標(biāo)簽需要大量的思考、領(lǐng)域知識(shí)和業(yè)務(wù)考慮。這取決于您如何定義標(biāo)簽,您可以使用的問題和功能完全改變。

data:我已經(jīng)暗示了接下來會(huì)發(fā)生什么,而且眾所周知,獲取正確的數(shù)據(jù)是ML問題的一個(gè)困難部分。然而,當(dāng)你第一次偶然發(fā)現(xiàn)這個(gè)問題時(shí),它仍然會(huì)打擊你。數(shù)據(jù)很難得到,而且很雜亂,不應(yīng)該盲目相信。構(gòu)建標(biāo)簽實(shí)際上是在獲得數(shù)據(jù)源之后。在我的第一個(gè)任務(wù)中,我有兩個(gè)來自不同來源的數(shù)據(jù)集,我必須合并并映射到每個(gè)商家自己的特性集。對(duì)于您引入的每一個(gè)新的信息源,您不僅需要確保數(shù)據(jù)質(zhì)量是可接受的,而且要確保您沒有引入任何偏見,或者至少您對(duì)此做出了解釋。

在某些情況下,你甚至沒有你想要解決的問題的數(shù)據(jù),機(jī)器學(xué)習(xí)在任何一行代碼之前幾個(gè)月就開始了,建立數(shù)據(jù)收集策略和與其他團(tuán)隊(duì)的關(guān)系。

評(píng)估:我們有數(shù)據(jù)集和標(biāo)簽。我們開始建?!覀?nèi)绾魏饬啃阅埽窟@不僅是使用哪種度量的問題,而且是它是否有業(yè)務(wù)意義的問題。權(quán)衡在這里起著很大的作用。我以前從來沒有考慮過用什么指標(biāo)來衡量我的模型的性能,這是給定的。我真的在等別人告訴我:使用精確度/ROC-AUC/等。當(dāng)這種情況沒有發(fā)生時(shí),我不得不考慮一個(gè)指標(biāo)及其含義,我意識(shí)到花很多時(shí)間思考這個(gè)問題有多重要,我對(duì)我所學(xué)的任何一本書或課程都很少關(guān)注這個(gè)話題感到失望。只要想一想:根據(jù)當(dāng)它實(shí)際上是假的(即假陽性)或任何類似的變化時(shí)預(yù)測真的“糟糕”程度,您可能希望保持最低的精確度或召回率,而不管您的一般度量(如ROC-AUC)如何上升或下降。這只是一個(gè)例子,還有很多。

這些是我意識(shí)到在我所學(xué)的任何課程或閱讀的任何書籍中都沒有學(xué)到的要點(diǎn)。這些都是我在工作中日復(fù)一日學(xué)到的東西,感謝真正有經(jīng)驗(yàn)和耐心的同事。

在我的旅程中是什么幫助了我


當(dāng)然,也有一些意想不到的好的部分,在這些部分中,我可以利用我作為一名軟件工程師多年來獲得的技能。列舉一些:

  • 通用軟件開發(fā)實(shí)踐:在許多課程中,大量的時(shí)間用于解釋常見的軟件開發(fā)實(shí)踐:版本控制、基本編程、專注于單一編程語言(90%的時(shí)間該語言是Python)等。在與軟件工作多年后,這不僅是我已經(jīng)有過的實(shí)踐,而且是我“內(nèi)心深處”的東西。這使得我更容易開始測試和實(shí)現(xiàn)想法,并希望傳播這些實(shí)踐,激勵(lì)我最近加入的團(tuán)隊(duì)。
  • 閱讀和理解他人的代碼:因?yàn)檫@是我一直在做的事情,所以我非常樂意閱讀其他同事的代碼,并希望能給出建設(shè)性的反饋。
  • 靈活性當(dāng)涉及到“工作的正確工具”時(shí)。機(jī)器學(xué)習(xí)工程師往往會(huì)陷入他們所使用的工具中,無論他們喜歡什么。雖然我沒有數(shù)據(jù)來支持這一說法,但我注意到了這一點(diǎn)。因?yàn)槲沂褂眠^許多語言和框架,所以我發(fā)現(xiàn)它相對(duì)容易(而且令人興奮?。﹪L試新的工具和庫,希望這給了我一個(gè)更廣泛的視圖和工具集。

所以...怎么辦?


如果您的情況與我類似,我有以下附加練習(xí),用于您正在閱讀的書或您正在學(xué)習(xí)的課程中的下一個(gè)練習(xí)。嘗試回答以下問題:

  • 您試圖解決/預(yù)測什么?您理解問題的所有部分嗎?
  • 提供的數(shù)據(jù)對(duì)您試圖解決的問題有意義嗎?
  • 數(shù)據(jù)是如何收集的?如果您不能肯定地回答這個(gè)問題,您將如何收集數(shù)據(jù)?需要多長時(shí)間?誰需要參與數(shù)據(jù)收集?是web開發(fā)人員(可能點(diǎn)擊事件),還是應(yīng)用程序開發(fā)人員(應(yīng)用程序使用數(shù)據(jù)),等等
  • 如果這是一個(gè)要在公司內(nèi)部解決的問題,那么除了您的預(yù)測之外,該項(xiàng)目還需要什么?一些基礎(chǔ)結(jié)構(gòu)?有什么商業(yè)決定嗎?應(yīng)用程序中的新功能?將涉及誰?
  • 您使用的評(píng)估指標(biāo)是什么?您了解嗎?對(duì)這個(gè)問題合適嗎?對(duì)于這個(gè)問題,有沒有其他更有意義的度量方法?遺漏樣本分類的成本是多少?
  • 不管目標(biāo)性能是什么:何時(shí)如果這是一個(gè)真正的項(xiàng)目,您會(huì)感到高興嗎?為什么是這個(gè)數(shù)字?為什么不調(diào)低/調(diào)高?

我相信,如果你真的試圖回答所有這些問題,你在學(xué)習(xí)過程中遇到的每一個(gè)練習(xí),你會(huì)在“現(xiàn)實(shí)生活中”發(fā)展出一個(gè)更廣泛和現(xiàn)實(shí)的機(jī)器學(xué)習(xí)觀點(diǎn)。

我希望這個(gè)帖子對(duì)很多人的學(xué)習(xí)之旅有所幫助!如果你有任何問題,請(qǐng)聯(lián)系我們,或者想與我們分享你的故事,我們很樂意聽到它!



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

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