什麼是好的推薦系統

我一直自誇是「菜刀流」的工程師,做爲一個數據挖掘的門外漢,竟也操刀過三個推薦系統的項目了。這三個推薦系統,用戶羣不一樣,業務場景不一樣,連地域和文化也有些差異。因此近來總在琢磨,推薦系統的緣起千人千面,紛繁萬變的細節當中,能不能匯聚出一些廣泛共性?有沒有一個普適的標準,回答什麼是一個真正出色的推薦系統?我但願邁出這一步,把以前想過的梗、跳過的坑以及卑微的沉思亮出來,等待真正的高人點撥一二。算法

推薦系統的先決條件

這實際上是最容易被忽視的一個問題。尤爲在這幾年「大數據」的概念炒得火熱,推薦系統也就成了某些人眼中的仙丹妙藥,無論三七二十一,先上了再說。在我看來,推薦系統至少須要評估下面三個可行性:網絡

  • 要有足夠的數據機器學習

    一種常見的錯誤思路是,個人社區不夠活躍,上個用戶推薦系統增強活躍吧。若是你抱着這樣的想法,我只能恭喜你選擇了一種堅苦卓絕的邏輯。推薦系統是數據挖掘的一種應用,而沒有數據,一般都不會產生什麼有價值的挖掘。學習

  • 要有豐富的內容測試

    推薦系統起源於亞馬遜的圖書推薦。但有沒有人細想過,爲何亞馬遜是第一個吃螃蟹的人?由於貝佐斯把書店搬到網上後,他發現本身擁有了全世界最多的圖書,在一家庫存數百萬種圖書的虛擬書店裏,你根本沒法依賴任何一個店員幫你的顧客推薦新書。而另外一種常見的錯誤思路是,在內容未豐富的前提下就急着上推薦系統。事實上,只有內容極大豐富的時候,纔可能有被無用戶差異排行榜埋沒的優質內容,個性化需求才能體現出商業價值。若是你的內容在一萬如下,我會建議你使用單一的熱門排行榜;十萬如下,我會建議你使用分類的熱門排行榜,十萬以上,才慢慢有推薦系統的可行性。大數據

  • 用戶分衆圖片

    數據充分了、內容豐富了,還得掂量下用戶的口味能不能產生足夠的分衆。推薦系統之因此在電商、音樂上有成功的應用,最主要的因素是這類產品的用戶有足夠的分衆。而越是大而全的領域,用戶的分衆越明顯,推薦的效果越好。比如淘寶的推薦頗受讚揚,而惟品會的推薦多被吐槽,道理就在這兒。若是你說你正在作同志社區或情趣電商,我會內心一涼。get

推薦系統的問題

先決條件經過了,咱們來討論「術」的問題,你能夠把這節的內容看成「跳坑實錄」來讀。產品

  • 熱門和長尾的矛盾數據挖掘

    第三種錯誤的思路在於,推薦系統以提高點擊率爲目標,而每每橫向對比之下,個性化推薦的指標每每不如熱門排行榜。對此一小部分算法人員鋌而走險,但願用熱門混雜長尾的方法去得江山抱美人,而在我看來,推薦系統有且僅有一個目標,知足用戶的個性化需求。至於你說點擊不如推熱門?那把排行榜留着唄,那纔是賺點擊率的地方。

  • 基於內容仍是協同過濾

    推薦系統的本質在於增強聯結,或者說,給用戶綿綿不斷髮現新東西的機會。因此協同過濾(或者往更寬泛的範圍,矩陣分解也算)都是在利用聯結的信息,從而取得比基於內容更好的推薦效果。可是,瞭解你所擁有的內容,做爲輔助的算法,絕對能使推薦的質量大幅上升。可是算法人員面臨的現狀每每是,很可貴到格式化的內容標籤,一個可行的思路是,請用戶來爲內容打標籤,參照豆瓣和淘寶。另外一個決定選擇的因素是數據特徵,若是用戶行爲集中而稀疏,那麼意味着你必須更多依賴內容的信息。

  • 負樣本的問題

    協同過濾是基於統計的算法,並不須要負樣本的信息,但若是是基於機器學習的算法,訓練的過程是須要負樣本的。有的產品只有用戶的隱反饋(好比播放、購買),即用戶沒法表達對一個內容的厭惡,那麼你只有創造負樣本了。在這一塊,最好的思路是,選擇熱門的但用戶沒有行爲的樣本,由於熱門的內容更有機會讓用戶看到,用戶看到屢次但沒點擊,那就更多是不喜歡。

  • 冷啓動的問題

    應對冷啓動的策略要按照業務場景區分,若是是用戶看了一個內容,要給他推薦其餘的內容,那麼能夠利用內容特徵的類似度;若是是對一個新用戶推薦,條件容許的話,能夠請用戶表達本身的偏好,或者依賴社交網絡的信息,實在不行,只能推熱門了。

推薦系統的實施

我但願把實施中的一些Keypoint單獨羅列,你們都懂的東西,暫時不講。

  • 藉助更多信息

    個人風格是作推薦以前必定要把產品用壞,來肯定能獲取到哪些用戶行爲和用戶數據,能獲取的儘可能獲取。好比,用QQ郵箱的和用Gmail郵箱的用戶確定有些不同,對不?

  • 研究數據之間的相關性

    這就是熵的概念。若是兩個數據相關性是1,那麼確定有一個沒什麼用處。用好迴歸,你會少不少運算量。

  • 弄清你的業務場景

    有的人會把業務場景叫作「推薦的上下文」,事實上推薦算法的許多細節都會被業務場景影響,好比以物推物的場景就會更適合採用ItemBased,一個一個展示的能夠考慮加入點隨機性,首頁推薦應該多放新品,等等。

  • 定義好你的目標

    我習慣了作事以前目標先行,目標錯了跑得再快也沒用。推薦算法的長期目標應該是提高用戶的活躍(注意,不是活躍率),而對於短時間指標,應該着重在幾點:有沒有更多的內容被發現?熱門排行榜的更新是否加快?用戶對於推薦的點擊是否在一個比較活躍的水平(再次,我反對一律而論)?若是是UGC的產品,用戶有沒有由於更容易被發現而積極地上傳內容?固然,這些指標都必須被量化。

  • 良好的引導

    記得以前去聽百分點科技的演講時,他們提到會有人專門去研究推薦系統的引導,甚至有時候引導比推薦的內容更重要,深有同感。這也是社交推薦爲何不須要什麼模型卻效果很好的緣由。記住一點,若是推薦的區域有任何的圖片或數字時,想辦法讓它們更有誘惑力。

  • 收集更多反饋

    推薦系統一前一後的數據流都不容輕視,我一樣傾向於收集一切與推薦系統有關的數據,好比推薦區域的停留與點擊、推薦內容的消費、連續點擊推薦內容的鏈條等等。若是可能的話,請用戶對你的推薦給予評價,這也能讓你的推薦更有溫度。

  • 離線實驗

    不要迷信離線實驗的結果,一般和線上都會差很遠。若是以前不存在推薦系統,那麼用戶極可能根本就沒有機會接觸到你推薦的內容,也就無從證明。

  • 耐心

    推薦系統並非一個立竿見影的產品,上線以後多花點時間收集數據、調整參數、作更多的分組測試,更重要的是,讓你的老闆也有耐心。

來自:建造者說

相關文章
相關標籤/搜索