誰說算法工程師不會寫代碼
大家好,我是阿星。我的新書《大規(guī)模推薦系統(tǒng)實戰(zhàn)》前段時間上市了,收到很多反饋,看著那些或感謝、或認可、或鼓勵的句子,我很有成就感,在這里感謝大家的支持!
其實上學的時候就有涉獵一些算法知識,但是我真正意識到應該深刻理解算法,是在 2015 年。
因為我發(fā)現(xiàn),算法居然可以讓我研究生階段學到的矩陣論、最優(yōu)化理論等看上去毫無用處的知識派上了用場!這在計算機行業(yè)的其他方向都是不可想象的。比如很多人自嘲:
我開始做商業(yè)化的推薦算法是在 2016 年,做短視頻推薦。第一個上線的算法是協(xié)同過濾,當它“輕而易舉”地將用戶觀看時長提升了 10%+ 時,我都驚呆了!不禁感嘆:“一個小小的算法具有這么大的威力!”
看著自己實現(xiàn)的算法能夠“控制”幾百萬人的行為時,那種成就感,我現(xiàn)在仍記憶猶新。
這份成就感,也讓我一直保持著對推薦算法熱愛,去不斷研究它。在這條路上,很幸運地遇到了一些和我一樣,對推薦算法感興趣的人,我也很樂意把我的經(jīng)驗分享給大家。

大概 2020 年的時候,我發(fā)現(xiàn)很多推薦算法從業(yè)者對算法以外的知識了解得非常少,特別是軟件工程相關(guān)內(nèi)容,于是經(jīng)常會被戲謔:算法工程師不會寫代碼。
而且還有一個很普遍的現(xiàn)象,由于分工的原因,很多從業(yè)者的日常工作只涉及推薦系統(tǒng)的一小部分,久而久之就成了“螺絲釘”,這對于個人發(fā)展來說不太友好。
所以我萌生了寫一本書的念頭,很快就開始盤算“這本書”的定位。
回想起我剛開始接觸推薦算法時,到處找博客、看視頻、買書。這個領(lǐng)域和其他技術(shù)領(lǐng)域很像,資料大都停留在理論層面,講落地的少之又少。
時至今日這種現(xiàn)象也并沒有減少,更別提在當前大數(shù)據(jù)時代的算法落地,與 10 年前相比,發(fā)生了翻天覆地的變化。
因此我打算寫一本關(guān)于推薦系統(tǒng)實戰(zhàn)的書,把重點放在工業(yè)界如何將推薦算法落地。當時我認為最重要的就是:一定要給讀者提供具備生產(chǎn)標準的代碼,讓想要入門的人少走彎路。

下面和大家聊聊這本書,其實整本書大體上就是我對推薦系統(tǒng)的看法。
想要推薦算法價值最大化,一般從數(shù)據(jù)和模型兩個角度來考慮,往往前者更加重要。
這也是我們平時在學習和工作中容易忽視的地方,很多從業(yè)者會把大量時間放在折騰模型上,但是,往往數(shù)據(jù)的優(yōu)化帶來的收益遠遠高于模型的調(diào)優(yōu)。
但說到底,模型是為了數(shù)據(jù)服務的,不能本末倒置。因此數(shù)據(jù)的構(gòu)造和優(yōu)化,在這本書里占據(jù)了很大的篇幅。
我在書中講述具體的算法之前,會首先描述算法用來解決什么樣的問題,以及如何構(gòu)造訓練數(shù)據(jù)(比如第7章一整章都在講解特征工程和特征選擇,畢竟特征是整個建模過程核心中的核心。)
除此之外,我認為對算法的評估也是一個很重要的方面。
評估分為線下評估和線上評估。這在書里都有很詳細的說明和實現(xiàn),比如線下的召回階段和排序階段使用的不同評估方式;線上點擊率、轉(zhuǎn)化率、AB 測試,包括業(yè)界主流的分層實驗方案和指標置信度評估,等等。

