日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

萬字入門推薦系統(tǒng)

 520jefferson 2021-11-25
來源:毛小偉

本文約8000字,建議閱讀10分鐘 

本文作者整理出了這份萬字入門推薦系統(tǒng),涵蓋了推薦系統(tǒng)基礎、進階、實戰(zhàn)的全部知識點,

最近一周作者跟朋友三人,根據(jù)自身如何入門推薦系統(tǒng),再結(jié)合三人分別在騰訊做廣告推薦、字節(jié)做視頻推薦、百度做信息流推薦的經(jīng)歷,整理出了這份萬字入門推薦系統(tǒng)。內(nèi)容十分詳細,涵蓋了推薦系統(tǒng)基礎、進階、實戰(zhàn)的全部知識點,并且每一塊都給出了我們自己看過且覺得高質(zhì)量的參考資料,所以不管你是科班還是非科班,按照這條路線走下去,找到推薦系統(tǒng)相關工作是完全沒問題的。因為內(nèi)容過于全面詳細,即便你不從事推薦系統(tǒng)方向,只要是從事程序員,看完這篇文章也能有所收獲。不過要先強調(diào)一下,如果是沒有基礎且時間充足的同學,可以按部就班的學,如果有一定基礎或時間緊張,那就直接看核心知識。其中『 機器學習、深度學習、推薦算法理論知識、推薦系統(tǒng)實戰(zhàn)項目 』這四塊是核心知識,像數(shù)學、計算機基礎可以等到你需要的時候再反過頭來學習。在核心知識中也有次重點,要學會有的放矢,哪些知識是次重點,我都會在后面一一說明。

本文框架目錄如下:

圖片

萬字入門推薦系統(tǒng)

數(shù)學

主要是微積分、線性代數(shù)、概率論這三門課。

微積分

通常情況下,機器學習需要得到一個函數(shù)(模型,或者說假設)來預測未來的數(shù)據(jù)。既然是函數(shù),那自然就離不開微積分了。微積分為我們研究函數(shù)的性質(zhì)提供了理論依據(jù),同時它也是學習概率論、最優(yōu)化方法等后續(xù)課程的基礎,是整個高等數(shù)學的基石。

重點掌握函數(shù)的求導法則(特別是鏈式法則),以及泰勒公式。這對后續(xù)的梯度下降法,牛頓法,擬牛頓法等優(yōu)化算法的推導至關重要!

線性代數(shù)

機器學習算法的輸入、輸出、中間結(jié)果通常為向量、矩陣、張量。這些都屬于線性代數(shù)里的知識。

重點掌握向量、矩陣含義及其數(shù)學運算公式。

概率論

對于機器學習來說,概率論是一種重要的工具。如果將機器學習算法的輸入、輸出看作隨機變量/向量,則可以用概率論的觀點對問題進行建模。使用概率論的一個好處是可以對不確定性進行建模,這對于某些問題是非常有必要的。另外,它還可以挖掘變量之間的概率依賴關系,實現(xiàn)因果推理。

重點掌握常見概率分布、概率公式。

總結(jié)

數(shù)學好是入門機器學習的優(yōu)勢,但并非關鍵。因為數(shù)學知識量太龐大了,花太多時間在其上,容易打擊學習積極性。另外做算法一般分兩種:理論模型和實際應用,前者的行業(yè)title是算法研究員,主要發(fā)paper、提出新的模型或者優(yōu)化方法,所以對于數(shù)學能力要求很高。后者的行業(yè)title是算法工程師,致力于把模型應用于數(shù)據(jù)上,攫取商業(yè)價值,對于數(shù)學能力要求并不高。往往大部分人都屬于后者,我個人也是后者。熟悉不同算法的應用場景、掌握模型落地工程技術(shù),才是我們更應該投入精力的地方。

參考資料:

  1. 《DeepLearning》,又名「花書」,被譽為深度學習領域圣經(jīng)。它前面有必備數(shù)學知識的介紹,講得挺不錯的。
  2. B站搜索微積分、線性代數(shù)、概率論關鍵詞,會有很多教學視頻,隨便選取時長較短的看看即可。


計算機基礎

