您的位置:首頁>科技>正文

推薦系統入門讀什麼?

一直對各類大熱的推薦演算法保持謹慎的懷疑態度, 去年讀了項亮的《推薦系統實踐》後, 稍稍改變了些看法。 瞭解它的好處在於, 在技術與價值觀的爭論大賽中, 能把自己擺到一個比較遠的位置來思考, 瞭解後再相互比較, 會有一個更全面的認識。 就像我的一位朋友對我說的:“你先要知道什麼是理性的, 你還要知道什麼是感性的, 理性可能是你最好的選擇, 但是此時此刻, 你仍然選擇了感性。 ”

以下是一些讀書筆記, 希望和大家分享這本好書。

1.推薦系統的產生

人們從資訊匱乏時代走向了資訊超載時代,

網際空間的資訊膨脹速度遠遠超過人類的接受水準, 以往的黃頁、導航等等工具已經不夠用了, 人們希望從大量的資訊中篩選出自己感興趣的資訊, 一些資訊提供方也希望自己的資訊被人們發現。

在這種需求下, 出現了兩種不同的思路, 最終演變成了兩種不同的產品來説明人們提升效率。 一種思路認為, 人們在尋找資訊前已經有了大概的方向, 知道自己想要的東西是什麼, 我們只需要從海量的資訊中篩選出相關的資訊即可, 這種思路演變為的產品叫做搜尋引擎;另一種思路認為, 人們不需要去關心自己想要什麼, 我們在海量的資訊中找出那部分人們喜歡的資訊, 然後直接給他即可, 這種思路演變的產品叫做推薦系統。

搜尋引擎和推薦系統, 解決的都是資訊超載的問題。 搜尋引擎需要使用者主動提供準確的關鍵字來尋找資訊, 滿足使用者有明確目的主動查找資訊需求;推薦系統不需要使用者主動提供明確的需求, 由系統主動推薦資訊到使用者面前, 在使用者沒有明確目的的時候説明他們發現資訊。

2.推薦系統的類別

推薦系統的類別, 分為個性化推薦和非個性化推薦。 個性化推薦是指, 根據使用者的興趣和行為, 給使用者推薦感興趣的資訊。 非個性化推薦指, 不針對特定使用者, 對全部的使用者推薦同樣的資訊。

2.1個性化推薦

個性化推薦, 針對不同使用者推薦不同的資訊。 實行個性化推薦需要滿足兩個條件:1.存在資訊超載;2.用戶沒有明確的需求。

基於以上兩個條件來看, 某些領域天然的具有使用個性化推薦的優勢, 比如:新聞, 用戶沒有十分明確的需求(可能有比較大類型的口味偏差)且信息量太大;而某些領域天然的不具備這樣的條件, 比如被寡頭壟斷的行業(種類太少), 或者資訊更新速度太慢的行業。

而有些產品就不太適合個性化推薦, 比如我經常用的外賣app回家吃飯, 不知道哪個版本開始就把推薦的功能放在了核心位置。 首先, 一個固定地理位置附近的回家吃飯家廚相對有限, 根本不存在資訊超載的問題, 隨便翻幾下就能翻到底了;其次, 對於很多使用者來說已經有了部分明確的需求(口味等), 一個篩選或者搜索已經夠用了。

所以這個時候使用個性化推薦, 個人認為不是一個投入產出比划算的場景。

作者特別指出了一種獨特的個性化推薦——個性化廣告, 廣告是整個互聯網的重要商業模式, 需要把廣告和傳統的個性化推薦加以區分:

•狹義個性化推薦——幫使用者找到感興趣的資訊——以使用者為核心

•個性化廣告推薦——幫廣告找到對它們感興趣的用戶——以廣告為核心

2.2非個性化推薦

非個性化推薦不針對特定使用者, 對全部的使用者推薦同樣的資訊。 非個性推薦的演算法比較簡單, 有些資訊完全可以讓人工來做(比如互聯網運營同學, 或者某一領域的專家)。

非個性化推薦可以解決兩個問題:1.讓全域優秀內容被大家都看到;2.讓新加入的優秀內容被發現。

非個性化推薦在實際應用中也同樣常用, 比如, 一個電商網站的top10排行榜, 一個音樂網站的專家推薦欄目等等。