最后我在這里統(tǒng)一回答一些來自讀者的提問。
1. 如何解決系統(tǒng)冷啟動?是否有可以分享的經(jīng)驗?
冷啟動一般會有用戶冷啟動、物品冷啟動和系統(tǒng)冷啟動,字面意思已經(jīng)可以解釋這三種冷啟動的差別。關(guān)于冷啟動問題,在本書的第13章也做了較為詳細的說明。
用戶冷啟動:主要通過熱門榜、用戶人口屬性(地理位置、設備信息等)、外部數(shù)據(jù)(比如 A 和 B 產(chǎn)品同屬一家公司,B 產(chǎn)品是新產(chǎn)品,那么 B 產(chǎn)品可能就會用 A 產(chǎn)品的用戶數(shù)據(jù))等去做推薦;
物品冷啟動:一般通過物品本身的屬性去推薦,標題、標簽之類的。當然通過多級流量控制也是常規(guī)做法。
系統(tǒng)冷啟動:這是屬于最棘手的,可以使用外部數(shù)據(jù),如果沒有外部數(shù)據(jù),一般就等系統(tǒng)慢慢積累了,在算法層面,多臂機是很常用的算法。
2. 如何衡量一個推薦系統(tǒng)是否優(yōu)秀?
能為公司賺錢的推薦系統(tǒng)就是優(yōu)秀的推薦系統(tǒng)(哈哈)。站在技術(shù)人的角度,一個優(yōu)秀的推薦系統(tǒng),必須具有以下幾個特點:
快速迭代、快速反饋:依靠分布式訓練、可信的 AB 測試平臺和零活伸縮性好的模型服務平臺。其中前兩者在書里的第11章和第15章做了詳細的說明。模型服務平臺要能夠支持模型快速上線、擴容、下線,最好是零配置、一鍵上線、擴容、下線。
數(shù)據(jù)、特征和模型管理:這些需要能夠像代碼一樣,有版本控制、歷史追蹤等。
完善的監(jiān)控系統(tǒng):模型指標監(jiān)控、數(shù)據(jù)分布監(jiān)控、線上服務監(jiān)控等,保證整個推薦系統(tǒng)的數(shù)據(jù)質(zhì)量、模型質(zhì)量和服務質(zhì)量。
以上其實就是需要一套高效的 MLOps 工具。
3. 大廠對于推薦算法工程師都有什么樣的要求?
我覺得我無法直接代表大廠,我來說說我對于推薦工程師的期望吧。
工程能力:coding 能力&軟件工程能力,我一直覺得這是技術(shù)能力中最重要的一方面;
算法能力:扎實的實戰(zhàn)經(jīng)驗,不是淺嘗輒止,而是能夠刨根問底,做到理論和業(yè)務相結(jié)合;
方法論:屬于軟實力,這個看上去有點虛,但是如果能夠總結(jié)出自己在工作中的一套方法論,包括分析問題、解決問題、與人溝通等方面,對于職業(yè)生涯更上一層樓大有幫助。
4. 對推薦算法工程師的未來發(fā)展道路有什么建議或者經(jīng)驗可以分享嗎?
加強工程能力,把算法工程師當成是軟件工程師,最起碼要能夠看一些優(yōu)秀框架的源碼;
不要淪為調(diào)包俠/調(diào)參俠。注意總結(jié)和思考,工作中的很多問題其實都是重復的;
多看書,多看論文:個人的能力和精力有限,多看看優(yōu)秀的論文,對眼界開闊都特別好,在這里推薦谷歌、FaceBook 和阿里的論文。
5. 您在 SHEIN 工作,與之前在字節(jié)、蘇寧有什么不同嗎?
SHEIN 作為一家跨境電商,依然還在砥礪前行、茁壯成長。我加入 SHEIN 也快3年了,成長了很多。
我在 SHEIN 比較有意思的事是由于我們在多個國家都有業(yè)務,而每個國家的氣候、習慣、風俗和信仰什么的都可能不一樣,因此在算法建模時都要注意這些方面,這與在做國內(nèi)業(yè)務時還是有很大的區(qū)別的。
編輯推薦
本書從實戰(zhàn)的角度介紹推薦系統(tǒng),主要包含三部分:召回算法、排序算法和工程實踐。
書中細致剖析了如何在工業(yè)中對海量數(shù)據(jù)應用算法,從算法原理,到模型搭建、優(yōu)化以及最佳實踐等?;竞w了推薦算法從業(yè)人員在實際應用中所要掌握的全部核心技能。
適合人群
本書適合希望入門推薦算法的非行業(yè)從業(yè)者、希望在推薦算法領(lǐng)域進階的行業(yè)從業(yè)者,以及希望全面了解推薦系統(tǒng)及其運作原理的技術(shù)管理者閱讀。
特色亮點
??專業(yè)背景:一線互聯(lián)網(wǎng)大廠推薦系統(tǒng)專家經(jīng)驗總結(jié)。
??著眼實戰(zhàn):詳細剖析大規(guī)模推薦系統(tǒng)從0到1,從1到N。
??開箱即用:附帶可以直接用于生產(chǎn)環(huán)境的所有主流推薦算法的代碼實現(xiàn)。
作者介紹
阿星,曾在字節(jié)跳動、蘇寧易購等企業(yè)負責推薦/廣告算法的設計、開發(fā)和優(yōu)化工作,在應對海量數(shù)據(jù)下的算法建模以及點擊率/轉(zhuǎn)化率預估等任務中積累了大量實戰(zhàn)經(jīng)驗。
目前就職于跨境電商巨頭 SHEIN,負責提升全球核心業(yè)務場景的流量分發(fā)效率。

關(guān)于推薦系統(tǒng),小伙伴們有什么疑惑嗎?大家可以在評論區(qū)留言,有可能會被作者大大翻牌哦~
(對了,很“大”的問題建議購書系統(tǒng)學習哦~)