計算機基礎包含數(shù)據(jù)結(jié)構(gòu)與算法、計算機組成原理、操作系統(tǒng)、計算機網(wǎng)絡、數(shù)據(jù)庫、五大課程。其中數(shù)據(jù)結(jié)構(gòu)與算法是面試必考內(nèi)容,大家都會花時間好好學。但是另外4門課,開發(fā)崗面試中一定會問,算法崗卻很少會問,再加上很多做算法的人是轉(zhuǎn)行過來,非計算機科班出身,大學期間沒有上過此類專業(yè)課。所以很多做算法的人計算機基礎比較薄弱。但是在我看來計算機基礎是很重要的。一是能提高我們計算機素養(yǎng),二是增加工程代碼理解能力。所以后面我會針對這四門課程,出一個面向算法工程師的系列文章,做到讓大家對這些課程重點知識有個了解,同時又不會陷入細枝末節(jié)。這里先給大家做個大概講解:

數(shù)據(jù)結(jié)構(gòu)與算法

數(shù)據(jù)結(jié)構(gòu)包含:數(shù)組、鏈表、棧、隊列、樹、散列表、圖。數(shù)據(jù)結(jié)構(gòu)本質(zhì)是描述數(shù)據(jù)與數(shù)據(jù)之間的關系。

算法包含:排序、查找、五大經(jīng)典算法(動態(tài)規(guī)劃、回溯、分支界限、分治、貪心)。計算機解決問題其實沒有任何奇技淫巧,它唯一的解決辦法就是窮舉。算法設計的本質(zhì)無非就是先思考「如何窮舉」,然后再追求「如何聰明地窮舉」?!嘎斆鞯母F舉」分為兩部分:「去掉重復的窮舉」、「去掉不必要的窮舉」。比如,備忘錄法,用數(shù)組保存求過的結(jié)果,用空間換時間,這就是去掉重復的窮舉;動態(tài)規(guī)劃根據(jù)最優(yōu)子結(jié)構(gòu),使當前問題只與某幾個子問題有關,從而大大減少問題分解次數(shù),這就是去掉不必要窮舉。

參考資料:

  1. 《劍指offer》,準備過面試的人應該都知道這本書。
  2. 《大話數(shù)據(jù)結(jié)構(gòu)》通俗易懂。剩下的就是多刷LeetCode,多看別人的題解。


計算機組成原理

講解計算機組成結(jié)構(gòu)。主要由CPU(運算器、控制器),存儲器(內(nèi)存、外存),IO設備(輸入、輸出設備),總線這幾部分構(gòu)成。如果把計算機比作人,那么CPU是人的大腦,負責控制全身和運算;內(nèi)存是人的記憶,負責臨時存儲;外存是人的筆記本,負責永久存儲;輸入設備是耳朵或眼睛或嘴巴,負責接收外部的信息存入內(nèi)存;輸出設備是你的臉部(表情)或者屁股,負責輸出處理后的結(jié)果;以上所有的設備都通過總線連接,總線相當于人的神經(jīng)。

操作系統(tǒng)

是應用程序與硬件之間的管家:對下管理計算機硬件資源(CPU、存儲器、IO設備)、對上管理應用程序。
圖片

內(nèi)核(kernel)是直接控制硬件的。比如:內(nèi)核控制硬件有1000種方式,導致直接調(diào)內(nèi)核去操作硬件很麻煩,于是就封裝內(nèi)核,向外提供了易于調(diào)用的接口,比如:桌面系統(tǒng)、shell等。這些接口對非編程人員用戶還是不友好,于是編程人員用編程語言再對這些接口在進行封裝,就產(chǎn)生了應用程序。本質(zhì)是封裝的思想。

我們學的編程語言到最后都是在調(diào)用操作系統(tǒng)內(nèi)核API。所以這也是為什么所有的語言都有不同操作系統(tǒng)版本,因為每個操作系統(tǒng)的內(nèi)核API是不同的。

參考資料:

《深入理解計算機系統(tǒng)》,配套視頻:https://www.bilibili.com/video/BV1cD4y1D7uR
《鳥哥的Linux私房菜》,Linux是最常用的服務器系統(tǒng),也是我們工作中最常接觸的。熟悉Linux常用命令很有必要。