2.3小思考

選擇個性化推薦還是非個性化推薦, 需要根據產品的具體場景來分析, 主要取決於供給資源的信息量, 供給資源可能是商品、新聞、音樂等等。 當然, 對於大型平臺來說, 信息量是讓它變大的基礎資源, 所以各類推薦演算法就變得十分重要了, 對於一些小的產品來說, 還是先把核心精力放在其他地方比較好。

3.個性化推薦演算法

個性化推薦演算法包含非常的種類, 這裡可以簡單介紹幾種比較好理解的協同過濾演算法。

協同過濾演算法裡面比較常用、也比較好理解的有兩種:基於使用者的協同過濾演算法UserCF和基於物品的協同過濾演算法ItemCF。 這兩種都屬於基於鄰域的方法neighborhood-based。

UserCF的核心思路是,給用戶推薦和他興趣相似的其他用戶喜歡的物品。先找到和目標使用者興趣相似的使用者集合,再找到這個集合中的使用者喜歡的,且目標使用者沒有聽說過的物品推薦給目標使用者。

ItemCF的核心思路是,給用戶推薦和他之前喜歡的物品相似的物品。先計算物品的相似度,再根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。

瞭解UserCF和ItemCF的同時,還需要瞭解下使用者的行為分類。

用戶的行為,按回饋的明確性,可以分為以下兩種類別:

對於隱性回饋行為資料,只有正回饋資料,所以要進行推薦需要採集負反饋資料,找到負反饋資料,目的是為了不給使用者進行推薦此類資訊。一般認為,很熱門但是使用者卻沒有行為的資訊,比冷門資訊更能表示使用者不感興趣,因為冷門的資訊,使用者可能壓根沒有發現,所以談不上興趣。

用戶的行為,按回饋的方向,可以分為以下兩種類別:

UserCF和ItemCF,對比來看,存在以下差異:

關於個性化推薦演算法,還有很多種類,比如隱語義模型、基於關聯規則推薦等等,由於篇幅原因,在這裡就不一一列舉,我整理了個簡單的表格供參考。需要指出的是,每種演算法都不是最優的,他們都有自身的局限問題,產品需要根據自身的特點來選擇合適的演算法,解決實實在在的問題。

4.推薦系統的冷開機問題

在第一節我們說到,推薦系統不需要使用者主動提供明確的需求,由系統主動推薦資訊到使用者面前,在使用者沒有明確目的的時候説明他們發現資訊,冷開機就指的是這個過程中,使用者、資訊的從0到1過程。

推薦系統的冷開機大概包含三個方面:1.在用戶新入駐一個平臺時,由於沒有歷史資料,我們如何給使用者做個性化推薦。2、我們的系統新上線了一個物品(商品、音樂、新聞),如何把這個新的資訊推薦給感興趣的使用者。3、如果我們從0開始設計,如何在使用者少、資訊少的情況下來設計推薦系統。

要解決推薦系統的冷開機問題,作者提供了很多辦法,這裡也就不一一列舉,這裡需要知道冷開機的概念即可。也推薦有興趣的朋友購買原書來仔細閱讀。

5.推薦系統的其他特性

本書還詳細討論了推薦系統的其他問題,比如基於標籤的推薦系統,對於內容種類特別的多的產品還是很有用的,比如豆瓣電影中,你在評價時就可以貼標籤上去。由於標籤系統一般是UGC的,所以對於大資料分析來說是一種非常好的資料,所以對基於商品的資料分析特別在乎的業務,上標籤系統應該是一種特別好的策略。

另外本書還討論了上下文資訊在推薦系統中的應用,缺乏上下文資訊會導致很多問題,比如在夏天推薦給用戶冬天的衣服,在中關村給用戶推薦望京的餐廳等等,為了解決這些問題,在推薦系統中需要引入上下文資訊,用來盡可能地提升推薦資訊的準確性。

最後,本書還講了關於社交網路的推薦,這裡列舉一個我覺得很有意思的社交網路分類:

可能是我缺乏社交產品的經驗,這個分類讓我覺得很巧妙,二者都有相互交織的地方,或許雙方也都想做對方核心結構內的事情,人與人之間的關係搬到網際空間後發生了多少變化,又有哪些永不改變,仔細想想真是十分有趣。

