I'm Marcus 的閱讀軌跡(推薦系統)
· 閱讀時間約 2 分鐘
今天看到 I'm Marcus 的文章:「来玩玩新开发的小游戏吧」。
Marcus 在自己的部落格實作了一套基於「閱讀軌跡」的文章推薦系統,這個設計還滿有意思的。
我觀察到的一些東西:
- 文章向量壓縮到 64 維,整份資料不到 200KB,載入和計算速度都很快。
- 使用者記錄存在瀏覽器的 Local Storage,完全不需要後端,隱私性高又即時。
- 文章不僅能標記「喜歡」,還能標記「不喜歡」,系統會同時考慮兩種訊號。
- 根據「已反饋文章」計算出使用者向量,並對「未反饋文章」計算相似度,決定推薦哪篇文章,也不會重複推薦。
- 每次根據當下的狀態計算推薦,並且記錄下來,形成一條固定的閱讀軌跡。
我推測他的運作原理大概是:
- 使用者向量 =
AVG(喜歡文章向量) - AVG(不喜歡文章向量) - 計算所有的
Cosine Similarity(使用者向量, 未反饋文章) - 取 Top 1 作為推薦
幾個吹毛求疵的小缺點:
- 只有推薦一篇文章的話,我自己會覺得有點「被牽著走」的感覺,選擇有點太少了。(不過這樣才是「軌跡」,所以也不是缺點,只是一種取捨)
- 按「換點口味」會被視為負反饋,但這不一定代表我對該主題不感興趣,可能只是對該文章不感興趣而已。
- 要讓使用者評分實在是有點難度,但這確實是比較尊重使用者的做法。(通常會用隱性一點的特徵)