本文大約 3200 字,閱讀大約須要 10 分鐘算法
2020 年第一篇技術文章,以一個新的系列開始--推薦系統(Recommend System),第一篇文章會簡單介紹推薦系統的定義和應用,目錄以下:安全
來自維基百科的定義:微信
推薦系統是一種信息過濾系統,手段是預測用戶(user)對物品(item)的評分和偏好。網絡
進一步從如下三個方面來回答這個問題函數
1. 推薦系統能作什麼--推薦系統最終能夠把那些會在用戶和物品之間產生的鏈接提早找出來。工具
這裏說的鏈接,含義很是普遍,凡是可以產生關係的都是鏈接,包括用戶對物品的行爲,或者用戶的某些屬性和物品的某些屬性。學習
這裏這麼說的依據是基於這樣一個事實:萬事萬物都有相互鏈接的大趨勢。測試
2. 推薦系統須要什麼--須要已經存在的鏈接,從已有的鏈接去預測將來的鏈接。優化
3. 推薦系統怎麼作--預測用戶評分和偏好。具體說就是機器推薦和人工推薦,也就是一般說的個性化推薦和編輯推薦。網站
整體來講,推薦系統其實是在目前信息爆炸的時代,能夠幫助用戶過濾大量無效信息,獲取到感興趣的信息或者物品的算法,而且也能夠挖掘出一些長尾物品。固然,過分依賴推薦系統,實際上也可能讓你只接受到同一類的信息或者單一領域的物品,這也是推薦系統存在的一個問題,探索與利用問題。
推薦系統是如何工做的呢?這裏能夠用一個看電影的例子來解釋,好比咱們在不肯定看什麼電影的時候,一般可能會有這幾種方法來作決定:
上述也只是3種推薦方式,實際上推薦系統還有其餘的推薦方法,但本質上都是須要用戶和物品之間存在鏈接,經過已有的鏈接來預測將來的鏈接。
從兩個方面考慮這個問題:
這裏有一個簡單的判斷是否須要推薦系統的公式:
分子表示增長的鏈接數量,分母就是增長的活躍用戶數和增長的有效物品數。
這個簡單的指標是這樣的:
最後,是否須要推薦系統從戰術上看是須要考慮投入產出比的問題,須要組建團隊、購置計算資源、積累數據和花費時間優化等;但若是是戰略問題,那就不須要討論了。
根據上文的介紹,推薦系統的目標就是預測用戶和物品的鏈接,其預測問題模式,從達成的鏈接目標角度區分,分爲兩大類:
評分和行爲實際上是反映了用戶對推薦結果的兩類反饋,前者是一個顯式反饋,直接代表用戶對推薦的物品的喜愛程度,然後者更多展現的是隱式反饋,好比用戶僅僅是瀏覽閱讀了推薦的物品,或者說電商類的加入購物車,收藏物品等等。
評分預測主要作的事情就是,提早預測用戶對物品的評分,好比對電影評分1-5分,或者是商品打多少顆星星。
一個比較樸素的實現思想:創建一個模型,基於用戶歷史評分的物品來預測分數。
如何衡量預測的好壞,一般能夠用均方根偏差(RMSE)來做爲損失函數:
其中 n 是樣本的總數, 是用戶對物品的打分,表示模型預測的分數,所以它們的相減就是模型和用戶實際打分的偏差,而 RMSE 只關心絕對值大小。
評分問題主要用於各類點評類產品,好比豆瓣、Imdb等等,但評分推薦存在這些問題:
行爲預測就是利用隱式反饋數據預測隱式反饋的發生機率。行爲預測更受到重視的緣由有這幾點:
行爲預測的方式有不少,常見的是這兩種方式:
推薦系統發展到如今,依然仍是有些問題一直沒有很好的通用解決方案,而且不容易被重視。
推薦系統其實是數據貪婪型應用,也就是對數據的需求絕無足夠的那一天。
冷啓動問題能夠分爲:
一般的解決辦法是:想辦法引入數據,從已有數據中主動學習(一種半監督學習),好比用戶的註冊信息,物品的描述信息等等。
這個問題也叫 EE(Explore & Exploit) 問題:
一般最好的作法是推薦大部分用戶感興趣的物品,小部分是新的其餘領域的物品,好比已知用戶是數碼產品愛好者,那麼大部分推薦的就是電腦、鍵盤等數碼產品,而後推薦少許的其餘類的物品,好比運動健身產品或者衣服等;
但這裏須要考慮的就是這個比例的問題,不一樣的用戶的推薦比例也不同,可能有的用戶就是喜歡探索新奇的物品,但有的用戶只喜歡感興趣的物品。
推薦系統也是存在安全問題,可能會被攻擊,被攻擊的影響有如下幾個:
推薦系統的應用特別普遍,包括電子商務、電影和視頻、音樂、社交網絡、閱讀、基於位置的服務、個性化郵件和廣告等等。
事實上,當產品的用戶和物品數據愈來愈大的時候,都須要考慮使用個性化推薦系統,給用戶個性化的體驗。
參考
歡迎關注個人微信公衆號--算法猿的成長,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!