日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 架構(gòu)師社區(qū)
[導(dǎo)讀]這篇文章屬于推薦系統(tǒng)的入門篇,目的是先了解清楚推薦系統(tǒng)的基本構(gòu)成。

23張圖,帶你入門推薦系統(tǒng)

做廣告業(yè)務(wù)1年多時間了,但是平時的工作主要和 廣告工程 有關(guān),核心的廣告算法由 AI 部門支持,對我們而言可以說是「黑盒般」的存在,只需要對訓(xùn)練好的模型進行調(diào)用即可。

近期,我打算系統(tǒng)性地學(xué)習(xí)下廣告中的搜索和推薦算法,當(dāng)然更多是從工程的視角去弄清楚:算法的基本原理、以及面對線上海量數(shù)據(jù)時算法是如何解決性能問題的?整個過程,我會將有價值的技術(shù)點輸出成系列文章。

這篇文章屬于推薦系統(tǒng)的入門篇,本文暫不考慮線上環(huán)境的海量數(shù)據(jù),目的是了解清楚推薦系統(tǒng)的基本構(gòu)成,我會通過圖解推薦算法以及程序demo的形式展開,內(nèi)容包括:

23張圖,帶你入門推薦系統(tǒng)

01 走進推薦系統(tǒng)的世界

“啤酒與尿布” 的故事相信很多人都聽過,年輕爸爸去超市購買尿布時,經(jīng)常會買點啤酒犒勞自己。因此,沃爾瑪將這兩種商品進行了捆綁銷售,最終獲得了更好的銷量。

23張圖,帶你入門推薦系統(tǒng)

“啤酒與尿布”的故事 這個故事背后的理論依據(jù)就是 “推薦算法”, 因為尿布和啤酒經(jīng)常出現(xiàn)在同一個購物車中,那么向購買尿布的年輕爸爸推薦啤酒確實有一定道理。

1. 推薦系統(tǒng)到底解決的是什么問題?

推薦系統(tǒng)從20世紀90年代就被提出來了,但是真正進入大眾視野以及在各大互聯(lián)網(wǎng)公司中流行起來,還是最近幾年的事情。

隨著移動互聯(lián)網(wǎng)的發(fā)展,越來越多的信息開始在互聯(lián)網(wǎng)上傳播,產(chǎn)生了嚴重的信息過載。因此,如何從眾多信息中找到用戶感興趣的信息,這個便是推薦系統(tǒng)的價值。精準(zhǔn)推薦解決了用戶痛點,提升了用戶體驗,最終便能留住用戶。

推薦系統(tǒng)本質(zhì)上就是一個信息過濾系統(tǒng),通常分為:召回、排序、重排序這3個環(huán)節(jié),每個環(huán)節(jié)逐層過濾,最終從海量的物料庫中篩選出幾十個用戶可能感興趣的物品推薦給用戶。

23張圖,帶你入門推薦系統(tǒng)

推薦系統(tǒng)的分階段過濾流程

2. 推薦系統(tǒng)的應(yīng)用場景

哪里有海量信息,哪里就有推薦系統(tǒng),我們每天最常用的APP都涉及到推薦功能:

  • 資訊類:今日頭條、騰訊新聞等
  • 電商類:淘寶、京東、拼多多、亞馬遜等
  • 娛樂類:抖音、快手、愛奇藝等
  • 生活服務(wù)類:美團、大眾點評、攜程等
  • 社交類:微信、陌陌、脈脈等

23張圖,帶你入門推薦系統(tǒng)

頭條、京東、網(wǎng)易云音樂中的推薦功能

推薦系統(tǒng)的應(yīng)用場景通常分為以下兩類:

  • 基于用戶維度的推薦:根據(jù)用戶的歷史行為和興趣進行推薦,比如淘寶首頁的猜你喜歡、抖音的首頁推薦等。
  • 基于物品維度的推薦:根據(jù)用戶當(dāng)前瀏覽的標(biāo)的物進行推薦,比如打開京東APP的商品詳情頁,會推薦和主商品相關(guān)的商品給你。

3. 搜索、推薦、廣告三者的異同

搜索和推薦是AI算法最常見的兩個應(yīng)用場景,在技術(shù)上有相通的地方。這里提到廣告,主要考慮很多沒做過廣告業(yè)務(wù)的同學(xué)不清楚為什么廣告和搜索、推薦會有關(guān)系,所以做下解釋。

  • 搜索:有明確的搜索意圖,搜索出來的結(jié)果和用戶的搜索詞相關(guān)。
  • 推薦:不具有目的性,依賴用戶的歷史行為和畫像數(shù)據(jù)進行個性化推薦。

  • 廣告:借助搜索和推薦技術(shù)實現(xiàn)廣告的精準(zhǔn)投放,可以將廣告理解成搜索推薦的一種應(yīng)用場景,技術(shù)方案更復(fù)雜,涉及到智能預(yù)算控制、廣告競價等。