計算機網(wǎng)絡

很多教材都是從五層模型(物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、應用層)講解。其實這樣講是比較晦澀難懂的,因為很多東西我們都沒接觸過,很陌生。好的辦法是通過人類的語言系統(tǒng)進行類比。計算機網(wǎng)絡是計算機的語言系統(tǒng),與人類語言系統(tǒng)的本質(zhì)是一樣的。

人類語言系統(tǒng)構(gòu)成:

  1. 詞匯
  2. 語法
  3. 聲帶+耳朵
  4. 傳播介質(zhì):空氣

以此類比到計算機網(wǎng)絡:

  1. 數(shù)據(jù):計算機之間傳輸?shù)男畔?/span>
  2. 通信協(xié)議:決定數(shù)據(jù)的排列方式
  3. 網(wǎng)卡:數(shù)據(jù)發(fā)射器與接收器
  4. 傳播介質(zhì):光纖、網(wǎng)線、WIFI

此外還有人的身份證相當于Mac地址,家庭地址相當于IP地址等等。計算機網(wǎng)絡中的許多概念都可以用生活中人類是如何通信的進行類比。人類通信我們是非常熟悉的,所以非常有助于我們理解。

參考資料:

  1. 《計算機網(wǎng)絡自頂向下方法》這本書相比于其他計算機網(wǎng)絡書籍較通俗易懂,學習起來應該不太費勁。這本書重點章節(jié)是第2、3、4、5、6章,其他章節(jié)可以跳過。配套視頻:https://www.bilibili.com/video/BV1mb4y1d7K7
  2. 謝希仁的《計算機網(wǎng)絡》,是國內(nèi)很有名的教材。


數(shù)據(jù)庫

數(shù)據(jù)庫就是我們存儲數(shù)據(jù)的工具。數(shù)據(jù)如何存儲與讀取,直接決定了整個系統(tǒng)的效率。常用的關系型數(shù)據(jù)庫是MySQL,非關系型數(shù)據(jù)庫是Redis。

參考資料:

  1. 《SQL必知必會》,快速掌握常用的SQL語法
  2. 一天學會 MySQL 數(shù)據(jù)庫:https://www.bilibili.com/video/BV1Vt411z7wy

機器學習

人工智能、機器學習、深度學習關系如下:

圖片
我們一般說機器學習都是指除了深度學習以外的機器學習,也稱為傳統(tǒng)機器學習。雖然近幾年深度學習越來越火,但是很多領域還是在使用機器學習,并且學好機器學習,對于AI算法基礎和知識廣度都有很大提高。這里可以先給大家羅列一些必備的基礎知識:

首先要知道一些基礎的術(shù)語和概念,比如有監(jiān)督與無監(jiān)督,訓練集,驗證集與測試集,經(jīng)驗誤差與泛化誤差,方差與偏差,過擬合與欠擬合等,再比如比較重要的一些模型性能度量方法(混淆矩陣,精確率,召回率,auc,roc等), 再比如經(jīng)典的評估方法(留出,交叉驗證,自助等)

其次是經(jīng)典的模型。機器學習模型非常多,全部掌握不現(xiàn)實,我給大家羅列幾個經(jīng)典,也是面試中??嫉哪P停哼壿嫽貧w、SVM、樹模型、集成學習、樸素貝葉斯、K-Means聚類、PCA。(EM、最大熵、概率圖這些考的少,能了解是加分項)。

在學習過程中,各個模型是相互聯(lián)系的,不要孤立去分析單個模型。比如:邏輯回歸,我認為是最基礎、也最重要的模型:

圖片

  1. 邏輯回歸=線性回歸+sigmoid激活函數(shù),從而將回歸問題轉(zhuǎn)換為分類問題
  2. 邏輯回歸+矩陣分解,構(gòu)成了推薦算法中常用的FM模型
  3. 邏輯回歸+softmax,從而將二分類問題轉(zhuǎn)化為多分類問題
  4. 邏輯回歸還可以看做單層神經(jīng)網(wǎng)絡,相當于最簡單的深度學習模型

