探秘推荐引擎之协同过滤算法小综述
????? 數學大神、統計學大神和數據挖掘推薦大神請關注。
一、數學期望的理解
????? 早些時候,法國有兩個大數學家,一個叫做布萊士·帕斯卡,一個叫做費馬。帕斯卡認識兩個賭徒,這兩個賭徒向他提出了一個問題。他們說,他倆下賭金之后,約定誰先贏滿5局,誰就獲得全部賭金。賭了半天,A贏了4局,B贏了3局,時間很晚了,他們都不想再賭下去了。那么,這個錢應該怎么分?是不是把錢分成7份,贏了4局的就拿4份,贏了3局的就拿3份呢?或者,因為最早說的是滿5局,而誰也沒達到,所以就一人分一半呢?這兩種分法都不對。正確的答案是:贏了4局的拿這個錢的3/4,贏了3局的拿這個錢的1/4。
????? 為什么呢?假定他們倆再賭一局,A有1/2的可能贏得他的第5局,B有1/2的可能贏得他的第4局。若是A贏滿了5局,錢應該全歸他;若B贏得他的第4局,則下一局中A、B贏得他們各自的第5局的可能性都是1/2。所以,如果必須贏滿5局的話,A贏得所有錢的可能為1/2+1/2×1/2=3/4,當然,B就應該得1/4。
????? 數學期望由此而來。
????? 為什么寫這個呢?因為我發現協同過濾里很多公式的分子是權值和值成績的連加和,分母是權值之和(實際上就是加權平均),如果分開看,不就是概率(看作是權值的歸一化處理,這樣就滿足了相加為1的性質,那么肯定是概率了)乘以值的連加和么。
????? 期望(Expected-Value)就是概率和價值量乘積的累加和。
????? 認識的誤區。
????? 1.數學期望是當事人心理上最愿意或最現實的獲利。和漢語理解混淆,如:某A罰球命中率0.6,中的1分,不中0分,那么投一次,得分的期望是1或0(我期望投中,我肯定投不中)。解析:概率值會影響期望的,這就是沒考慮概率。數學期望簡稱期望,以后還是只叫數學期望吧。
????? 2.實際發生概率最大的獲利。咱們ABCD一般選擇呢BC作為正確答案。0.1A,0.9B,那么一定選B么?
????? 3.可能發生的獲利的平均值。
????? 筆者一直認為是第三個,為什么這么理解呢?定義上說期望反映了離散型隨機變量的取值的平均水平,或許我對第三個的理解有誤,或許是說只是平均值,沒有乘以概率。
????? 例題解析
????? 1.某書店計劃訂購一本新版書,根據以往經驗來預測,這本新書銷量為40本,100本,120本的概率為0.2,0.7,0.1,這本書的訂購價位6元,銷售價位8元,如果當時獸不出,只能以每本5元的價格作為剩書處理。請幫助店主決策應訂購多少本新書較為合理。
???? 解答:如果我高中的時候應該做得出來,現在看到竟然沒有思路,百度到解答后我認為我忽略了一個重要隱含條件,那就是40,100,120本的概率和為1,這說明了什么問題呢?那就是只會售出這三種情況,不會售出41,101,119本等等等等的情況。
??????????????????????????
????? 解答完畢之后我反而認為第一種解釋是期望的解釋,看來這道題起到了反作用。
????? 2.擲一次骰子,得到的點的期望是1/6*(6*(1+6)/2)=3.5,為什么出現小數呢?
???? 看了半天,還是沒解決我的問題。
????? 我去知乎社區查了查,得到如下一個問題,以及相關回復。
????? 數學期望也有翻譯成”預期“的,在一些研究中,例如資產定價理論里,幾乎是把這個數學上的”預期“和人心理上對資產價格的”預期“等同了。但看這個例子:扔一個均勻硬幣,正面+1分反面-1分,則數學“預期”是0,但是每個人都知道結果只可能是+1或者-1,不可能是0,自然不會有人”預期“結果是0分。
總之,誰能給數學期望一個直覺上容易接受的解釋嗎?
????? 1.簡而言之,甜甜圈的重心也不在甜甜圈里。
????? 2.可以理解為實驗結果用概率進行加權得到的預期。在大量試驗之后,實驗結果的平均值會向期望靠近。
????? 3.先上總結,期望是基于概率基礎的,是對未知的預期。TZ應該分清楚一次的實際結果和你預期的結果兩者的區別。以離散情況為例。??????
????? 你首先是已知在每一狀態i下的取值x_{i},以及概率p_{i}。然后你才能推斷出期望。而概率在大多出情況下是由頻數近似而來的。頻數就是在事件發生的次數/實驗的總次數。在這個定義中,就已經隱藏了大樣本的條件了。因而,期望就是在多次實驗之后,你預期的結果。而不是你下一次,或者某次實驗的結果。
????? 4.樣本容量等于總體時的概率值,也就是說期望是概率下的值,與某一次無關。
????? 5.我認為@He Jingyu 的答案不完全準確,并且第一句就誤導了知友。期望Expectation,是由概率密度函數定義的,手機就不給公式了。是講一個變量所符合的分布的特性。均值Mean,是樣本的特性,假設一組分布未知的樣本,均值仍然是可以計算的。更極端一點,這幾個樣本分布特性并不一樣,仍然可以求出均值。
????? 為什么這兩個概念會經常混淆呢?
????? 6.看了如上的回答,都沒有很本質的回答這個問題,諸如平均啊什么的,覺得中學生都能理解,題主肯定也明白。。基于我正在玩手機,只能簡單談下這個問題。數學期望本身并不是一個平均數,也是一個隨機變量。從統計角度,一個基于樣本的無偏估計。從概率角度,需要定義事件的集合,sigma域,測度等。期望這個隨機變量就是各個隨機變量在其生成sigma域上的最佳逼近元。
????? 感覺知乎就是屬于高端社區,每個人發的都是自己的見解,不是ctrl+c和ctrl+v。
????? 我這個問題很幼稚嗎?我不這么認為,看PCA和LDA時我查看了矩陣,發現Google把CSDN的一個MVP和矩陣聯系在了一起,文章叫《理解矩陣》,把矩陣看成一種變換,共三片,前后花了2年時間完成(ps:看完之后我還是不太理解,主要是方差什么的不知道其工程意義)。這兩者不是很相似么?
二、皮爾遜相關系數的理解
????? 我想知道的是皮爾遜公式為為什么值域在-1到1(怎么只管看出來或者理解出來),公式為什么這么表達?只有理解了,才能提出自己的相關系數公式。
????? 我想起了高中物理話U-I圖,老師說最接近兩遍點的直線,大學了知道是最小二乘法,那么最小二乘得出的直線兩側的點的皮爾遜相關系數應該與直線的斜率有某種聯系吧,或者說一個可以作為度量另一個的標準,數學大神請關注。
????? 當兩個變量的標準差都不為零時,相關系數才有定義,皮爾遜相關系數適用于:
????? (1)、兩個變量之間是線性關系,都是連續數據。
????? (2)、兩個變量的總體是正態分布,或接近正態的單峰分布。
????? (3)、兩個變量的觀測值是成對的,每對觀測值之間相互獨立。
????? 從上面看出,基于用戶的協同過濾是不是不該用皮爾遜相關系數,除了第二個條件不確定(莫非每個物品被購買的總數服從正態分布)。
????? Matlab里使用corr(x,y)函數。
????? 定理: | ρXY | = 1的充要條件是,存在常數a,b,使得P{Y=a+bX}=1;可以看出皮爾遜衡量的是兩組數據的線性相關程度。
????? 需要指出的是,相關系數有一個明顯的缺點,即它接近于1的程度與數據組數n相關,這容易給人一種假象。因為,當n較小時,相關系數的波動較大,對有些樣本相關系數的絕對值易接近于1;當n較大時,相關系數的絕對值容易偏小。特別是當n=2時,相關系數的絕對值總為1。因此在樣本容量n較小時,我們僅憑相關系數較大就判定變量x與y之間有密切的線性關系是不妥當的。
??????這是14號補充上去的。
?? 按照高中數學水平來理解, 它很簡單, 可以看做將兩組數據首先做Z分數處理之后, 然后兩組數據的乘積和除以樣本數。Z分數一般代表正態分布中, 數據偏離中心點的距離.等于變量減掉平均數再除以標準差.(就是高考的標準分類似的處理)。標準差則等于變量減掉平均數的平方和,再除以樣本數,最后再開方.所以, 根據這個最樸素的理解,我們可以將公式依次精簡為:
?? Z值的量代表著原始分數和母體平均值之間的距離,是以標準差為單位計算。在原始分數低于平均值時Z則為負數,反之則為正數。標準分數可以回答這樣一個問題:"一個給定分數距離平均數多少個標準差?"在平均數之上的分數會得到一個正的標準分數,在平均數之下的分數會得到一個負的標準分數。
?? 標準分數是一種可以看出某分數在分布中相對位置的方法。標準分數能夠真實的反應一個分數距離平均數的相對標準距離。如果我們把每一個分數都轉換成標準分數,那么每一個標準分數會以標準差為單位表示一個具體分數到平均數的距離或離差。將成正態分布的數據中的原始分數轉換為標準分數,我們就可以通過查閱標準分數在正態曲線下面積的表格來得知平均數與標準分數之間的面積,進而得知原始分數在數據集合中的百分等級。
?? 一個數列的各標準分數的平方和等于該數列數據的個數,并且標準分數的標準差和方差都為1。均值為0。
???例如:某中學高(1)班期末考試,已知語文期末考試的全班平均分為73分,標準差為7分,甲得了78分;數學期末考試的全班平均分為80分,標準差為6.5分,甲得了83分。甲哪一門考試成績比較好?
因為兩科期末考試的標準差不同,因此不能用原始分數直接比較。需要將原始分數轉換成標準分數,然后進行比較。Z(語文)=(78-73)/7=0.71 Z(數學)=(83-80)/6.5=0.46 甲的語文成績在其整體分布中位于平均分之上0.71個標準差的地位,他的數學成績在其整體分布中位于平均分之上0.46個標準差的地位。由此可見,甲的語文期末考試成績優于數學期末考試成績。
?? 由于標準分數不僅能表明原始分數在分布中的地位,它還是以標準差為單位的等距量表,故經過把原始分數轉化為標準分數,可以在不同分布的各原始分數之間進行比較。
三、基于用戶的協同過濾算法
????? 對協同過濾不是很了解的請看筆者這一篇(超鏈接)。
????? 基于用戶(User-Based)的協同過濾算法首先要根據用戶歷史行為信息,尋找與新用戶相似的其他用戶;同時,根據這些相似用戶對其他項的評價信息預測當前新用戶可能喜歡的項。給定用戶評分數據矩陣R,基于用戶的協同過濾算法需要定義相似度函數s:U×U→R,以計算用戶之間的相似度,然后根據評分數據和相似矩陣計算推薦結果。
????? 在協同過濾中,一個重要的環節就是如何選擇合適的相似度計算方法,常用的兩種相似度計算方法包括皮爾遜相關系數和余弦相似度等。
????? 這兩種方法能用在基于物品的協同過濾算法里么?筆者認為不能,為什呢?請思考該從哪得到關于物品的兩組向量呢?物品頂多是銷售了多少,要響亮的話必須要和特定用戶聯系起來了,我感覺是這樣,卻從沒見過有人這么用,哈哈。
????? 另一個重要的環節就是計算用戶u對未評分商品的預測分值。首先根據上一步中的相似度計算,尋找用戶u的鄰居集N∈U, 其中N表示鄰居集,U表示用戶集。然后,結合用戶評分數據集,預測用戶u對項i的評分,計算公式如下所示:
??????????????????????
????? 我對于上面這個公式的理解:用戶u對未購買的物品j的評分為用戶u對除了j以外的物品集{N-j}評分的均值(那么問題來了,如果u還對N中的其它物品沒評分,怎么辦?筆者的那一片文章用的是0表示,不過筆者直觀的感覺是應該有其他的有效算法,緊鄰下文的步驟一(尋找用戶C的鄰居)不知道的話不用該數據,哎哎哎,真不嚴謹)加上以TopK用戶u’與用戶u之間的相似性來加權平均用戶u’對j的評分與用戶u’評分的均值之差。
????? 筆者感覺筆者寫的上面的句子好繁瑣,半年過后,筆者沒有信心僅僅根據這句話寫出公式,哈哈。
????? 這個圖不太清晰,不過沒關系,只需要看是否帶撇,然后結合下面的例子就行了,看完這個公式我知道我那篇文章為什么錯了,就在于我最后求推薦物品的次序是直接把TopK用戶中買過這件物品的用戶與待被推薦用戶之間的相關性加起來,然后排序了。
????? 其中,s(u, u')表示用戶u和用戶u'的相似度。
????? 假設有如下電子商務評分數據集,預測用戶C對商品4的評分
用戶 商品1 商品2 商品3 商品4
用戶A 4 ? 3 5
用戶B ? 5 4 ?
用戶C 5 4 2 ?
用戶D 2 4 ? 3
用戶E 3 4 5 ?
????? 表中? 表示評分未知。根據基于用戶的協同過濾算法步驟,計算用戶C對商品4的評分,其步驟如下所示。
??? (1)尋找用戶C的鄰居
????? 從數據集中可以發現,只有用戶A和用戶D對商品4評過分,因此候選鄰居只有2個,分別為用戶A和用戶D。用戶A的平均評分為4,用戶C的平均評分為3.667,用戶D的平均評分為3。根據皮爾遜相關系數公式來看,用戶C和用戶A的相似度為:
?????????????????
????? 同理,s(C, D) =-0.515。
?? (2)預測用戶C對商品4的評分
????? 根據上述評分預測公式,計算用戶C對商品4的評分,如下所示:
?????????????????????
????? 依此類推,可以計算出其他未知的評分。
四、基于物品的協同過濾算法
????? 基于項目(Item-Based)的協同過濾算法是常見的另一種算法。與User-Based協同過濾算法不一樣的是,Item-Based 協同過濾算法計算Item之間的相似度,從而預測用戶評分。也就是說該算法可以預先計算Item之間的相似度,這樣就可提高性能。Item-Based協同過濾算法是通過用戶評分數據和計算的Item相似度矩陣,從而對目標Item進行預測的。
????? 和User-Based協同過濾算法類似,需要先計算Item之間的相似度。并且,計算相似度的方法也可以采用皮爾遜關系系數或者余弦相似度,這里給出一種電子商務系統常用的相似度計算方法,即基于條件概率計算Item之間的相似度,計算公式如下所示:
????????????????
????? 對于這個公式筆者不是很了解,或者說很認可,因為我不知道他的取值范圍是否在0到1之間,各位看官,你們是否同感呢?
????? 其中,s(i, j)表示項i和j之間的相似度;freq(ij)表示i和j共同出現的頻率;freq(i)表示i出現的頻率;freq(j)表示j出現的頻率;表示阻力因子,主要用于平衡控制流行和熱門的Item,譬如電子商務中的熱銷商品等。
????? 接下來,根據上述計算的Item之間的相似度矩陣,結合用戶的評分,預測未知評分。預測公式如下所示:
?????
五、實際應用
????? 這里僅列出Item-Based,User-Based在那篇博文里已經介紹的非常詳細了。
????? 在電子商務推薦系統中,商品相似度計算有著很重要的作用。它既可用于一些特定推薦場景,譬如直接根據當前的商品,為用戶推薦相似度最高的Top N商品。同時,它還可以應用于個性化推薦,從而為用戶推薦商品。電子商務網站收集了大量的用戶日志,譬如用戶點擊日志等。
????? 基于Item-Based協同過濾算法,筆者提出了一種增量式商品相似度的計算解決方案。
????? 具體計算步驟如下。
????? 1)獲取當天用戶點擊行為數據,過濾掉一些噪聲數據,譬如商品信息缺失等。從而得到用戶會話sessionID、商品ID(商品標識)、瀏覽時間等信息,如表5-1所示。由于A4的瀏覽時間和A1、A2、A3相差較大,因此將其過濾掉,這里定義為1800秒,如表5-2所示。
表5-1 用戶點擊行為日志表
用戶會話ID 瀏覽商品的時間???? Item Pairs
100 A1, 20:12 A1, A2?? A1, A3
A2, 20:13 A2,A1?? A2, A3
A3, 20:15 A3,A1?? A3, A2
A4, 23:30
表5-2 過濾后的用戶點擊行為日志表
瀏覽商品的時間????? Item Pairs
???? A1, 20:12 A1, A2?? A1, A3
???? A2, 20:13 A2,A1?? A2, A3
???? A3, 20:15 A3,A1?? A3, A2
????? 2)首先,計算任意兩種商品之間的共同點擊次數。然后,根據基于條件概率的商品相似度計算方法來計算商品的相似度。商品相似度公式如下。
???????????????
????? 其中,s(i, j)表示項i和j之間的相似度;freq(ij)表示i和j共同出現的頻率;freq(i)表示i出現的頻率;freq(j)表示j出現的頻率。
????? 3)合并前一天計算的商品相似度數據,進行投票判斷,選擇相似度較大的作為新的商品相似度,從而實現增量式商品相似度計算。
六、參考文獻
????? 1.知乎社區
????? 2. 數據挖掘與數據化運營實戰:思路、方法、技巧與應用
????? 3.百度
????? 4.紅黑聯盟
總結
以上是生活随笔為你收集整理的探秘推荐引擎之协同过滤算法小综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CDN服务品质协议1
- 下一篇: Android开发之搜Ya项目说明(3)