協同過濾科普(3)

協同過濾的實現

我們弄清楚協同過濾是什么之后,再來討論下協同過濾是怎么實現的。

協同過濾主要有三個步驟,首先是獲取用戶群體的喜好記錄,然后找到與特定用戶相類似的其他用戶,最后得出推薦預測。下面詳細說明一下每個步驟。

  1. 獲取用戶群體的喜好記錄
    獲取用戶的喜好數據是協同過濾算法的第一步,也是最基礎的一步。推薦系統的輸入之一就是用戶的喜好信息,所以不管你后面的推薦算法做得有多好,如果第一步沒做好,那么最終得出的推薦效果也會很差。

    那么,系統是怎么有效獲得用戶的喜好信息的呢?其實,用戶的所有行為都會被系統所記錄,所以系統可以從用戶的行為信息中抽取出用戶的喜好信息。典型的用戶行為分為顯式和隱式兩類,顯式的用戶行為比如有對內容的評分,投票和轉發(fā)等,而隱式的用戶行為比如有在某個頁面停留的時間,對某些物品的點擊查看和購買行為等等。

    推薦系統收集完用戶的行為信息后,還需要對這大量的數據信息進行數據清洗,其中最關鍵的兩步是減噪和歸一化。減噪的目的是為了過濾掉用戶行為中的一些失誤操作以及數據中的一些噪聲,從而使得系統分析可以更加的準確。而歸一化的原因在于,在度量用戶對內容喜好程度時,需要對不同類型的用戶數據進行統計。而有的數據取值范圍很大,有的卻很小,如果不進行歸一化處理的話,這些數據將不具有可比性,因為大數值區(qū)間的數據屬性權重會變得很大,而小數值區(qū)間的數據屬性權重就會變得微乎其微。所以,我們應該將這些數據都限制在同一個區(qū)間內,但又不能破壞不同數據之間的相對關系,最簡單的歸一化操作就是將所有數據都進行適當的縮放,使得它們的取值范圍為[0,1]。

    進行完以上的預處理操作后,系統可以選擇不同的用戶行為分析方法,最終得到一個反映用戶對不同內容喜好程度的二維相似矩陣,如下圖所示:


    相似矩陣.png

    矩陣里的值表示的是用戶對不同內容的喜好程度,取值范圍為歸一化后的[0,1]區(qū)間,類型是浮點數值。

  2. 尋找與特定用戶相類似的其他用戶
    推薦系統收集到用戶的喜好記錄后,會根據這些用戶信息來計算每兩個用戶之間喜好的相似程度,然后對指定用戶進行推薦。用于推薦的協同過濾算法具體分為三類:基于用戶的協同過濾,基于內容項的協同過濾和基于模型的協同過濾,具體的區(qū)別會在下一節(jié)作出詳細介紹。不管是哪類的協同過濾算法,都涉及到計算用戶或者物品間的相似度,而計算相似度有幾種比較經典的方法,下面給出具體介紹。

我們把上面得到的相似矩陣的每一行抽取出來,作為每個對應用戶的行向量,而該行向量其實就對應著該用戶對所有內容的喜好程度。接著我們計算每兩個行向量之間的相似度,其實就是在計算對應用戶間的相似度評價值。當然,也可以把用戶-內容喜好的二維矩陣的每一列抽取出來,對應所有用戶對該內容的喜好程度,然后再計算內容之間的相似度。常用的相似度計算方法有歐幾里得距離,余弦相似度以及皮爾森相關系數。

歐幾里得距離(Euclidean Distance),也稱歐式距離,是最常用,也是最簡單的計算兩個點之間距離的方法,它的數學定義如下:
假設在n維空間里,存在兩點A和B,它們的坐標分別為:A=(x1,x2,...,xn ) ,B=(y1,y2,...,yn )。則它們的歐幾里得距離為:

Euclidean Distance.png

當n=2或者n=3時,也就是在二維或者三維空間中,兩個點之間的歐氏距離其實就是它們的實際距離。
兩個點距離越小,表示它們的相似度越大,所以歐氏距離其實和相似度成反比關系,我們需要將歐氏距離取個倒數(分母加一是為了防止出現距離為0時的情況):
sim.png

余弦相似度(Cosine Similarity),主要用于計算文檔之間的相似度,因為文檔向量是比較稀疏的,所以向量中很多值會等于0,表示該文檔不具備某個詞。又因為任意兩個文檔肯定不會包含太多相同的詞,所以如果統計 0-0 匹配的話,那么很多文檔都會與其他文檔很相似(因為每個文檔向量都有很多 0),這顯然是不合理的。而余弦相似度則可以滿足文檔相似性匹配的要求,因為它不僅能忽略 0-0 匹配,而且還能處理非二元向量。余弦相似度的具體公式如下:
Cosine Similarity

我們可以看出,余弦相似度其實就是在計算兩個向量之間的夾角,它們的夾角越小,余弦值越大,說明相似性也越高。

皮爾森相關系數(Pearson Correlation Coefficient),是一種常用于度量兩個變量間緊密程度的方法,取值范圍在 -1 到 1 之間。其中,-1 表示兩個變量完全負相關,0 表示無關,1 表示完全正相關。它的數學表達式如下:

Pearson Correlation Coefficient.png

Sx,Sy 分別代表 A 和 B 的樣品標準偏差。

3.得出預測推薦
了解完相似度的計算后,我們就可以根據相似度進行推薦了。前面已經說過,推薦的關鍵步驟是要找出用戶-內容的鄰居,而挑選鄰居的規(guī)則有兩種:一是K近鄰原則,二是基于閾值的鄰居原則。

K近鄰原則(K-neighborhoods)示意圖如 Fig 3 所示,我們假設為用戶1尋找他的鄰居用戶,K近鄰原則要求我們找到與之距離最近的前K個用戶,如示意圖中K取值為 4,則找到與用戶1最近的前 4 個用戶,分別為用戶 2,3,4 和 5。這樣做有著明顯的缺點,因為它不管實際距離為多少,都固定取 K 個鄰居,這樣可能導致的后果是那 K 個鄰居可能有些與指定用戶距離很遠,但被迫被認為與指定用戶喜好相似,從而影響系統的推薦精度。這個問題對孤立點來說更為嚴重。

Fig 3.png

基于閾值的鄰居原則(Threshold-based neighborhoods)示意圖如 Fig 4 所示,它與 K 近鄰原則有著很大的不同。該原則給定距離 R,然后以指定用戶為中心,距離 R 為半徑畫一個圓,落進該圓范圍內的用戶都認為是指定用戶的鄰居,而不管這些用戶的具體個數有多少。這樣的好處在于,可以確保得到的鄰居用戶與指定用戶的相似度不會相差很遠。基于閾值的鄰居原則強調的是“寧缺毋濫”,它比 K 近鄰原則效果要好,尤其是在數據稀疏的情況下。

Fig 4.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容