推薦系統中的冷啟動問題

什麼是冷啟動? 推薦系統主要是把物品推薦給喜歡的使用者,在使用的環境中,物品和使用者皆會持續的增長變化,也因此會持續面對有新物品和新使用者的情境;有新的物品和使用者使得無法做好的推薦就稱為冷啟動,我們要討論在這種情況下如何做合適的推薦。 基本的冷啟動可以分成三類: 使用者冷啟動:新用戶產生時沒有有任何瀏覽購買紀錄,如何推薦用品的問題。 物品冷啟動:新物品如何推薦給合適的用戶。 系統冷啟動:新系統上線時,物品、使用者、資料皆不足的推薦問題。 圖片來源:https://www.researchgate.net/figure/Illustration-of-Cold-Start-problem-in-recommender-systems-New-user-problem-left-and_fig2_332511384 接下來我們介紹幾個常見的解決方式 排行榜推薦 新物品的推薦 秉持著大家會喜新厭舊的心態,推薦新的物品給使用者;像是電影、影集等等就很適合,有新影片上線時,不管是新或舊的使用者都會想看。 熱門物品的推薦 推薦大家都喜歡的物品給使用者,這是非常常見的做法,簡單有效;也可以用作新演算法的AB test或benchmark,等到資料足夠後才做個性化推薦。 常用物品、必需品推薦 推薦生活必需品、常用物品給新使用者;這種情況適合一些居家用品、常用家電、廚房用具等等的情境。 標籤推薦 這種方式是針對前三項作更細微的推薦,像是ott 串流平台可以直接選擇喜劇、動作片、愛情片等等的推薦;但要注意標籤要先設計完整。 圖片來源:https://deepai.org/publication/addressing-the-cold-start-problem-in-outfit-recommendation-using-visual-preference-modelling 簡易的使用者推薦 簡易的使用者推薦 根據使用者簡易的年齡、性別等等資料分出人群進行推薦。 授權平台推薦 導入第三方社交平台facebook、google等等,根據這些平台的歷史數據進行推薦。 問答題推薦 目前有許多平台都是這種方式,註冊登入時會問幾個問題,了解你的喜好,根據你的反饋來推薦物品。 新物品的相似度推薦 新物品推薦系統在不同的平台有不同的重要程度,在新聞媒體等等時效性強的平台就特別重要,必須要快速的推薦出去,不然時間過了這個資訊、消息也就不重要了。 新物品跟用戶的相似度 計算新物品的特徵(標籤、cos相似度、TF-IDF、影像相似度等等)和使用者的行為特徵進行推薦。 新物品和舊物品的相似度 新物品進入平台後,根據平台的標籤、屬性資訊等等,計算出相似的物品,再推薦給喜歡此物品的使用者。 試探策略 這幾年短影片的流行,無論是純做短影片的網站,抑或是一般影音平台的短影片,皆是爆發性的成長;快速試探策略就很適合,快速、隨機推薦影片給使用者,再根據使用者觀看、點擊、滑動瀏覽網站、停留時間等等的行為,快速獲得使用者的資訊,再進行推薦。 結尾 上面是簡單介紹幾個常用的方式,還有許多做法可以解決遇到的冷啟動問題,主要必須先定義好問題,知道自己產品、平台的特徵、類型、使用者如何才會滿意等等的資訊,才能真正的對症下藥。 最後推薦幾篇論文,大家有興趣可以看看他們遇到的問題是什麼又是如何解決的。 Behavior-based popularity ranking on Amazon Video Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba Performance of recommender algorithms on top-N recommendation tasks ...

2021-11-29 · 1 min · 69 words · KbWen

PYTHON 機器學習基石 LS-PLA

Perceptron Learning Algorithm (PLA) 根據林軒田教授的機器學習基石課程,實作一下這個基礎的機器學習演算法 討論這個問題,用到的學習大架構(Supervised learning),它也是所謂的YES/NO問題。 Perceptron⇔ linear (Binary) Classifiers 我們有一組訓練資料D,裡面包含著數據Xn和對應的Yn(在這裡就是1,-1);Hypothesis set H代表這全部的解(無限多條線),經過演算法A,從H找到一個可能的g和我們的目標函數f相近。 這個演算法的主要兩大步驟;找到錯誤的點,向量修正它,詳細課程可以看教授的仔細講解!!naive cycle是常用的作法 這方法只適用於 linear separable PLA 除了上面這些以外,當資料中有雜訊也無法使用這個方式,目前在線性問題上較好的解是用**Pocket PLA** Linear separable PLA 首先整理一下資料 把[‘x0\ty0\tz0\nx1\ty1\tz1\nx2\ty2\tz2\n….’] 變成arrar([[(x0, y0), z0],[(x1, y1), z1],[(x2, y2), z2]…..])的格式 如同前幾張圖片(x1,y1),(x2,y2)的資料方式 NAIVE PLA ,畫線則是用 ax + by = 0 最終結果 Pocket PLA Pocket PLA 是一個貪婪演算法,把好的握在手上繼續往下算,每次都會比較看有沒有比手上的好,停止方式則是讓它跑到一定數量,或是多久沒有變更好等等的;這裡就不寫了。 My GitHub

2017-04-18 · 1 min · 51 words · KbWen