通過邏輯回歸由點及面,就能演化出如此多模型。再比如樹模型。我們把以決策樹為基礎的一系列模型統(tǒng)稱為樹模型,也是AI比賽中最常用的模型。

  1. 決策樹經(jīng)歷了三次改進,ID3、C4.5、CART,主要區(qū)別在于一個根據(jù)信息增益劃分特征、一個根據(jù)信息增益率、一個根據(jù)基尼指數(shù)。
  2. 隨機森林=決策樹+Bagging集成學習
  3. GBDT=決策樹+AdaBoost集成學習
  4. XGB是陳天奇2014年提出,相當于GBDT的工程改進版,在實用性和準確度上有很大提升。比如:使用泰勒二階展開近似損失函數(shù),支持處理缺失值、在特性粒度上并行計算等等特性。
  5. LGB是微軟2016年提出,對XGB進行了改進,使用單邊梯度采樣算法減少不必要的樣本;在尋找最優(yōu)分割點時采用直方圖算法使計算代價更??;支持類別特征...
  6. CGB是Yandex2017年提出,對類別特征進行了更完美的支持。

所以學習模型,要由點及面,層層遞進。這樣不僅方便理解,也有利于歸納總結(jié),同時還能鍛煉搭建知識體系的能力。

關于上面這些知識,整理一個系列幫助大家由點及面打通這塊知識,文章已寫了五篇,后面會陸續(xù)放出來。

實戰(zhàn)

我認為最好的實戰(zhàn)方式就是參加AI比賽。這個過程中不僅能與高手同臺競技,如果獲獎還能拿到不菲的獎金(很多比賽獎金都是10萬以上)與榮譽。我之前參加了很多比賽,拿過冠軍和多個top 10。對于我個人能力提升與找工作都有很大幫助。這里推薦三個公眾號:kaggle競賽寶典、Coggle數(shù)據(jù)科學、第一次打比賽。他們會發(fā)布新比賽的通知與過往比賽的解決方案,非常值得學習。

再就是書籍:《機器學習算法競賽實戰(zhàn)》這本書是Datawhale成員,top級競賽選手魚佬寫的。

參考資料:

  1. 如果是一個機器學習小白,那么推薦兩個入門視頻, 吳恩達或者李宏毅的ML視頻(B站上都有),先快速過一遍,了解機器學習是什么。
  2. 如果有了一定的機器學習基礎,就需要去進階。建議是看書與高質(zhì)量文章。推薦兩本書:周志華的《機器學習》、李航的《統(tǒng)計學習方法》這兩本書,可以好好先研究一本,注意這里是研究,一本通了,另一本也就差不多。如果發(fā)現(xiàn)看一遍很難看懂,這是正?,F(xiàn)象,隨著后面實踐經(jīng)歷慢慢變多,再看一遍,會有很多新的感悟。再就是公眾號:Datawhale,里面有很多高質(zhì)量文章。

注意:學習過程中一定要跟著實戰(zhàn),否則知識很難真正理解。

深度學習

前面也提到了,深度學習本屬于機器學習,但是鑒于其發(fā)展迅速、應用越來越廣泛,所以單獨拿出來說。深度學習每年新模型、新技術(shù)層出不窮,一味追求新技術(shù)不可取,要先打好基礎。比如:對于一個簡單的全連接神經(jīng)網(wǎng)絡,包含訓練算法(正向傳播、反向傳播),激活函數(shù)(sigmoid、ReLU、Maxout、softmax等),正則化(L1和L2、Dropout、提前早停等),優(yōu)化算法(隨機梯度下降、Momentum、Adagrad、Adam等)

掌握了基礎后,再根據(jù)自身領域?qū)W習相關的模型。大部分人找工作屬于這三個領域:

  1. 計算機視覺(CV):卷積神經(jīng)網(wǎng)絡(CNN)及其改進。
  2. 自然語言處理(NLP):循環(huán)神經(jīng)網(wǎng)絡(RNN)及其改進,Transformer、Bert等。
  3. 推薦算法:Embeding、Wide & Deep及其改進。


實戰(zhàn)

