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