最後,這本書不僅適合程式師入門看,同時也適合產品經理、運營以及真正熱愛生活的人。學習推薦系統的思路,瞭解推薦系統的基本知識,也能提醒人們思考技術與人之間的關係,在數位世界與物理世界的混合體中,我們該如何相處。

這兩種都屬於基於鄰域的方法neighborhood-based。

UserCF的核心思路是,給用戶推薦和他興趣相似的其他用戶喜歡的物品。先找到和目標使用者興趣相似的使用者集合,再找到這個集合中的使用者喜歡的,且目標使用者沒有聽說過的物品推薦給目標使用者。

ItemCF的核心思路是,給用戶推薦和他之前喜歡的物品相似的物品。先計算物品的相似度,再根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。

瞭解UserCF和ItemCF的同時,還需要瞭解下使用者的行為分類。

用戶的行為,按回饋的明確性,可以分為以下兩種類別:

對於隱性回饋行為資料,只有正回饋資料,所以要進行推薦需要採集負反饋資料,找到負反饋資料,目的是為了不給使用者進行推薦此類資訊。一般認為,很熱門但是使用者卻沒有行為的資訊,比冷門資訊更能表示使用者不感興趣,因為冷門的資訊,使用者可能壓根沒有發現,所以談不上興趣。

用戶的行為,按回饋的方向,可以分為以下兩種類別:

UserCF和ItemCF,對比來看,存在以下差異:

關於個性化推薦演算法,還有很多種類,比如隱語義模型、基於關聯規則推薦等等,由於篇幅原因,在這裡就不一一列舉,我整理了個簡單的表格供參考。需要指出的是,每種演算法都不是最優的,他們都有自身的局限問題,產品需要根據自身的特點來選擇合適的演算法,解決實實在在的問題。

4.推薦系統的冷開機問題

在第一節我們說到,推薦系統不需要使用者主動提供明確的需求,由系統主動推薦資訊到使用者面前,在使用者沒有明確目的的時候説明他們發現資訊,冷開機就指的是這個過程中,使用者、資訊的從0到1過程。

推薦系統的冷開機大概包含三個方面:1.在用戶新入駐一個平臺時,由於沒有歷史資料,我們如何給使用者做個性化推薦。2、我們的系統新上線了一個物品(商品、音樂、新聞),如何把這個新的資訊推薦給感興趣的使用者。3、如果我們從0開始設計,如何在使用者少、資訊少的情況下來設計推薦系統。

要解決推薦系統的冷開機問題,作者提供了很多辦法,這裡也就不一一列舉,這裡需要知道冷開機的概念即可。也推薦有興趣的朋友購買原書來仔細閱讀。

5.推薦系統的其他特性

本書還詳細討論了推薦系統的其他問題,比如基於標籤的推薦系統,對於內容種類特別的多的產品還是很有用的,比如豆瓣電影中,你在評價時就可以貼標籤上去。由於標籤系統一般是UGC的,所以對於大資料分析來說是一種非常好的資料,所以對基於商品的資料分析特別在乎的業務,上標籤系統應該是一種特別好的策略。

另外本書還討論了上下文資訊在推薦系統中的應用,缺乏上下文資訊會導致很多問題,比如在夏天推薦給用戶冬天的衣服,在中關村給用戶推薦望京的餐廳等等,為了解決這些問題,在推薦系統中需要引入上下文資訊,用來盡可能地提升推薦資訊的準確性。

最後,本書還講了關於社交網路的推薦,這裡列舉一個我覺得很有意思的社交網路分類:

可能是我缺乏社交產品的經驗,這個分類讓我覺得很巧妙,二者都有相互交織的地方,或許雙方也都想做對方核心結構內的事情,人與人之間的關係搬到網際空間後發生了多少變化,又有哪些永不改變,仔細想想真是十分有趣。

最後,這本書不僅適合程式師入門看,同時也適合產品經理、運營以及真正熱愛生活的人。學習推薦系統的思路,瞭解推薦系統的基本知識,也能提醒人們思考技術與人之間的關係,在數位世界與物理世界的混合體中,我們該如何相處。

Next Article
喜欢就按个赞吧!!!
点击关闭提示