熟練使用TensorFlow或pytorch去實現(xiàn)訓練模型。通過官網(wǎng)的一些demo就可以快速的掌握一個深度學習框架的基本用法,然后在實際的應用中再去了解一些框架的高級用法,這個不需要花太多的時間單獨學習,應該邊用邊學習。

積累模型調(diào)參經(jīng)驗,比如學習率,batchsize, 優(yōu)化器對模型的影響,使用tensorboard可視化訓練過程的曲線,通過曲線分析訓練過程的相關問題,然后再調(diào)參或者調(diào)解網(wǎng)絡結(jié)構(gòu),在實踐的過程中要有意識的去總結(jié)一些經(jīng)驗。

參考資料:

  1. 李沐《動手學深度學習》https://zh-v2./
  2. 邱錫鵬《神經(jīng)網(wǎng)絡與深度學習》https://nndl./
  3. 吳恩達《深度學習》https://www.bilibili.com/video/BV1FT4y1E74V
  4. 《DeepLearning》,又名「花書」,被譽為深度學習領域圣經(jīng)。
  5. TensorFlow、pytorch官網(wǎng)是最好的參考資料。如果英語不好,那么可以看看下面的資料:
    1. Pytorch學習筆記:https://blog.csdn.net/wuzhongqiang/category_10024538.html
    2. 《30天吃掉那只TensorFlow2》:https://github.com/lyhue1991/eat_tensorflow2_in_30_days
    3. 《20天吃掉那只Pytorch》:https://github.com/lyhue1991/eat_pytorch_in_20_days
    4. PyTorch深度學習快速入門教程:https://www.bilibili.com/video/BV1hE411t7RN


數(shù)據(jù)挖掘與分析

熟練使用相關工具包:numpy、pandas、matplotlib(seabron是matplotlib的簡化版)、Scikit-Learn。完成數(shù)據(jù)的可視化、分析以及特征工程。工具包的學習建議邊用邊學,可以先看一些中文教程整體了解一下工具包的使用。在具體使用的時候,如果忘記了可以去對應工具包的官網(wǎng)查看詳細的文檔。

除了熟悉數(shù)據(jù)分析工具以外,其實更需要的是數(shù)據(jù)分析的方法,我覺得最好的學習方式就是看開源競賽的方案,因為在開源方案中,作者會寫很多他們分析問題的思路,以及對可視化結(jié)果給出的他們認為的正確觀點。

參考資料:

英文教程首推官網(wǎng),中文教程推薦Datawhale的開源項目

  1. numpy中文教程:https://github.com/datawhalechina/powerful-numpy
  2. pandas中文教程(這份文檔可能比官方文檔還適合學習):https://github.com/datawhalechina/joyful-pandas
  3. matplotlib中文教程:
    https://github.com/datawhalechina/fantastic-matplotlib
  4. 《Hands-on-Machine-Learning-with-Scikit-Learn》用sklearn工具實現(xiàn)各種機器學習模型


大數(shù)據(jù)

在實際工業(yè)場景中,我們面臨的都是海量數(shù)據(jù),也就是所謂的大數(shù)據(jù)。再用上面提到的MySQL數(shù)據(jù)庫、numpy、pandas等工具是不行的。這個時候就需要專業(yè)的大數(shù)據(jù)處理工具:Hadoop、Spark生態(tài)。有的同學想從這些生態(tài)的基本原理學起, 如果有時間,知其所以然是好的,但往往我們需要兼顧算法和大數(shù)據(jù),時間并不是很充足,所以建議大數(shù)據(jù)這塊可以先掌握到會用的層次,當做工具即可。

常用的:首先是Hive查詢,也就是用HQL進行一些表數(shù)據(jù)的基礎查詢,這個和SQL有些類似,另外一個,就是sparkSQL以及spark的DataFrame, 這些相關操作常用來做數(shù)據(jù)分析和處理,處理完畢之后,寫回到Hive表里面。其次,遇到復雜的處理邏輯,就需要寫原生spark腳本去跑數(shù)據(jù)了。關于這塊知識,后面也會整理一篇文章。

參考資料:

