今天開始記錄自己開發鲸音小程式推薦系統的全過程,一切從零開始。
推薦算法考慮的是CB(content-based)和CF(collaborative filtering)結合。
使用者回報方式考慮顯示的二進制制(喜歡,無偏好,不喜歡)評價,結合關聯使用者和物品的标簽,隐式評價播放、浏覽記錄等。
暫不考慮問題,噪聲和新鮮度的問題。
首先考慮CB算法
基于内容的推薦算法試圖去給使用者推薦使用者曾經喜歡過的物品。
這裡我們約定一下将我們的物品統稱為對象(其他名稱包括記錄、物品、得分、樣本、觀察值、執行個體),将其特征統稱為屬性(其他名稱包括變量、字段、特征、特性)。
CB算法推薦過程分為三步:
1)内容分析
内容分析主要是對象的屬性值的擷取,将對象的屬性值處理成一定的格式,以便下一步階段的處理。
這裡我們對音頻主要屬性提取情況如下(暫時考慮的或者考慮考慮的):
主要屬性:主類别(7種,離散值,沒有近鄰關系)
熱度屬性:點贊數、評論數、轉發數、播放數
暫時不知道怎麼處理的屬性:标簽
環境屬性,暫時也不知道怎麼處理:上傳地理位置、作者性别、作者社群
這裡考慮将其處理成向量的形式便于使用餘弦相似度來度量使用者對其喜好程度。
其中:a,b,c,d,e,f,g代表七種類别,h代表熱度屬性整合值
2)資訊學習
關于使用者特征的學習考慮使用梯度下降法來學習:
其中:μ為學習系數,δ為回報指數
3)過濾
過濾主要由餘弦相似度來度量
CB的優缺點分析:
優點:①使用者獨立(CF中需要根據近鄰來提供資訊)②透明度(CF是一個黑盒子,使用者無法得知推薦的解釋)③新物品(CF存在新物品的冷啟動問題)
缺點:①過度特化(驚喜度問題)②新使用者(需要使用者足夠的資料)