”基于用戶的協同過濾算法“是推薦算法的一種,這類算法強調的是:把和你有相似愛好的其他的用戶的物品推薦給你。
要實現該推薦算法,就需要計算和你有交集的用戶,這就要用到物品到用戶的反查表。
先舉個例子說明下反查表:甲喜歡的物品有:A、B、C;乙喜歡的物品有:B、E、F;丙喜歡的物品有:A、J、K;而你喜歡的物品是:A、J、M。
反查表就是喜歡A物品的有你、甲、丙,喜歡J物品的有你、丙,喜歡M物品的只有你,這就是和你喜歡的物品有聯系的用戶。有了這個反查表,我們就可以看出和你有關系的用戶只有甲和丙,乙用戶和你沒有任何的交集。
于是,接下來我們只需要再計算甲、丙和你的相似性,找出和你最相鄰的用戶,通過這個用戶來給你推薦物品。
因此,我在實現基于用戶的協同過濾算法的第一步的關鍵是:通過SQL自連接,能夠反查到和你喜歡的物品有聯系的用戶。(自連接的定義By百度百科:自連接(self join)是SQL語句中經常要用到的連接方式,使用自連接可以將自身表的一個鏡像當做另一個表來對待,從而能夠得到一些特殊的數據。)
我所建的評分信息表擁有的字段和數據(刪減版)如下圖所示:
圖1.評分信息表
其中,字段u_ID代表用戶ID,f_ID代表視頻ID,兩者都是另外兩張表的主鍵,score代表評分值。
我所使用的自連接語句為(原語句放置于存儲過程中):
SELECT DISTINCT B.u_ID FROM tb_interest A,tb_interest B WHERE A.f_ID = B.f_ID AND A.u_ID = 2 AND B.u_ID<>2;View Code
執行的結果截圖如下:
圖2.自連接語句執行結果
由結果我們可以知道,和用戶2有關聯的用戶為4、5,即用戶2評分過的視頻,用戶4和用戶5也評分過。這樣,我們利用SQL自連接語句,通過一句簡單的SQL語句,就能夠反查到了所要的信息。
http://www.cnblogs.com/HellerTse/archive/2014/05/02/3703801.html
新聞熱點
疑難解答