這一塊實操性特別強,所以建議先看視頻,跟著視頻一步步來:

  1. 尚硅谷大數(shù)據(jù)Hadoop 3.x:https://www.bilibili.com/video/BV1Qp4y1n7EN
  2. 尚硅谷大數(shù)據(jù)Spark教程從入門到精通:https://www.bilibili.com/video/BV11A411L7CK
  3. 推薦系統(tǒng)算法基礎+綜合項目實戰(zhàn):https://www.bilibili.com/video/BV1qK4y1479r


推薦算法理論知識

終于到了核心部分。再次強調(diào)一下,上面的知識不要求全掌握,既不需要,也不現(xiàn)實。如果為了快速入門,掌握機器學習、深度學習基礎后就可以直接進入這一節(jié)了。

在實際的工業(yè)推薦系統(tǒng)中,一般會有四個環(huán)節(jié):

圖片
我梳理了這四個環(huán)節(jié)中用到的主流技術(shù),整理成了如下導圖:

圖片
熱追推薦算法

上圖就是整個推薦算法的核心內(nèi)容。這里先放出這個導圖,一是讓大家對推薦算法有個整體框架,二是告訴大家后續(xù)文章的內(nèi)容:打算通過解讀論文的形式,結(jié)合自身在工作中接觸的工業(yè)場景,把里面的模型和知識點一一為大家解讀。

這個系列我取名:'熱追'推薦算法。主要包括以下四個部分:

召回粗排

召回的目的是根據(jù)用戶部分特征,從海量物品庫快速找到小部分用戶感興趣的物品交給精排,重點是強調(diào)快。主要有兩大類召回方式,一類是策略規(guī)則,一類是監(jiān)督模型+embedding。其中策略規(guī)則,往往和業(yè)務場景是強相關,不同的場景會有不同的召回方式,對于這種'特異性'較強的知識,會放到后期講。目前打算先講解普適的方法,就是模型+embedding。上圖梳理出了目前給用戶和物品打embedding的主流方法, 比如FM系列(FM,FFM等), 用戶行為序列,基于圖和知識圖譜系列,經(jīng)典雙塔系列等。這些方法看似很多很復雜,其實本質(zhì)上還是給用戶和物品打embedding而已,只不過考慮的角度方式不同。這一塊的內(nèi)容,幾乎每個模型都對應著經(jīng)典paper,所以會采用解讀論文的方式給大家分享。在解讀的過程中,對于一些重要模型,會進行代碼復現(xiàn),并應用到一些真實的實踐任務中。至于粗排,有時候召回環(huán)節(jié)返回的物品數(shù)量還是太多,怕精排速度跟不上,所以可以在召回和精排之間加一個粗排環(huán)節(jié),通過少量用戶和物品特征,簡單模型,來對召回的結(jié)果進行個粗略的排序,在保證一定精準的前提下,進一步減少往后傳送的物品數(shù)量,粗排往往是可選的。因此粗排用到的很多技術(shù)與召回重合,所以先暫且歸并到召回里,等后面把整體的基礎知識都補充完畢了,再看情況要不要展開這塊。

精排

精排階段使用你能想到的任何特征,可以上你能承受速度極限的復雜模型,盡可能精準地對物品進行個性化排序,強調(diào)準確性。這一塊關鍵技術(shù)主要分為三大塊:

  1. CTR預估:LR、FM家族、自動特征交叉的DNN家族。
  2. 多任務學習(Multi-Task Learning,也稱為多目標學習)。多任務是很常見的,比如視頻推薦中,用戶喜歡、收藏、評論。而不同的任務可能會互相沖突,互相影響,造成模型學習起來十分困難。所以這一塊是重難點,也是很多大公司的研究重點,更是未來的一大發(fā)展趨勢。但好在這里每個模型或者技術(shù)有對應paper,所以和召回一樣,這里依然可以利用解讀paper的方式,把這些模型和技術(shù)娓娓道來。
  3. 排序打分公式融合。


重排

考慮到上面的兩塊是核心,這塊沒有詳細的展開整理,并且這塊和業(yè)務場景策略強相關,很依賴工作經(jīng)驗,目前了解的也不是很多。后續(xù)先解讀幾篇重排模型的經(jīng)典論文,等學習了相關技術(shù),再來不斷完善這塊。

冷啟動

