向量空间 Vector Space -- 推荐系统
文章目錄
- 1. 算法解析
- 2. 基于相似用戶做推薦
- 3. 基于相似歌曲做推薦
- 4. 總結
音樂App的功能越來越強大,不僅可以自己選歌聽,還可以根據你聽歌的口味偏好, 給你推薦可能會喜愛的音樂,有時候,推薦的還非常適合你的口味。
1. 算法解析
用兩句話總結:
- 找到跟你口味相似的用戶,把他們愛聽的歌曲推薦給你
- 找出跟你喜愛的歌曲特征相似的歌曲,把這些歌曲推薦給你
2. 基于相似用戶做推薦
把跟你聽類似歌曲的人,看做口味相似的用戶。用“1”表示“喜愛”,用“0”籠統地表示“不發表意見”。從圖中看出,你and小明共同喜愛的歌曲最多,有5首??梢哉f,小明跟你的口味非常相似。
遍歷所有的用戶,對比每個用戶跟你共同喜愛的歌曲數,并且設置一個閾值,某用戶共同喜愛歌曲數超過這個值,把這個用戶看作跟你口味相似,把這個用戶喜愛但你還沒聽過的歌曲,推薦給你。
如何知道用戶喜愛哪首歌曲呢?可以通過用戶的行為,來定義這個喜愛程度。給每個行為定義一個得分,得分越高表示喜愛程度越高。
剛剛那個例子,把每個人對每首歌曲的喜愛程度表示出來。圖中,某個人對某首歌曲是否喜愛,我們不再用“1”或“0”表示,而是對應一個分值。
歐幾里得距離(Euclidean distance)是用來計算兩個向量之間的距離的。
K維空間中的某個位置,我們可以寫作(X1,X2,X3,……Xk)。這種表示方法就是向量(vector)。
把每個用戶對所有歌曲的喜愛程度,都用一個向量表示。計算出兩個向量之間的歐幾里得距離,作為兩個用戶的口味相似程度的度量。
3. 基于相似歌曲做推薦
如果用戶是一個新用戶,還沒有收集到足夠多的行為數據,該如何推薦呢?
基于相似歌曲的推薦方法,就是說,如果某首歌曲跟你喜愛的歌曲相似,我們就把它推薦給你。
對歌曲定義一些特征項,比如傷感、愉快、搖滾、民謠,柔和、高亢等等。每個歌曲的每個特征打一個分數,這樣每個歌曲就對應一個特征向量。基于這個特征向量,計算歌曲之間的歐幾里得距離。歐幾里得距離越小,表示兩個歌曲的相似程度越大。
上面方案,需要一個前提,找到足夠多,并且能夠全面代表歌曲特點的特征項,除此之外,還要人工給每首歌標注每個特征項的得分。對于收錄了海量歌曲的音樂App來說,這是一個非常大的工程。此外,人工標注有很大的主觀性。
換一種思路。對于兩首歌,如果喜歡聽的人群都是差不多的,那側面就可以反映出,這兩首歌比較相似。如圖所示,每個用戶對歌曲有不同的喜愛程度,我們依舊通過上一個解決方案中定義得分的標準,來定義喜愛程度。
這個圖跟基于相似用戶推薦中的圖幾乎一樣。只不過這里把歌曲和用戶主次顛倒了一下。
- 基于相似用戶的推薦方法中,針對每個用戶,我們將對各個歌曲的喜愛程度作為向量。
- 基于相似歌曲的推薦思路中,針對每個歌曲,我們將每個用戶的打分作為向量。
有了每個歌曲的向量表示,通過計算向量之間的歐幾里得距離,來表示歌曲之間的相似度。歐幾里得距離越小,兩個歌曲越相似。
然后,在用戶已經聽過的歌曲中,找出他喜愛程度較高的歌曲。然后,找出跟這些歌曲相似度很高的其他歌曲,推薦給他。
4. 總結
上面問題是推薦系統(Recommendation System)里最典型的一類問題。這部分內容,可見算法的強大之處,利用簡單的向量空間的歐幾里得距離,就能解決如此復雜的問題。
上面只說了基本的理論,實踐中遇到的問題還有很多,比如冷啟動問題,產品初期積累的數據不多,不足以做推薦等等。這些更加深奧的,在實踐中慢慢探索吧。
總結
以上是生活随笔為你收集整理的向量空间 Vector Space -- 推荐系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arcgis 属性表 汇总_ArcGIS
- 下一篇: LeetCode 977. 有序数组的平