02 推薦系統(tǒng)的整體架構(gòu)

23張圖,帶你入門推薦系統(tǒng)

推薦系統(tǒng)的整體架構(gòu)


上面是推薦系統(tǒng)的整體架構(gòu)圖,自下而上分成了多層,各層的主要作用如下:

  • 數(shù)據(jù)源:推薦算法所依賴的各種數(shù)據(jù)源,包括物品數(shù)據(jù)、用戶數(shù)據(jù)、行為日志、其他可利用的業(yè)務(wù)數(shù)據(jù)、甚至公司外部的數(shù)據(jù)。
  • 計算平臺:負責(zé)對底層的各種異構(gòu)數(shù)據(jù)進行清洗、加工,離線計算和實時計算。

  • 數(shù)據(jù)存儲層:存儲計算平臺處理后的數(shù)據(jù),根據(jù)需要可落地到不同的存儲系統(tǒng)中,比如Redis中可以存儲用戶特征和用戶畫像數(shù)據(jù),ES中可以用來索引物品數(shù)據(jù),F(xiàn)aiss中可以存儲用戶或者物品的embedding向量等。

  • 召回層:包括各種推薦策略或者算法,比如經(jīng)典的協(xié)同過濾,基于內(nèi)容的召回,基于向量的召回,用于托底的熱門推薦等。為了應(yīng)對線上高并發(fā)的流量,召回結(jié)果通常會預(yù)計算好,建立好倒排索引后存入緩存中。

  • 融合過濾層:觸發(fā)多路召回,由于召回層的每個召回源都會返回一個候選集,因此這一層需要進行融合和過濾。

  • 排序?qū)樱?/strong>利用機器學(xué)習(xí)或者深度學(xué)習(xí)模型,以及更豐富的特征進行重排序,篩選出更小、更精準(zhǔn)的推薦集合返回給上層業(yè)務(wù)。

從數(shù)據(jù)存儲層到召回層、再到融合過濾層和排序?qū)樱?span style="color: rgb(74, 74, 74); font-size: 15px;">候選集逐層減少,但是精準(zhǔn)性要求越來越高,因此也帶來了計算復(fù)雜度的逐層增加,這個便是推薦系統(tǒng)的最大挑戰(zhàn)。 其實對于推薦引擎來說,最核心的部分主要是兩塊:特征和算法。

23張圖,帶你入門推薦系統(tǒng)

推薦引擎的核心功能和技術(shù)方案

特征計算由于數(shù)據(jù)量大,通常采用大數(shù)據(jù)的離線和實時處理技術(shù),像Spark、Flink等,然后將計算結(jié)果保存在Redis或者其他存儲系統(tǒng)中(比如HBase、MongoDB或者ES),供召回和排序模塊使用。 召回算法的作用是:從海量數(shù)據(jù)中快速獲取一批候選數(shù)據(jù),要求是快和盡可能的準(zhǔn)。這一層通常有豐富的策略和算法,用來確保多樣性,為了更好的推薦效果,某些算法也會做成近實時的。 排序算法的作用是:對多路召回的候選集進行精細化排序。它會利用物品、用戶以及它們之間的交叉特征,然后通過復(fù)雜的機器學(xué)習(xí)或者深度學(xué)習(xí)模型進行打分排序,這一層的特點是計算復(fù)雜但是結(jié)果更精準(zhǔn)。

03 圖解經(jīng)典的協(xié)同過濾算法

了解了推薦系統(tǒng)的整體架構(gòu)和技術(shù)方案后,下面帶大家深入一下算法細節(jié)。這里選擇圖解的是推薦系統(tǒng)中的明星算法:協(xié)同過濾(Collaborative Filtering,CF)。 對于工程同學(xué)來說,可能覺得 AI 算法晦澀難懂,門檻太高,確實很多深度學(xué)習(xí)算法的確是這樣,但是協(xié)同過濾卻是一個簡單同時效果很好的算法,只要你有初中數(shù)學(xué)的基礎(chǔ)就能看懂。

1. 協(xié)同過濾是什么?

協(xié)同過濾算法的核心就是找相似,它基于用戶的歷史行為(瀏覽、收藏、評論等),去發(fā)現(xiàn)用戶對物品的喜好,并對喜好進行度量和打分,最終篩選出推薦集合。它又包括兩個分支:

  • 基于用戶的協(xié)同過濾: User-CF,核心是找相似的人。比如下圖中,用戶 A 和用戶 C 都購買過物品 a 和物品 b,那么可以認為 A 和 C 是相似的,因為他們共同喜歡的物品多。這樣,就可以將用戶 A 購買過的物品 d 推薦給用戶 C