冷啟動問題是指對于新用戶和新商品,他們沒有歷史交互數(shù)據(jù),無法分析歷史喜好,這個時候我們應該如何做推薦。冷啟動技術(shù)會穿插到召回或者重排中,有時也會和上面推薦系統(tǒng)做成并行的兩路,專門應對冷啟動場景。

參考資料:

  1. 首先當然是后續(xù)自己寫的文章啦哈哈哈。主要是因為搞算法的人學習模型都是參考論文,這也是為什么我后面分享這一塊內(nèi)容都是以解讀論文的形式。
  2. 一定要推薦一本書籍的話,我選王喆的《深度學習推薦系統(tǒng)》。這本書高屋建瓴的介紹了推薦系統(tǒng)整體架構(gòu),發(fā)展歷史以及未來趨勢,還有各種推薦模型的演化之路,很適合前期用來當做科普。但是具體的模型并沒有深入講解,還是得自己去看論文解讀。
  3. 再就是一些我認為很優(yōu)秀的開源項目:
    1. 強子整理的
      https://github.com/zhongqiangwu960812/AI-RecommenderSystem
    2. 我的另一個好友潛心整理,star已過千 https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0


推薦系統(tǒng)實戰(zhàn)項目

理論一定要與實踐結(jié)合,否則就是空中樓閣。為此我們打造了一個新聞推薦項目:基于我們之前的開源項目(fun-rec:https://github.com/datawhalechina/fun-rec)做了一個完整升級。實現(xiàn)了從前端、后端、數(shù)據(jù)庫、推薦模型等整個流程。項目規(guī)劃圖如下:

圖片
新聞推薦系統(tǒng)

階段一

物料池的構(gòu)建:

  1. Mysql基礎及python調(diào)用(簡介、安裝、簡單的命令行基礎、python如何調(diào)用mysql數(shù)據(jù)(增刪改查,排序))
  2. MongoDB基礎及python調(diào)用
  3. Redis基礎及python調(diào)用
  4. Scrapy基礎及新聞爬取
  5. 新聞畫像構(gòu)建(存入MongoDB)

前端展示:

  1. Vue簡介及基本使用(對于我們做推薦算法的,了解一些前后端交互之類的就夠了)
  2. 前后端如何交互
  3. 用戶注冊界面
  4. 新聞展示(內(nèi)容、時間、點贊次數(shù),收藏次數(shù))
  5. 可以保留用戶的行為(user_id, news_id, action(點贊、收藏、閱讀),time)

階段二

有了前端及物料池后,就需要設計簡單的冷啟動規(guī)則來收集用戶的行為數(shù)據(jù)以及用戶的基本屬性特征。這一部分數(shù)據(jù)可能需要參加開源學習的同學來一起幫忙完善這個數(shù)據(jù)集,這樣數(shù)據(jù)才是有意義的。

  1. 收集數(shù)據(jù)
    1. 在服務器上部署數(shù)據(jù)收集的系統(tǒng)(新聞數(shù)據(jù)+用戶行為數(shù)據(jù))
    2. 冷啟動策略

  2. 冷啟動
    1. 用戶側(cè)
    2. 物品側(cè)
    3. 系統(tǒng)側(cè)


階段三

這個階段就是推薦算法大展身手的地方啦。我們可以把上一節(jié)學到的推薦算法,在這里盡情嘗試,吹拉彈唱任你挑選。

  1. 離線評估指標
  2. 多路召回
    1. 特征工程
    2. 規(guī)則類
    3. 模型類
  3. 召回評估
  4. 排序
    1. DeepFM
    2. 排序評估
  5. 規(guī)則+重排

階段四

最后就是一些運營類知識,保證系統(tǒng)的高可用性
  1. 推薦服務,前后端交互(flask)
  2. 任務調(diào)度
  3. 系統(tǒng)部署
  4. 規(guī)范類修改


結(jié)束語

本文作為推薦系統(tǒng)的開篇,不僅講解了入門推薦系統(tǒng)所需前置知識、基礎、進階、實戰(zhàn)等全部知識點,還為后續(xù)推薦算法理論知識與實戰(zhàn)項目定下計劃。希望大家多多關注交流,我會按時更新后續(xù)系列文章。

編輯:王菁

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多