入職一年的算法工程師工作總結(jié)
時(shí)間:2021-05-08 14:42:41 來源:星星閱讀網(wǎng) 本文已影響 人
20XX年5月到現(xiàn)在入職阿里已經(jīng)快一年了,一年之中也做了幾個(gè)項(xiàng)目,期間趟過了不少坑,以往的年度總結(jié)都是閉門造車,寫完了扔印象筆記之中給自己看,今年在知乎上看了很多大佬們的文章,收獲很多,尤其是在討論的過程之中,對(duì)自身能力的強(qiáng)化很是受用。下面是星星閱讀網(wǎng)小編為您推薦的入職一年的算法工程師工作總結(jié)。
被暴打的現(xiàn)實(shí)5月入職的時(shí)候,老板安排的是去做 CTR 模型。當(dāng)時(shí)看到線上模型比自己想的更加簡單,于是理所當(dāng)然的認(rèn)為把模型升級(jí)到學(xué)界最新的那種肯定能帶來效果上的提升,但是做了很多嘗試,最后發(fā)現(xiàn)其實(shí)并沒有那么簡單...
于是在被現(xiàn)實(shí)狠狠教育了一番之后,終于痛定思痛,開始做一個(gè) SQL 工程師,一切從特征做起,模型配合著特征進(jìn)行相對(duì)應(yīng)的升級(jí),自己的算法道路才漸漸走上正軌。
一些積累經(jīng)驗(yàn)數(shù)據(jù)的準(zhǔn)確性是非常重要的
具體地說,就是我們需要做很多數(shù)據(jù)清洗的工作。比如在日志中將虛曝光(服務(wù)器端打點(diǎn))除去,只保留真正的實(shí)曝光(用戶看到的),以及海外業(yè)務(wù),還需要將國內(nèi)的流量進(jìn)行清洗等等。總之,核心思想就是要保證訓(xùn)練數(shù)據(jù)是用戶真正看到的,且經(jīng)過在線鏈路打分的數(shù)據(jù)。
另外如果沒有必要,千萬別對(duì)當(dāng)前的數(shù)據(jù)做采樣。首先做了負(fù)采樣,就已經(jīng)改變了數(shù)據(jù)的分布,它的效果就已經(jīng)不夠置信了,其次,采樣完成之后還需要還原,尤其是在廣告業(yè)務(wù)中,還原之后還需要再加上校準(zhǔn)... 整套流程下來不僅提升了整個(gè)鏈路的復(fù)雜程度,拿到的效果還不一定是正向的。
線上線下特征一致性
這算是一個(gè)老生長談的話題了,很多時(shí)候,我們發(fā)現(xiàn)離線 auc 漲幅喜人,上線之后發(fā)現(xiàn)在線指標(biāo)紋絲不動(dòng),甚至還有向下波動(dòng)的趨勢,第一反應(yīng)就是特征不一致。于是立刻返工去查找線上特征和線下特征是否一致,導(dǎo)致整個(gè)項(xiàng)目周期拉的特別長。
筆者今年在這一塊就吃了很大的虧。由于我們業(yè)務(wù)的在線鏈路中的特征是由 c++、 lua 等語言處理得到的。但是我們離線開發(fā)的時(shí)候使用的是 python、java以及 SQL 處理得到,導(dǎo)致我們?cè)诩有绿卣鞯臅r(shí)候往往需要先用 python 和 sql 寫一遍離線邏輯,再用 c++、lua 實(shí)現(xiàn)同樣的在線邏輯。這樣的做法首先會(huì)導(dǎo)致重復(fù)開發(fā),其次兩套代碼的業(yè)務(wù)邏輯以及不同語言底層庫實(shí)現(xiàn)的區(qū)別勢必會(huì)導(dǎo)致在線/離線特征處理的不一致。
為了解決上面的問題,我們使用 C++ 開發(fā)了一套特征處理庫,我們將所有的特征處理邏輯全部封裝進(jìn)該庫之中,只要保證在線、離線輸入的數(shù)據(jù)是一致的,那么得到的特征也可以保證一致。離線情況下,我們則通過 streaming 調(diào) c++ 庫的方式來生成離線特征。
線上環(huán)境特征的引入
由于我們組的業(yè)務(wù)場景、流量來源比較復(fù)雜,因此筆者剛開始做CTR相關(guān)工作的時(shí)候,錨定了流量渠道這個(gè)一個(gè)小點(diǎn),挖了一部分特征,離線 auc 上也確實(shí)拿到了一定的漲幅,但是一上線人就懵了,在線指標(biāo)跟online模型一模一樣。后續(xù)跟朋友、師兄的討論才明白了,渠道特征本質(zhì)上是環(huán)境特征。這一部分特征,讓模型可以分辨高 CTR 渠道和低 CTR 渠道,但是對(duì)于用戶最后會(huì)不會(huì)點(diǎn)并沒有過多的貢獻(xiàn)。
離線指標(biāo)的全面化
CPC 廣告場景中,一般情況下,最后的排序計(jì)算公式都是 ctr * bid_price, 這就要求在廣告場景中,我們不僅僅需要保證預(yù)估的序是對(duì)的,還需要保證預(yù)估的 CTR 的值是準(zhǔn)的。當(dāng)然,其實(shí)值如果準(zhǔn)了,那么序也應(yīng)該會(huì)更準(zhǔn)。但是離線指標(biāo)中的 auc 僅僅只能驗(yàn)證模型對(duì)序的預(yù)估情況,并不能實(shí)際反應(yīng)值是否準(zhǔn)確。因此,廣告場景下,我們還應(yīng)該關(guān)注類似于 COPC (click over predicted click) 這樣的指標(biāo),當(dāng)然 COPC 這個(gè)指標(biāo)也有一定的局限性,比如樣本中如果有一半的數(shù)據(jù)被高估、另一半的數(shù)據(jù)被低估,那么 COPC 的計(jì)算結(jié)果很可能表現(xiàn)的還不錯(cuò)。
快速驗(yàn)證想法的能力
同是打工人,大家身上都背著 KPI 和績效。這時(shí)候,我們做的很多事會(huì)需要確定性結(jié)果,但是,作為算法工程師,我們做的很多事,都不能保證有確定性的結(jié)果。這時(shí)候,快速驗(yàn)證想法就是很重要的能力,我們需要在簡短的 1-2周內(nèi)驗(yàn)證自己的思路是否能產(chǎn)生效益,然后再?zèng)Q定是否加大投入時(shí)間,把這個(gè)想法做的更加飽滿,全面。舉個(gè)簡單的例子,比如我們需要挖掘文本類特征對(duì) CTR 模型的重要性,最簡單的辦法就是去做一些重合特征,比如判斷 query 和 item title 的重合度,重合詞等等,看這些重合特征能對(duì) CTR 模型帶來多大的離線收益,如果能夠帶來比較不錯(cuò)的收益,我們便可以順著這個(gè)路子把文本類特征做的更加完備。
要有產(chǎn)品思維
算法工程師其實(shí)并不應(yīng)該僅關(guān)注自己手中的事,其實(shí)多思考思考產(chǎn)品的形態(tài),也是極好的。雖然這一塊,筆者自己的體會(huì)并不是特別深,但還是想寫出來告誡一下自己別成為一個(gè)只懂算法的人。最后,個(gè)人對(duì)產(chǎn)品和算法的看法是算法的不確定性某種程度上是可以通過產(chǎn)品來進(jìn)行彌補(bǔ)的。這個(gè)觀點(diǎn)也是在最近我們大團(tuán)隊(duì)內(nèi)部的某個(gè)產(chǎn)品上線后取得了非常好的效果之后逐漸形成的,算是一個(gè)拋磚引玉吧。
學(xué)習(xí)和創(chuàng)新
對(duì)于算法工程師而言,保持學(xué)習(xí)是一項(xiàng)重要的能力,緊跟學(xué)界、業(yè)界的前沿個(gè)人感覺還是比較重要的,另外根據(jù)業(yè)務(wù)的發(fā)展,或者手頭需要做的事情來有針對(duì)性的學(xué)一些知識(shí)點(diǎn)也是很重要的。最后,關(guān)于創(chuàng)新,感覺和學(xué)生時(shí)期做的論文真的差異很大,學(xué)生時(shí)代是確定大方向之后,四處開花,哪里好做做哪里,工作之后,受限于業(yè)務(wù)和數(shù)據(jù),這時(shí)候還能做論文創(chuàng)新的,不得不說,確實(shí)很強(qiáng)。
寫在最后聊一些有的沒的把,工作是一場長跑,身體的好壞其實(shí)是相當(dāng)重要的。每天抽時(shí)間出來鍛煉身體,做身材管理,我個(gè)人認(rèn)為是比賺錢多少更重要的事情。
另外,作為算法工程師畢竟會(huì)面臨很多不確定性,如何在失敗的情況下,保持一個(gè)好的心情也是一個(gè)很重要的能力。余以為每個(gè)人都應(yīng)該找到一個(gè)適合自己的解壓方式,比如我自己在壓力大或者心情不佳的時(shí)候選擇長跑,10km下來,就又是一個(gè)元?dú)鉂M滿的自己。