23張圖,帶你入門推薦系統(tǒng)

基于用戶的協(xié)同過濾示例

  • 基于物品的協(xié)同過濾:Item-CF,核心是找相似的物品。比如下圖中,物品 a 和物品 b 同時被用戶 A,B,C 購買了,那么物品 a 和 物品 b 被認為是相似的,因為它們的共現(xiàn)次數(shù)很高。這樣,如果用戶 D 購買了物品 a,則可以將和物品 a 最相似的物品 b 推薦給用戶 D。

23張圖,帶你入門推薦系統(tǒng) 基于物品的協(xié)同過濾 示例 2. 如何找相似?

前面講到,協(xié)同過濾的核心就是找相似,User-CF是找用戶之間的相似,Item-CF是找物品之間的相似,那到底如何衡量兩個用戶或者物品之間的相似性呢?

我們都知道,對于坐標(biāo)中的兩個點,如果它們之間的夾角越小,這兩個點越相似,這就是初中學(xué)過的余弦距離,它的計算公式如下:

23張圖,帶你入門推薦系統(tǒng)

舉個例子,A坐標(biāo)是(0,3,1),B坐標(biāo)是(4,3,0),那么這兩個點的余弦距離是0.569,余弦距離越接近1,表示它們越相似。

23張圖,帶你入門推薦系統(tǒng)

除了余弦距離,衡量相似性的方法還有很多種,比如:歐式距離、皮爾遜相關(guān)系數(shù)、Jaccard 相似系數(shù)等等,這里不做展開,只是計算公式上的差異而已。 3. Item-CF的算法流程

清楚了相似性的定義后,下面以Item-CF為例,詳細說下這個算法到底是如何選出推薦物品的?

第一步:整理物品的共現(xiàn)矩陣

假設(shè)有 A、B、C、D、E 5個用戶,其中用戶 A 喜歡物品 a、b、c,用戶 B 喜歡物品 a、b等等。

23張圖,帶你入門推薦系統(tǒng)

所謂共現(xiàn),即:兩個物品被同一個用戶喜歡了。比如物品 a 和 b,由于他們同時被用戶 A、B、C 喜歡,所以 a 和 b 的共現(xiàn)次數(shù)是3,采用這種統(tǒng)計方法就可以快速構(gòu)建出共現(xiàn)矩陣。


第二步:計算物品的相似度矩陣

對于 Item-CF 算法來說,一般不采用前面提到的余弦距離來衡量物品的相似度,而是采用下面的公式 :

23張圖,帶你入門推薦系統(tǒng)

其中,N(u) 表示喜歡物品 u 的用戶數(shù),N(v) 表示喜歡物品 v 的用戶數(shù),兩者的交集表示同時喜歡物品 u 和物品 v 的用戶數(shù)。很顯然,如果兩個物品同時被很多人喜歡,那么這兩個物品越相似。

基于第1步計算出來的共現(xiàn)矩陣以及每個物品的喜歡人數(shù),便可以構(gòu)造出物品的相似度矩陣:

23張圖,帶你入門推薦系統(tǒng)

第三步:推薦物品
最后一步,便可以基于相似度矩陣推薦物品了,公式如下:

23張圖,帶你入門推薦系統(tǒng)

其中,P uj 表示用戶 u 對物品 j 的感興趣程度,值越大,越值得被推薦。N(u) 表示用戶 u 感興趣的物品集合,S(j,N) 表示和物品 j 最相似的前 N 個物品,W ij 表示物品 i 和物品 j 的相似度,R ui 表示用戶 u 對物品 i 的興趣度。

上面的公式有點抽象,直接看例子更容易理解,假設(shè)我要給用戶 E 推薦物品,前面我們已經(jīng)知道用戶 E 喜歡物品 b 和物品 c,喜歡程度假設(shè)分別為 0.6 和 0.4。那么,利用上面的公式計算出來的推薦結(jié)果如下:

23張圖,帶你入門推薦系統(tǒng)

因為物品 b 和物品 c 已經(jīng)被用戶 E 喜歡過了,所以不再重復(fù)推薦。最終對比用戶 E 對物品 a 和物品 d 的 感興 趣程度,因為 0.682 > 0.3,因此選擇推薦物品 a。

04 從0到1搭建一個推薦系統(tǒng)

有了上面的理論基礎(chǔ)后,我們就可以用 Python 快速實現(xiàn)出一個推薦系統(tǒng)。

1. 選擇數(shù)據(jù)集

這里采用的是推薦領(lǐng)域非常經(jīng)典的 MovieLens 數(shù)據(jù)集,它是一個關(guān)于電影評分的數(shù)據(jù)集,官網(wǎng)上提供了多個不同大小的版本,下面以 ml-1m 數(shù)據(jù)集(大約100萬條用戶評分記錄)為例。

