小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

萬(wàn)字入門(mén)推薦系統(tǒng)

 520jefferson 2021-11-25
來(lái)源:毛小偉

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

本文作者整理出了這份萬(wàn)字入門(mén)推薦系統(tǒng),涵蓋了推薦系統(tǒng)基礎(chǔ)、進(jìn)階、實(shí)戰(zhàn)的全部知識(shí)點(diǎn),

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

本文框架目錄如下:

圖片

萬(wàn)字入門(mén)推薦系統(tǒng)

數(shù)學(xué)

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

微積分

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

重點(diǎn)掌握函數(shù)的求導(dǎo)法則(特別是鏈?zhǔn)椒▌t),以及泰勒公式。這對(duì)后續(xù)的梯度下降法,牛頓法,擬牛頓法等優(yōu)化算法的推導(dǎo)至關(guān)重要!

線(xiàn)性代數(shù)

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

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

概率論

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

重點(diǎn)掌握常見(jiàn)概率分布、概率公式。

總結(jié)

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

參考資料:

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


計(jì)算機(jī)基礎(chǔ)

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

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

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

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

參考資料:

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


計(jì)算機(jī)組成原理

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

操作系統(tǒng)

是應(yīng)用程序與硬件之間的管家:對(duì)下管理計(jì)算機(jī)硬件資源(CPU、存儲(chǔ)器、IO設(shè)備)、對(duì)上管理應(yīng)用程序。
圖片

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

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

參考資料:

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

計(jì)算機(jī)網(wǎng)絡(luò)

很多教材都是從五層模型(物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層)講解。其實(shí)這樣講是比較晦澀難懂的,因?yàn)楹芏鄸|西我們都沒(méi)接觸過(guò),很陌生。好的辦法是通過(guò)人類(lèi)的語(yǔ)言系統(tǒng)進(jìn)行類(lèi)比。計(jì)算機(jī)網(wǎng)絡(luò)是計(jì)算機(jī)的語(yǔ)言系統(tǒng),與人類(lèi)語(yǔ)言系統(tǒng)的本質(zhì)是一樣的。

人類(lèi)語(yǔ)言系統(tǒng)構(gòu)成:

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

以此類(lèi)比到計(jì)算機(jī)網(wǎng)絡(luò):

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

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

參考資料:

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


數(shù)據(jù)庫(kù)

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

參考資料:

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

機(jī)器學(xué)習(xí)

人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)關(guān)系如下:

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

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

其次是經(jīng)典的模型。機(jī)器學(xué)習(xí)模型非常多,全部掌握不現(xiàn)實(shí),我給大家羅列幾個(gè)經(jīng)典,也是面試中常考的模型:邏輯回歸、SVM、樹(shù)模型、集成學(xué)習(xí)、樸素貝葉斯、K-Means聚類(lèi)、PCA。(EM、最大熵、概率圖這些考的少,能了解是加分項(xiàng))。

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

圖片

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

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

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

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

關(guān)于上面這些知識(shí),整理一個(gè)系列幫助大家由點(diǎn)及面打通這塊知識(shí),文章已寫(xiě)了五篇,后面會(huì)陸續(xù)放出來(lái)。

實(shí)戰(zhàn)

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

再就是書(shū)籍:《機(jī)器學(xué)習(xí)算法競(jìng)賽實(shí)戰(zhàn)》這本書(shū)是Datawhale成員,top級(jí)競(jìng)賽選手魚(yú)佬寫(xiě)的。

參考資料:

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

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

深度學(xué)習(xí)

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

掌握了基礎(chǔ)后,再根據(jù)自身領(lǐng)域?qū)W習(xí)相關(guān)的模型。大部分人找工作屬于這三個(gè)領(lǐng)域:

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


實(shí)戰(zhàn)

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

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

參考資料:

  1. 李沐《動(dòng)手學(xué)深度學(xué)習(xí)》https://zh-v2./
  2. 邱錫鵬《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》https://nndl./
  3. 吳恩達(dá)《深度學(xué)習(xí)》https://www.bilibili.com/video/BV1FT4y1E74V
  4. 《DeepLearning》,又名「花書(shū)」,被譽(yù)為深度學(xué)習(xí)領(lǐng)域圣經(jīng)。
  5. TensorFlow、pytorch官網(wǎng)是最好的參考資料。如果英語(yǔ)不好,那么可以看看下面的資料:
    1. Pytorch學(xué)習(xí)筆記: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深度學(xué)習(xí)快速入門(mén)教程:https://www.bilibili.com/video/BV1hE411t7RN


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

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

除了熟悉數(shù)據(jù)分析工具以外,其實(shí)更需要的是數(shù)據(jù)分析的方法,我覺(jué)得最好的學(xué)習(xí)方式就是看開(kāi)源競(jìng)賽的方案,因?yàn)樵陂_(kāi)源方案中,作者會(huì)寫(xiě)很多他們分析問(wèn)題的思路,以及對(duì)可視化結(jié)果給出的他們認(rèn)為的正確觀點(diǎn)。

參考資料:

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

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


大數(shù)據(jù)

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

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

參考資料:

這一塊實(shí)操性特別強(qiáng),所以建議先看視頻,跟著視頻一步步來(lái):

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


推薦算法理論知識(shí)

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

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

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

圖片
熱追推薦算法

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

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

召回粗排

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

精排

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

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


重排

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

冷啟動(dòng)

冷啟動(dòng)問(wèn)題是指對(duì)于新用戶(hù)和新商品,他們沒(méi)有歷史交互數(shù)據(jù),無(wú)法分析歷史喜好,這個(gè)時(shí)候我們應(yīng)該如何做推薦。冷啟動(dòng)技術(shù)會(huì)穿插到召回或者重排中,有時(shí)也會(huì)和上面推薦系統(tǒng)做成并行的兩路,專(zhuān)門(mén)應(yīng)對(duì)冷啟動(dòng)場(chǎng)景。

參考資料:

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


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

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

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

階段一

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

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

前端展示:

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

階段二

有了前端及物料池后,就需要設(shè)計(jì)簡(jiǎn)單的冷啟動(dòng)規(guī)則來(lái)收集用戶(hù)的行為數(shù)據(jù)以及用戶(hù)的基本屬性特征。這一部分?jǐn)?shù)據(jù)可能需要參加開(kāi)源學(xué)習(xí)的同學(xué)來(lái)一起幫忙完善這個(gè)數(shù)據(jù)集,這樣數(shù)據(jù)才是有意義的。

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

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


階段三

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

  1. 離線(xiàn)評(píng)估指標(biāo)
  2. 多路召回
    1. 特征工程
    2. 規(guī)則類(lèi)
    3. 模型類(lèi)
  3. 召回評(píng)估
  4. 排序
    1. DeepFM
    2. 排序評(píng)估
  5. 規(guī)則+重排

階段四

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


結(jié)束語(yǔ)

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

編輯:王菁

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多