日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

推荐常用算法之-基于内容的推荐(转自-BreezeDeus博主)

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐常用算法之-基于内容的推荐(转自-BreezeDeus博主) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Collaborative Filtering Recommendations (協同過濾,簡稱CF) 是目前最流行的推薦方法,在研究界和工業界得到大量使用。但是,工業界真正使用的系統一般都不會只有CF推薦算法,Content-based Recommendations (CB) 基本也會是其中的一部分。

????? CB應該算是最早被使用的推薦方法吧,它根據用戶過去喜歡的產品(本文統稱為?item),為用戶推薦和他過去喜歡的產品相似的產品。例如,一個推薦飯店的系統可以依據某個用戶之前喜歡很多的烤肉店而為他推薦烤肉店。 CB最早主要是應用在信息檢索系統當中,所以很多信息檢索及信息過濾里的方法都能用于CB中。

????? CB的過程一般包括以下三步:

  • Item Representation:為每個item抽取出一些特征(也就是item的content了)來表示此item;
  • Profile Learning:利用一個用戶過去喜歡(及不喜歡)的item的特征數據,來學習出此用戶的喜好特征(profile);
  • Recommendation Generation:通過比較上一步得到的用戶profile與候選item的特征,為此用戶推薦一組相關性最大的item。
  • (3)中對于上面的三個步驟給出一張很細致的流程圖(第一步對應著Content Analyzer,第二步對應著Profile Learner,第三步對應著Filtering Component):

    ?舉個例子說明前面的三個步驟。對于個性化閱讀來說,一個item就是一篇文章。根據上面的第一步,我們首先要從文章內容中抽取出代表它們的屬性。常用的方法就是利用出現在一篇文章中詞來代表這篇文章,而每個詞對應的權重往往使用信息檢索中的tf-idf來計算。比如對于本文來說,詞“CB”、“推薦”和“喜好”的權重會比較大,而“烤肉”這個詞的權重會比較低。利用這種方法,一篇抽象的文章就可以使用具體的一個向量來表示了。第二步就是根據用戶過去喜歡什么文章來產生刻畫此用戶喜好的 profile了,最簡單的方法可以把用戶所有喜歡的文章對應的向量的平均值作為此用戶的profile。比如某個用戶經常關注與推薦系統有關的文章,那么他的profile中“CB”、“CF”和“推薦”對應的權重值就會較高。在獲得了一個用戶的profile后,CB就可以利用所有item與此用戶profile的相關度對他進行推薦文章了。一個常用的相關度計算方法是cosine。最終把候選item里與此用戶最相關(cosine值最大)的N個item作為推薦返回給此用戶。

    1. Item Representation

    真實應用中的item往往都會有一些可以描述它的屬性。這些屬性通常可以分為兩種:結構化的(structured)屬性非結構化的(unstructured)屬性

    • 結構化的屬性 : 就是這個屬性的意義比較明確,其取值限定在某個范圍
    • 非結構化的屬性 : 往往其意義不太明確,取值也沒什么限制,不好直接使用。比如在交友網站上,item就是人,一個item會有結構化屬性如身高、學歷、籍貫等,也會有非結構化屬性(如item自己寫的交友宣言,博客內容等等)

    對于結構化數據,我們自然可以拿來就用;但對于非結構化數據(如文章),我們往往要先把它轉化為結構化數據后才能在模型里加以使用。真實場景中碰到最多的非結構化數據可能就是文章了(如個性化閱讀中)。

    下面我們就詳細介紹下如何把非結構化的一篇文章結構化。如何代表一篇文章在信息檢索中已經被研究了很多年了,下面介紹的表示技術其來源也是信息檢索,其名稱為向量空間模型(Vector Space Model,簡稱VSM)。

    記我們要表示的所有文章集合為?,而所有文章中出現的詞(對于中文文章,首先得對所有文章進行分詞)的集合(也稱為詞典)為。也就是說,我們有N篇要處理的文章,而這些文章里包含了n個不同的詞。我們最終要使用一個向量來表示一篇文章,比如第j篇文章被表示為,其中表示第1個詞在文章j中的權重,值越大表示越重要;中其他向量的解釋類似。所以,為了表示第j篇文章,現在關鍵的就是如何計算各分量的值了。例如,我們可以選取為1,如果詞出現在第 j 篇文章中;選取為0,如果未出現在第j篇文章中。我們也可以選取為詞出現在第 j 篇文章中的次數(frequency)。但是用的最多的計算方法還是信息檢索中常用的詞頻-逆文檔頻率(term frequency–inverse document frequency,簡稱tf-idf)。第j篇文章中與詞典里第k個詞對應的tf-idf為:

    其中是第k個詞在文章j中出現的次數,而是所有文章中包括第k個詞的文章數量。最終第k個詞在文章j中的權重由下面的公式獲得:

    做歸一化的好處是不同文章之間的表示向量被歸一到一個量級上,便于下面步驟的操作。?

    2.?Profile Learning

    假設用戶u已經對一些item給出了他的喜好判斷,喜歡其中的一部分item,不喜歡其中的另一部分。那么,這一步要做的就是通過用戶u過去的這些喜好判斷,為他產生一個模型。有了這個模型,我們就可以根據此模型來判斷用戶u是否會喜歡一個新的item。所以,我們要解決的是一個典型的有監督分類問題,理論上機器學習里的分類算法都可以照搬進這里。

    ????? 下面我們簡單介紹下CB里常用的一些學習算法:

    2.1 最近鄰方法(k-Nearest Neighbor,簡稱kNN)

    對于一個新的item,最近鄰方法首先找用戶u已經評判過并與此新item最相似的k個item,然后依據用戶u對這k個item的喜好程度來判斷其對此新item的喜好程度。這種做法和CF中的item-based kNN很相似,差別在于這里的item相似度是根據item的屬性向量計算得到,而CF中是根據所有用戶對item的評分計算得到。

    對于這個方法,比較關鍵的可能就是如何通過item的屬性向量計算item之間的兩兩相似度。[2]中建議對于結構化數據,相似度計算使用歐幾里得距離;而如果使用向量空間模型(VSM)來表示item的話,則相似度計算可以使用cosine。

    2.2 Rocchio算法

    ??????Rocchio算法是信息檢索中處理相關反饋(Relevance Feedback)的一個著名算法。比如你在搜索引擎里搜“蘋果”,當你最開始搜這個詞時,搜索引擎不知道你到底是要能吃的蘋果,還是要不能吃的蘋果,所以它往往會盡量呈現給你各種結果。當你看到這些結果后,你會點一些你覺得相關的結果(這就是所謂的相關反饋了)。然后如果你翻頁查看第二頁的結果時,搜索引擎可以通過你剛才給的相關反饋,修改你的查詢向量取值,重新計算網頁得分,把跟你剛才點擊的結果相似的結果排前面。比如你最開始搜索“蘋果”時,對應的查詢向量是{“蘋果” : 1}。而當你點擊了一些與Mac、iPhone相關的結果后,搜索引擎會把你的查詢向量修改為{“蘋果” : 1, “Mac” : 0.8, “iPhone” : 0.7},通過這個新的查詢向量,搜索引擎就能比較明確地知道你要找的是不能吃的蘋果了。Rocchio算法的作用就是用來修改你的查詢向量的:{“蘋果” : 1}? --> {“蘋果” : 1, “Mac” : 0.8, “iPhone” : 0.7}。

    ????? 在CB里,我們可以類似地使用Rocchio算法來獲得用戶u的profile:

    其中表示item j的屬性,與分別表示已知的用戶u喜歡與不喜歡的item集合;而與為正負反饋的權重,它們的值由系統給定。? 在獲得后,對于某個給定的item j,我們可以使用與的相似度來代表用戶u對j的喜好度。

    ? Rocchio算法的一個好處是可以根據用戶的反饋實時更新,其更新代價很小。

    2.3?決策樹算法(Decision Tree,簡稱DT)

    當item的屬性較少而且是結構化屬性時,決策樹一般會是個好的選擇。這種情況下決策樹可以產生簡單直觀、容易讓人理解的結果。而且我們可以把決策樹的決策過程展示給用戶u,告訴他為什么這些item會被推薦。但是如果item的屬性較多,且都來源于非結構化數據(如item是文章),那么決策樹的效果可能并不會很好。

    2.4?線性分類算法(Linear Classifer,簡稱LC)

    ? 對于我們這里的二類問題,線性分類器(LC)嘗試在高維空間找一個平面,使得這個平面盡量分開兩類點。也就是說,一類點盡可能在平面的某一邊,而另一類點盡可能在平面的另一邊。?仍以學習用戶u的分類模型為例。表示item j的屬性向量,那么LC嘗試在空間中找平面,使得此平面盡量分開用戶u喜歡與不喜歡的item。其中的就是我們要學習的參數了。最常用的學習的方法就是梯度下降法了,其更新過程如下:

    其中的上角標t表示第t次迭代,表示用戶u對item j的打分(例如喜歡則值為1,不喜歡則值為-1)。為學習率,它控制每步迭代變化多大,由系統給定。

    和Rocchio算法一樣,上面更新公式的好處就是它可以以很小的代價進行實時更新,實時調整用戶u對應的。?說到這里,很多童鞋可能會想起一些著名的線性分類器:Logistic Regression和Linear SVM等等,它們當然能勝任我們這里的分類任務。[2]中提到Linear SVM用在文本分類上能獲得相當不錯的效果:)。如果item屬性的每個分量都是0/1取值的話(如item為文章,的第k個分量為1表示詞典中第k個詞在item j中,為0表示第k個詞不在item j中),那么還有一種很有意思的啟發式更新的算法:Winnow算法。[4]中就是使用Winnow算法來獲得user profile的。

    3.5?樸素貝葉斯算法(Naive Bayes,簡稱NB)

    NB算法就像它的簡稱一樣,牛逼!NB經常被用來做文本分類,它假設在給定一篇文章的類別后,其中各個詞出現的概率相互獨立。它的假設雖然很不靠譜,但是它的結果往往驚人地好。再加上NB的代碼實現比較簡單,所以它往往是很多分類問題里最先被嘗試的算法。我們現在的profile learning問題中包括兩個類別:用戶u喜歡的item,以及他不喜歡的item。在給定一個item的類別后,其各個屬性的取值概率互相獨立。我們可以利用用戶u的歷史喜好數據訓練NB,之后再用訓練好的NB對給定的item做分類。NB的介紹很多,這里就不再啰嗦了,有不清楚的童鞋可以參考NB Wiki,或者[1-3]。

    3.?Recommendation Generation

    如果上一步Profile Learning中使用的是分類模型(如DT、LC和NB),那么我們只要把模型預測的用戶最可能感興趣的n個item作為推薦返回給用戶即可。而如果Profile Learning中使用的直接學習用戶屬性的方法(如Rocchio算法),那么我們只要把與用戶屬性最相關的n個item作為推薦返回給用戶即可。其中的用戶屬性與item屬性的相關性可以使用如cosine等相似度度量獲得。

    下面說說CB的優缺點。

    3.1?CB的優點

  • 用戶之間的獨立性(User Independence):既然每個用戶的profile都是依據他本身對item的喜好獲得的,自然就與他人的行為無關。而CF剛好相反,CF需要利用很多其他人的數據。CB的這種用戶獨立性帶來的一個顯著好處是別人不管對item如何作弊(比如利用多個賬號把某個產品的排名刷上去)都不會影響到自己。
  • 好的可解釋性(Transparency):如果需要向用戶解釋為什么推薦了這些產品給他,你只要告訴他這些產品有某某屬性,這些屬性跟你的品味很匹配等等。
  • 新的item可以立刻得到推薦(New Item Problem):只要一個新item加進item庫,它就馬上可以被推薦,被推薦的機會和老的item是一致的。而CF對于新item就很無奈,只有當此新item被某些用戶喜歡過(或打過分),它才可能被推薦給其他用戶。所以,如果一個純CF的推薦系統,新加進來的item就永遠不會被推薦。
  • 3.2 CB的缺點

  • item的特征抽取一般很難(Limited Content Analysis):如果系統中的item是文檔(如個性化閱讀中),那么我們現在可以比較容易地使用信息檢索里的方法來“比較精確地”抽取出item的特征。但很多情況下我們很難從item中抽取出準確刻畫item的特征,比如電影推薦中item是電影,社會化網絡推薦中item是人,這些item屬性都不好抽。其實,幾乎在所有實際情況中我們抽取的item特征都僅能代表item的一些方面,不可能代表item的所有方面。這樣帶來的一個問題就是可能從兩個item抽取出來的特征完全相同,這種情況下CB就完全無法區分這兩個item了。比如如果只能從電影里抽取出演員、導演,那么兩部有相同演員和導演的電影對于CB來說就完全不可區分了。
  • 無法挖掘出用戶的潛在興趣Over-specialization):既然CB的推薦只依賴于用戶過去對某些item的喜好,它產生的推薦也都會和用戶過去喜歡的item相似。如果一個人以前只看與推薦有關的文章,那CB只會給他推薦更多與推薦相關的文章,它不會知道用戶可能還喜歡數碼。
  • 無法為新用戶產生推薦(New User Problem):新用戶沒有喜好歷史,自然無法獲得他的profile,所以也就無法為他產生推薦了。當然,這個問題CF也有。
  • CB應該算是第一代的個性化應用中最流行的推薦算法了。但由于它本身具有某些很難解決的缺點(如上面介紹的第1點),再加上在大多數情況下其精度都不是最好的,目前大部分的推薦系統都是以其他算法為主(如CF),而輔以CB以解決主算法在某些情況下的不精確性(如解決新item問題)。但CB的作用是不可否認的,只要具體應用中有可用的屬性,那么基本都能在系統里看到CB的影子。組合CB和其他推薦算法的方法很多,最常用的可能是用CB來過濾其他算法的候選集,把一些不太合適的候選(比如不要給小孩推薦偏成人的書籍)去掉。

    [References]

    [1] Gediminas Adomavicius and Alexander Tuzhilin, Towards the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions

    [2] Michael J. Pazzani and Daniel Billsus, Content-Based Recommendation Systems, 2007

    [3] Pasquale Lops, Marco de Gemmis and Giovanni Semeraro, Chapter 3 in?Recommender Systems Handbook, 2011

    [4] Michael J. Pazzani, A Framework for Collaborative, Content-Based and Demographic Filtering, 1999

    總結

    以上是生活随笔為你收集整理的推荐常用算法之-基于内容的推荐(转自-BreezeDeus博主)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 原神女裸体看个够无遮挡 | 麻豆porn| 国产亚洲黄色片 | 日韩在线小视频 | 色播激情 | 99在线视频精品 | 久久伊人免费 | 婷婷天堂网 | 潘金莲裸体一级淫片视频 | 国产v片 | 99在线精品视频免费观看20 | 亚洲精品电影在线观看 | 国模无码国产精品视频 | 少妇被又大又粗又爽毛片久久黑人 | 五月综合在线 | 五月综合激情日本mⅴ | 日韩午夜视频在线观看 | 男人影院在线 | 青娱乐最新官网 | 又大又粗欧美黑人aaaaa片 | 久久国产精品综合 | 欧美一区二区三区公司 | 高h捆绑拘束调教小说 | 亚洲精品性视频 | 男人视频网 | 色婷婷午夜 | 一久久久| 三日本三级少妇三级99 | 国产99久 | 亚洲一区色 | 色偷偷免费视频 | 午夜影院在线 | 三级黄色在线 | 成人毛片视频在线观看 | 噜噜噜在线视频 | 激情综合小说 | 91福利在线视频 | 高清国产午夜精品久久久久久 | 欧美黄网站在线观看 | n0659极腔濑亚美莉在线播放播放 | 国产精品久久久久久久久久久久久久 | 国产丝袜久久 | 精品中文字幕视频 | 肉肉av福利一精品导航 | 国产精品丝袜黑色高跟 | 日韩美女一区 | 国产精品扒开腿做爽爽爽男男 | 国产av一区二区三区最新精品 | 国产91白丝在一线播放 | 日韩免费观看一区二区三区 | 精品久久久久久久免费人妻 | 国产精品一区二区三区免费在线观看 | 日本xx视频 | 欧美毛片在线观看 | 亚洲福利在线视频 | 精品一区二区三区免费 | 国产成人高清视频 | 99精品久久久久久中文字幕 | 久久中文字幕人妻熟av女蜜柚m | av一区二区三区四区 | 黄色片视频免费看 | 99re在线观看视频 | 久久精品10 | 午夜视频在线免费 | 黄色骚视频 | 日韩黄色片网站 | 国产欧美久久久 | 69视频在线免费观看 | 五月天激情视频在线观看 | av免费观| 91麻豆国产在线观看 | 天天摸天天操天天干 | 中文字幕国产视频 | 国产91对白在线播放 | 精品人妻一区二区三区四区久久 | 国产激情av一区二区三区 | 99综合| 国产污污视频在线观看 | 成人欧美一区二区三区黑人 | 91久久在线 | 毛片在哪看 | 三级在线国产 | 色吧综合网 | 青青草精品在线 | 九九碰 | 久久99深爱久久99精品 | 国产片网址 | 香蕉视频2020| 亚洲一区高清 | 天天综合人人 | 18pao国产成视频永久免费 | 国产精品一区二区三区四区在线观看 | 中文字幕在线观看三区 | 日日夜操| www.88av| 美女超碰在线 | 亚洲精品a | 日本不卡视频一区二区三区 | 国产精品16p |