<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          商品推薦系統(tǒng)淺析

          共 8067字,需瀏覽 17分鐘

           ·

          2023-08-22 22:47



          一、綜述


          本文主要做推薦系統(tǒng)淺析,主要介紹推薦系統(tǒng)的定義,推薦系統(tǒng)的基礎(chǔ)框架,簡單介紹設(shè)計推薦的相關(guān)方法以及架構(gòu)。適用于部分對推薦系統(tǒng)感興趣的同學以及有相關(guān)基礎(chǔ)的同學,本人水平有限,歡迎大家指正。


          二、商品推薦系統(tǒng)


          2.1 推薦系統(tǒng)的定義

          推薦系統(tǒng)本質(zhì)上還是解決信息過載的問題,幫助用戶找到他們感興趣的物品,深度挖掘用戶潛在的興趣。

          2.2 推薦架構(gòu)

          其實推薦系統(tǒng)的核心流程只有召回、排序、重排。
          ??請求流程
          當一個用戶打開一個頁面,這個時候前端會攜帶用戶信息(pin或者uuid等)去請求后臺接口(通過color間接調(diào)用),當后臺收到請求后一般會先根據(jù)用戶標識進行分流獲取相關(guān)策略配置(ab策略),這些策略去決定接下來會調(diào)用召回模塊、排序模塊以及重排模塊的哪個接口。一般召回模塊分多路召回,每路召回負責召回多個商品,排序和重排負責調(diào)整這些商品的順序。最后挑選出合適的商品并進行價格、圖片等相關(guān)信息補充展現(xiàn)給用戶。用戶會根據(jù)自己是否感興趣選擇點擊或者不點擊,這些涉及用戶的行為會通過日志上報到數(shù)據(jù)平臺,為之后效果分析和利用用戶行為推薦商品奠定基礎(chǔ)。
          ??其實有些問題想說一說:
          為什么要采取召回、排序、重排這種漏斗分層架構(gòu)?
          ??(1)從性能方面
          終級:從百萬級的商品庫篩選出用戶感興趣的個位數(shù)級別的商品。
          復(fù)雜的排序模型線上推斷耗時嚴重,需要嚴格控制進入排序模型的商品數(shù)量。需要進行拆解
          (2)從目標方面
          召回模塊:召回模塊的任務(wù)是快速從大量的物品中篩選出一部分候選物品,目的是不要漏掉用戶可能會喜歡的物品。召回模塊通常采用多路召回,使用一些簡化的特征或模型。
          排序模塊:排序模塊的任務(wù)是精準排序,根據(jù)用戶的歷史行為、興趣、偏好等信息,對召回模塊篩選出的候選物品進行排序。排序模塊通常使用一些復(fù)雜的模型。
          重排模塊重排模塊的任務(wù)是對排序模塊的結(jié)果進行二次排序或調(diào)整,以進一步提高推薦的準確性和個性化程度。重排模塊通常使用一些簡單而有效的算法。
          什么是ab實驗?
          參考論文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation(google2010)
          只有在線實驗才能真正評估模型優(yōu)劣,ab實驗可以快速驗證實驗的效果,快速迭代模型。減少上線新功能的風險。
          ab算法:Hash(uuid+實驗id+創(chuàng)建時間戳)%100
          特性:分流+正交
          ?
          ??2.3召回
          召回層的存在僅僅是為用戶從廣闊的商品池子中初篩出一批還不錯的商品。為了平衡計算速度與召回率(正樣本占全部正樣本的比例)指標之間的矛盾,采用多路召回策略,每路召回策略只考慮其中的單一特征或策略。
          2.3.1 多路召回的優(yōu)劣
          多路召回:采用不同的策略、特征或者簡單模型分別召回一部分候選集,然后把候選集混合在一起供排序使用。召回率高,速度快,多路召回相互補充。
          多路召回中每路召回的截斷個數(shù)K是個超參數(shù),需要人工調(diào)參,成本高;召回通路存在重合問題,冗余。
          是否存在一種召回可以替代多路召回,向量召回應(yīng)運而生,就目前而言,仍然是以向量召回為主,其他召回為輔的架構(gòu)。
          2.3.2 召回分類
          主要分為非個性化召回,個性化召回兩大類。非個性化召回主要是進行熱點推送,推薦領(lǐng)域馬太效應(yīng)嚴重,20%的商品貢獻80%的點擊。個性化召回主要是發(fā)掘用戶感興趣的商品,著重處理每個用戶的差異點,提高商品的多樣性,保持用戶的粘性。
          非個性化召回
          (1) 熱門召回:近7天高點擊、高點贊、高銷量商品召回
          (2)新品召回:最新上架的商品召
          個性化召回
          (1)標簽召回、地域召回
          • 標簽召回:用戶感興趣的品類、品牌、店鋪召回等
          • 地域召回:根據(jù)用戶的地域召回地域內(nèi)的優(yōu)質(zhì)商品。
          (2)cf召回
          協(xié)同過濾算法是基于用戶行為數(shù)據(jù)挖掘用戶的行為偏好,從而根據(jù)用戶的行為偏好為其推薦物品,其根據(jù)的是用戶和物品的行為矩陣(共現(xiàn)矩陣)。用戶行為一般包括瀏覽、點贊、加購、點擊、關(guān)注、分享等等。
          協(xié)同過濾分為三大類:基于用戶的協(xié)同過濾(UCF)和基于物品的協(xié)同過濾(ICF)和基于模型的協(xié)同過濾(隱語義模型)。是否為用戶推薦某個物品,首先要把用戶和物品進行關(guān)聯(lián),而進行關(guān)聯(lián)的點是另一個物品還是另一個用戶,決定了這屬于哪個類型的協(xié)同過濾。而基于隱語義模型是根據(jù)用戶行為數(shù)據(jù)進行自動聚類挖掘用戶的潛在興趣特征。從而通過潛在興趣特征對用戶和物品進行關(guān)聯(lián)。
          基于物品的協(xié)同過濾(ICF):判斷是否為用戶推薦某個物品,首先根據(jù)用戶歷史行為記錄的物品和這個物品的相似關(guān)系來推斷用戶對這個物品的興趣度,從而判斷我們是否推薦這個物品。整個協(xié)同過濾過程主要分為以下幾步:計算物品之間的相似度,計算用戶對物品的興趣度,排序截取結(jié)果。
          ??商品相似度計算:
          衡量相似度主要有以下幾種方式:夾角余弦距離,杰卡德公式。由于用戶或物品的表示方式的多樣性,使得這些相似度的計算非常靈活。我們可以利用用戶和物品的行為矩陣來去計算相似度,也可以根據(jù)用戶行為、物品屬性和上下文關(guān)系構(gòu)造用戶和物品的向量表示去計算相似性。
          夾角余弦距離公式: 

          杰卡德公式J(A,B)=(|A?B|)/(|A?B|)

          商品a
          商品b 商品c 商品d
          用戶A
          1
          0
          0 1
          用戶B 0
          1 1
          0
          用戶C 1
          0 1
          1
          用戶D 1
          1 0
          0
          夾角余弦距離公式計算商品a和b的相似度:
          Wab=(1*0+0*1+1*0+1*1)/(√(1^2+0^2+1^2+1^2 )*√(0^2+1^2+0^2+1^2 ))=1/√6
          spark實現(xiàn)ICF:https://zhuanlan.zhihu.com/p/413159725?
          問題:冷啟動問題,長尾效應(yīng)。
          (3)向量召回
          向量化召回:通過學習用戶與物品低維向量化表征,將召回建模成向量空間內(nèi)的近鄰搜索問題,有效提升了召回的泛化能力與多樣性,是推薦引擎的核心召回通道。
          向量:萬物皆可向量化,Embedding就是用一個低維稠密的向量表示一個對象(詞語或者商品),主要作用是將稀疏向量轉(zhuǎn)換成稠密向量(降維的效果),這里的表示蘊含著一定的深意,使其能夠表達出對象的一部分特征,同時向量之間的距離反映對象之間的相似性。
          向量召回步驟:離線訓練生成向量,在線向量檢索。
          1.離線訓練生成向量
          word2vec:詞向量的鼻祖,由三層神經(jīng)網(wǎng)絡(luò):輸入層,隱藏層,輸出層,隱藏層沒有激活函數(shù),輸出層用了softmax計算概率。
          目標函數(shù)
          ??網(wǎng)絡(luò)結(jié)構(gòu):
          ??總的來說:輸入是詞語的序列,經(jīng)過模型訓練可以得到每個詞語對應(yīng)的向量。應(yīng)用在推薦領(lǐng)域就是輸入用戶的點擊序列,經(jīng)過模型訓練得到每個商品的向量。
          優(yōu)劣:簡單高效,但是只考慮了行為序列,沒有考慮其他特征。
          雙塔模型:
          網(wǎng)絡(luò)結(jié)構(gòu):分別稱為User塔和物品塔;其中User塔接收用戶側(cè)特征作為輸入比如用戶id、性別、年齡、感興趣的三級品類、用戶點擊序列、用戶地址等;Item塔接受商品側(cè)特征,比如商品id、類目id、價格、近三天訂單量等。數(shù)據(jù)訓練:(正樣本數(shù)據(jù),1)(負樣本,0)正樣本:點擊的商品,負樣本:全局隨機商品樣本(或者同批次其他用戶點擊樣本)
          ??優(yōu)劣:高效,完美契合召回特性,在線請求得到用戶向量,檢索召回item向量,泛化性高;用戶塔和item塔割裂,只在最后做了交互。
          2.在線向量檢索
          向量檢索:是一種基于向量空間模型(Vector Space Model)的信息檢索方法,用于在大規(guī)模文本集合中快速查找與查詢向量最相似的文檔向量。在信息檢索、推薦系統(tǒng)、文本分類中得到廣泛應(yīng)用。
          向量檢索的過程是計算向量之間的相似度,最后返回相似度較高的TopK向量返回,而向量相似度計算有多種方式。計算向量相似性的方式有歐式距離、內(nèi)積、余弦距離。歸一化后,內(nèi)積與余弦相似度計算公式等價。
          向量檢索的本質(zhì)是近似近鄰搜索(ANNS),盡可能減小查詢向量的搜索范圍,從而提高查詢速度。
          目前在工業(yè)界被大規(guī)模用到的向量檢索算法基本可以分為以下3類:
          • 局部敏感性哈希(LSH)
          • 基于圖(HNSW)
          • 基于乘積量化
          簡單介紹LSH
          LSH算法的核心思想是:將原始數(shù)據(jù)空間中的兩個相鄰數(shù)據(jù)點通過相同的映射或投影變換后,這兩個數(shù)據(jù)點在新的數(shù)據(jù)空間中仍然相鄰的概率很大,而不相鄰的數(shù)據(jù)點被映射到同一個桶的概率很小。
          相比于暴力搜索遍歷數(shù)據(jù)集中的所有點,而使用哈希,我們首先找到查詢樣本落入在哪個桶中,如果空間的劃分是在我們想要的相似性度量下進行分割的,則查詢樣本的最近鄰將極有可能落在查詢樣本的桶中,如此我們只需要在當前的桶中遍歷比較,而不用在所有的數(shù)據(jù)集中進行遍歷。當哈希函數(shù)數(shù)目H取得太大,查詢樣本與其對應(yīng)的最近鄰落入同一個桶中的可能性會變得很微弱,針對這個問題,我們可以重復(fù)這個過程L次(每一次都是不同的哈希函數(shù)),從而增加最近鄰的召回率。
          案例:基于word2vec實現(xiàn)向量召回
          ??2.4 排序
          推薦系統(tǒng)的掌上明珠
          排序階段分為粗排和精排,粗排一般出現(xiàn)在在召回結(jié)果的數(shù)據(jù)量級比較大的時候。
          進化歷程
          ??簡單介紹Wide&Deep
          背景:手動特征組合實現(xiàn)記憶性效果不錯但是特征工程太耗費人力,并且未曾出現(xiàn)的特征組合無法記憶,不能進行泛化。
          目的:使模型同時兼顧泛化和記憶能力(有效的利用歷史信息并具有強大的表達能力)
          (1)記憶能力 模型直接學習并利用歷史數(shù)據(jù)中物品或者特征共現(xiàn)頻率的能力,記憶歷史數(shù)據(jù)的分布特點,簡單模型容易發(fā)現(xiàn)數(shù)據(jù)中對結(jié)果影響較大的特征或者組合特征,調(diào)整其權(quán)重實現(xiàn)對強特征的記憶
          (2)泛化能力 模型傳遞特征的相關(guān)性,以及發(fā)掘稀疏或者從未出現(xiàn)過的稀有特征和最終標簽相關(guān)性的能力,即使是非常稀疏的特征向量輸入也能得到穩(wěn)定平滑的推薦概率。提高泛化性的例子:矩陣分解,神經(jīng)網(wǎng)絡(luò)
          ??兼顧記憶和泛化能力 (結(jié)果的準確性和擴展性) wide部分專注模型記憶,快速處理大量歷史行為特征,deep部分專注模型泛化,探索新世界,模型傳遞特征的相關(guān)性,發(fā)掘稀疏甚至從外出現(xiàn)過的稀有特征與最終標簽的相關(guān)性的能力,具有強大的表達能力。最終將wide部分和deep部分結(jié)合起來,形成統(tǒng)一的模型。
          wide部分就是基礎(chǔ)的線性模型,表示為y=W^T X+b X特征部分包括基礎(chǔ)特征和交叉特征。交叉特征在wide部分很重要,可以捕捉到特征間的交互,起到添加非線性的作用。
          deep部分為embeding層+三層神經(jīng)網(wǎng)絡(luò)(relu),前饋公式
          ??聯(lián)合訓練
          ??優(yōu)劣:為推薦/廣告/搜索排序算法之后的發(fā)展奠定了重要基礎(chǔ),從傳統(tǒng)算法跨越到深度學習算法,里程碑意義。兼顧記憶和泛化能力但是Wide側(cè)仍需要手工組合特征。
          參考論文:Wide & Deep Learning for Recommender Systems

          2.5 重排

          定義:對精排后的結(jié)果順序進行微調(diào),一方面實現(xiàn)全局最優(yōu)、一方面滿足業(yè)務(wù)訴求提升用戶體驗。比如打散策略,強插策略,提高曝光,敏感過濾
          MMR算法
          實現(xiàn)商品多樣性問題
          目的:在推薦結(jié)果準確性的同時保證推薦結(jié)果的多樣性,為了平衡推薦結(jié)果的多樣性和相關(guān)性
          算法原理 如公式
          ??D:商品集合,Q:用戶,S:已被選中的商品集合, R\S:R中未被選中的商品集合
             
             
          def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):    #s 排序后列表 r 候選項    s, r = [], list(itemScoreDict.keys())    while len(r) > 0:        score = 0        selectOne = None        # 遍歷所有剩余項        for i in r:            firstPart = itemScoreDict[i]            # 計算候選項與"已選項目"集合的最大相似度            secondPart = 0            for j in s:                sim2 = similarityMatrix[i][j]                if sim2 > second_part:                    secondPart = sim2            equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)            if equationScore > score:                score = equationScore                selectOne = i        if selectOne == None:            selectOne = i        # 添加新的候選項到結(jié)果集r,同時從s中刪除        r.remove(selectOne)        s.append(selectOne)    return (s, s[:topN])[topN > len(s)]
          意義是選擇一個與用戶最相關(guān)的同時跟已選擇物品最不相關(guān)的物品。時間復(fù)雜度O(n2) 可以通過限制選擇的個數(shù)進行降低時間復(fù)雜度
          工程實現(xiàn):需要用戶和物品的相關(guān)性和物品之間的相似性作為輸入,用戶和物品的相關(guān)性可以用排序模型的結(jié)果作為代替,物品之間的相似性可以通過協(xié)同過濾等算法得到商品向量,計算余弦距離。也可以簡單得是否同一三級類目、同一店鋪等表征。


          三、總結(jié)


          就簡單嘮叨這么多啦,主要想讓大家了解一下推薦系統(tǒng),向大家介紹一下整個推薦架構(gòu),以及整個推薦都有哪些模塊。由于本人水平有限,每個模塊也沒有講得特別細,希望之后能在工作中繼續(xù)學習這個領(lǐng)域,深挖細節(jié),產(chǎn)出更好的東西呈現(xiàn)給大家。
          -end-

          瀏覽 246
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本成人电影在线免费观看 | www骚逼| 插吧综合网 | 操逼超碰中文 | 伊人大香蕉婷婷 |