下載解壓后,文件夾中包含:ratings.dat、movies.dat、users.dat 3個文件,共6040個用戶,3900部電影,1000209條評分記錄。各個文件的格式都是一樣的,每行表示一條記錄,字段之間采用 :: 進行分割。

以ratings.dat為例,每一行包括4個屬性: UserID, MovieID, Rating, Timestamp。 通過腳本可以統(tǒng)計出不同評分的人數(shù)分布:

23張圖,帶你入門推薦系統(tǒng)

2. 讀取原始數(shù)據(jù)

程序主要使用數(shù)據(jù)集中的 ratings.dat 這個文件,通過解析該文件,抽取出 user_id、movie_id、rating 3個字段,最終構(gòu)造出算法依賴的數(shù)據(jù),并保存在變量 dataset 中,它的格式為:dict[user_id][movie_id] = rate

23張圖,帶你入門推薦系統(tǒng)

3. 構(gòu)造物品的相似度矩陣

基于第 2 步的 dataset,可以進一步統(tǒng)計出每部電影的評分次數(shù)以及電影的共生矩陣,然后再生成相似度矩陣。

23張圖,帶你入門推薦系統(tǒng)

4. 基于相似度矩陣推薦物品

最后,可以基于相似度矩陣進行推薦了,輸入一個用戶id,先針對該用戶評分過的電影,依次選出 top 10 最相似的電影,然后加權(quán)求和后計算出每個候選電影的最終評分,最后再選擇得分前 5 的電影進行推薦。

23張圖,帶你入門推薦系統(tǒng)

5. 調(diào)用推薦系統(tǒng)

下面選擇 UserId=1 這個用戶,看下程序的執(zhí)行結(jié)果。由于推薦程序輸出的是 movieId 列表,為了更直觀的了解推薦結(jié)果,這里轉(zhuǎn)換成電影的標(biāo)題進行輸出。

23張圖,帶你入門推薦系統(tǒng)

最終推薦的前5個電影為:

23張圖,帶你入門推薦系統(tǒng)

05 線上推薦系統(tǒng)的挑戰(zhàn)

通過上面的介紹,大家對推薦系統(tǒng)的基本構(gòu)成應(yīng)該有了一個初步認識,但是真正運用到線上真實環(huán)境時,還會遇到很多算法和工程上的挑戰(zhàn),絕對不是幾十行 Python 代碼可以搞定的。

1、上面的示例使用了標(biāo)準(zhǔn)化的數(shù)據(jù)集,而線上環(huán)境的數(shù)據(jù)是非標(biāo)準(zhǔn)化的,因此涉及到海量數(shù)據(jù)的收集、清洗和加工,最終構(gòu)造出模型可使用的數(shù)據(jù)集。

2、復(fù)雜且繁瑣的特征工程,都說算法模型的上限由數(shù)據(jù)和特征決定。對于線上環(huán)境,需要從業(yè)務(wù)角度選擇出可用的特征,然后對數(shù)據(jù)進行清洗、標(biāo)準(zhǔn)化、歸一化、離散化,并通過實驗效果進一步驗證特征的有效性。

3、算法復(fù)雜度如何降低?比如上面介紹的Item-CF算法,時間和空間復(fù)雜度都是O(N×N),而線上環(huán)境的數(shù)據(jù)都是千萬甚至上億級別的,如果不做算法優(yōu)化,可能幾天都跑不出數(shù)據(jù),或者內(nèi)存中根本放不下如此大的矩陣數(shù)據(jù)。

4、實時性如何滿足?因為用戶的興趣隨著他們最新的行為在實時變化的,如果模型只是基于歷史數(shù)據(jù)進行推薦,可能結(jié)果不夠精準(zhǔn)。因此,如何滿足實時性要求,以及對于新加入的物品或者用戶該如何推薦,都是要解決的問題。

5、算法效果和性能的權(quán)衡。從算法角度追求多樣性和準(zhǔn)確性,從工程角度追求性能,這兩者之間必須找到一個平衡點。

6、推薦系統(tǒng)的穩(wěn)定性和效果追蹤。需要有一套完善的數(shù)據(jù)監(jiān)控和應(yīng)用監(jiān)控體系,同時有 ABTest 平臺進行灰度實驗,進行效果對比。

寫在最后

這篇文章是推薦系統(tǒng)的入門篇,目的是讓大家對推薦系統(tǒng)先有一個整體的認識,后續(xù)我會再連載出一些文章,詳細地介紹面對具體業(yè)務(wù)和線上海量數(shù)據(jù)時,推薦系統(tǒng)應(yīng)該如何設(shè)計?


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