為什麼需要個性化推薦?
科技進步帶來的是更大程度地提高效率和生產力已經是無可爭辯的事實。
隨著時代變遷的廣告業,從廣播、電視業廣告的輝煌,到網際網路門戶時代的banner廣告和狂轟亂炸的edm,再到了搜尋引擎和移動網際網路時代的推薦位廣告,隨著人們的資料可被記錄並且計算,也隨之產生了計算廣告學這門新興學科。
從廣撒網的廣告形式到精準地捕捉到使用者的需求,並且呈現給使用者更加恰當的廣告,給網際網路公司帶來了鉅額的廣告收入,這中間推薦系統功不可沒。
早期的入口網站充斥著banner廣告,並沒有精準觸達使用者
電商的推薦系統則幫助電商網站大大提高銷售額,亞馬遜通過個性化推薦系統能夠提高35%的銷售量。
在2016年,推薦演算法能夠為Netflix節省每年10億美元。讓其中的冷門內容也能夠發揮作用,需要依賴基於使用者習慣資料的個性化推薦系統——利用個性化推薦,相比簡單展示最受歡迎清單,觀看率提升3-4倍。
推薦系統的核心思想:叢集智慧
凱文凱利曾經在《失控》中曾經說到蜂群的故事:
蜜蜂看到一條資訊:“去那兒,那是個好地方”。它們去看過之後回來舞蹈說,“是的,真是個好地方。” 通過這種重複強調,所屬意的地點吸引了更多的探訪者,由此又有更多的探訪者加入進來。按照收益遞增的法則,得票越多,反對越少。漸漸地,以滾雪球的方式形成一個大的群舞,成為舞曲終章的主宰,最大的蜂群獲勝。
凱文凱利用超級有機體可以來形容蜂群。同樣,這個詞也可以來形容整個網際網路上的人群。他們在網路上留下的痕跡可以說是無意識的,但是也帶有了某種“叢集的意識”。
扯遠了,還是來看看網際網路叢集智慧的例子:
Wikipedia-使用者貢獻內容:Wikipedia是一件叢集智慧的典型產物,它完全由使用者來維護,因為每一篇文章都會有大量的使用者去進行修改,所以最終的結果很少出現問題,而那些惡意的操作行為也會因為有海量的使用者的維護而被儘快地修復。
Google-利用海量資料進行判斷:Google的Pagerank演算法的核心思想是通過其他網頁對當前網頁的引用數來判斷網頁的等級,這種演算法需要通過海量的使用者資料來進行。
協同過濾
說到個性化推薦最常用的設計思想,不得不說說協同過濾,它一種在做個性化推薦時候的方法論。
因為如果僅僅按照單一的熱門推薦,網路的馬太效應(指強者愈強、弱者愈弱的現象)就會明顯;且長尾中物品較難被使用者發現,造成了資源浪費。而協同過濾問題恰恰解決了使用者的個性化需求(使用者更願意開啟自己感興趣或者熟悉的內容),使得長尾上的物品有了被展示和消費的可能性,也使得馬太效應相對弱化。
協同過濾包括兩種型別:
1.Item-CF(基於物品的協同過濾):
小明在網站上看了《超人歸來》的電影,系統就會推薦與這部電影的相似的電影,比如《蜘蛛俠2》給小明。這是基於電影之間的相似性做出的推薦。(注意:兩部電影時間的是否相似是由大量使用者是否同時都看了這兩部電影得到的。如果大量使用者看了A電影,同時也看了B電影,即可認為這兩部的電影是相似的,所以Item-CF仍然是基於使用者行為的。)
騰訊視訊中,當觀看《超人歸來》時系統推送的電影
2.User-CF(基於使用者的協同過濾):
小明在購物網站上買了一副耳機,系統中會找出與小明相似的“近鄰好友”他們除了買耳機之外,還買了什麼。如果與小明相似的“近鄰”小華還買過音箱,而這件東西小明還沒買過,系統就會給小明推薦音箱。這是基於使用者之間的相似性做出的推薦。
注:這裡的CF=collaborativefiltering
而這兩種型別的協同過濾都是要基於使用者行為來進行。
而除了協同過濾之外,還有基於內容的推薦、基於知識的推薦、混合推薦等方式。
物以類聚,人以群分。
這句話很好地解釋了協同過濾這種方法的思想。
亞馬遜網站上對圖書的推薦 -基於Item-CF
前一陣參加pmcaff的人工智慧產品經理的活動,主講人香港中文大學的湯曉鷗教授(目前人工智慧視覺方面的頂級專家)說,目前機器視覺領域可以通過社交網路照片或者個人相簿中的圖片的學習,可以做到預測個人徵信。與誰的合影,在什麼地方拍照都成為了機器預測個人特徵的判斷因素。
這也是利用了“人以群分"的常識,只是加上了高大上的機器視覺技術而已。
機器學習與個性化推薦的關係
什麼是機器學習?《叢集智慧程式設計》這本書裡是這麼解釋的:
機器學習是人工智慧領域中與演算法相關的一個子域,它允許計算機不斷地進行學習。大多數情況下,這相當於將一組資料傳遞給演算法,並由演算法推斷出與這些資料的屬性相關的資訊-藉助這些資訊,演算法就能夠預測出未來有可能出現的其他資料。這種預測是完全有可能的,因為幾乎所有非隨機資料中,都會包含這樣或那樣的“模式(patterns)”,這些模式的存在使機器得以據此進行歸納。為了實現歸納,機器會利用它所認定的出現數據中的重要特徵對資料進行“訓練”,並藉此得到一個模型。
機器學習本質上是從資料中構建模型來進行“資料預測”或者“下決定”的事兒,而個性化推薦系統的本質,也是預測使用者可能感興趣的事兒。機器學習可以用來做個性化推薦系統,也可以做其他型別的預測,比如金融欺詐偵測、安防、股票市場分析、垃圾email過濾等等。
這張圖很好地解釋了機器學習的工作過程。機器學習分為無監督學習和有監督學習兩種,也有延伸出增強學習和半監督學習的方法。
Hadoop與Mahout
那些推薦演算法這裡不再贅述,但是大資料技術方面的基礎知識,作為小白還是需要要有所了解。
眾所周知,推薦系統的資料處理往往是海量的,所以處理這些資料的時候要用到像Hadoop這樣的分散式處理軟體框架。
Hadoop是一個能夠對大量資料進行分散式處理的軟體框架。Hadoop 以一種可靠、高效、可伸縮的方式進行資料處理。
Hadoop是一個生造出來的詞,而Mahout中文意思就是象夫,可以看出,如果把大資料比作一隻大象的話,那mahout就是就是指揮大資料進行運算的指揮官。
Mahout是 Apache Software Foundation(ASF)旗下的一個開源專案,提供一些可擴充套件的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地建立智慧應用程式。
其目的也和其他的開源專案一樣,Mahout避免了在機器學習演算法上重複造輪子。
眾所周知,對推薦系統的個性化推薦演算法需要運用來自使用者的資料,那麼這些資料都是來自於哪裡,為我們所用呢?
基於使用者行為資料:
舉個好玩的例子:通過GPS訊號,可以測得手機速度以及位置,當用戶的手機在早上8點由高速變成低速,可以判斷是從地鐵出來,就可以向他推薦附近的麥當勞早餐優惠券了。
另外,運營商是可以得到使用者手機訪問過的網頁資料的,通過文字挖掘,可以了解使用者的偏好,如看過很多足球類的文章,可以了解使用者為喜歡足球的使用者,而喜歡足球的使用者很大的可能性是男性,則可以多推送一些相關的體育新聞內容,甚至男性用品(比如剃鬚刀)廣告給他。
基於社交網路資料:
通過使用者的社交網路資料可以基於好友關係,推薦朋友給使用者。當小紅和小明同時有10個朋友,那就說明他們在一個朋友圈子。他們共同好友越多,就更有可能在兩個人之間做相互推薦。
基於上下文的資料:
上下文的資料又可以分為兩種,時間上下文與地點上下文。
舉一個栗子,在時間上下文的情況下,某外賣app需要根據早中晚人們的用餐習慣來給使用者推送不一樣的食物或者優惠券,這樣推薦不同的食物更符合使用者的習慣。
另外根據地點的上下文說的是,如果你在辦公室用某外賣app點一份外賣,那麼推薦給你的外賣餐廳是要離你較近的,而不是推送十公里以外的餐廳。
基於內容的推薦與熱度演算法
我們要知道個性化推薦一般會有兩種通用的方法,包括基於內容的個性化推薦,和基於使用者行為的個性化推薦。
基於使用者行為的推薦,會有基於物品的協同過濾(Item-CF)與基於使用者的協同過濾(User-CF)兩種。
而協同過濾往往都是要建立在大量的使用者行為資料的基礎上,在產品釋出之初,沒有那麼大量的資料。所以這個時候就要依靠基於內容的推薦或者熱度演算法。
基於內容的推薦
一般來說,基於內容的推薦的意思是,會在產品初期打造階段引入專家的知識來建立起商品的資訊知識庫,建立商品之間的相關度。
比如,汽車之家的所有的車型,包括了汽車的各種效能引數;電商網站中的女裝也包括了各種規格。
在內容的推薦過程中,只需要利用使用者當時的上下文情況:例如使用者正在看一個20萬左右的福斯轎車,系統就會根據這輛車的效能引數,來找到另外幾輛與這輛車相似的車來推薦給使用者。
一般來說,建立這樣的資料庫需要專業人士、編輯等通過手動完成,有一定的工作量,但對於冷啟動階段的產品來說,是一個相對有效的方法。
汽車之家網站在使用者檢視一輛車的同時推薦與其相似的車
另外一種情況是純文字的內容沒有明確的引數特徵,在這種情況下,需要通過文字分析技術來自動提取文字的關鍵詞(通過自然語言技術的進行分詞),通過資料探勘來找到文字與文字之間的聯絡和相似性。
熱度演算法
另外,由於各種社會熱點話題普遍是人們關注較高的,以及由於在產品發展初期,沒有收集到大量使用者資料的情況下,“熱度演算法”也是一種慣常使用的方式。
“熱度演算法“即將熱點的內容優先推薦給使用者。
這裡值得注意的是,熱點不會永遠是熱點,而是具有時效性的。
所以釋出初期用熱度演算法實現冷啟動,積累了一定量級以後,才能逐漸開展個性化推薦演算法。
而熱度演算法在使用時也需要考慮到如何避免馬太效應:毋庸置疑的是,在滾雪球的效應之下,網際網路民的消費&觀點&行為會趨同,就像前一陣《戰狼2》的熱映一樣,史無前例的票房成績完全取決於鋪天蓋地式的宣傳,而群體將會成為烏合之眾。
推薦產品的冷啟動
每個有推薦功能的產品都會遇到冷啟動(coldstart)的問題,也是很多創業公司遇到的較為棘手的問題。
在早期團隊資金有限的情況下,如何更好地提升使用者體驗?
如果給使用者的推薦千篇一律、沒有亮點,會使得使用者在一開始就對產品失去了興趣,放棄使用。所以冷啟動的問題需要上線新產品認真地對待和研究。
在產品剛剛上線,新使用者到來的時候,如果沒有他在應用上的行為資料,也無法預測其興趣。另外,當新商品上架也會遇到冷啟動的問題,沒有收集到任何一個使用者對其瀏覽,點選或者購買的行為,也無從判斷將商品如何進行推薦。
所以在冷啟動的時候要同時考慮使用者的冷啟動和物品的冷啟動。
我總結了並延伸了項亮在《推薦系統實踐》中的一些方法,可以參考:
a.提供熱門內容,類似剛才所介紹的熱度演算法,將熱門的內容優先推給使用者。
b.利用使用者註冊資訊,可以利用人口統計學的一些特徵,如性別、國籍、學歷、居住地來預測使用者的偏好,當然在極度強呼叫戶體驗的今天,註冊過程的過於繁瑣也會影響到使用者的轉化率,所以另外一種方式更加簡單且有效,即利用使用者社交網路賬號授權登陸,匯入社交網站上的好友資訊或者一些行為資料。
c.在使用者登入時收集對物品的反饋,了解使用者興趣,推送相似的物品。
d.在一開始引入專家知識,建立知識庫、物品相關度表;或者通過自然語言處理來進行文字的資料探勘。
e.通過使用者在時間和地點的上下文來進行實時的預測。