“熵”--關於 讀論文的一點想法

  熵在維基百科上解釋:

點擊打開鏈接

信息論中,被用來衡量一個隨機變量出現的期望值。它代表了在被接收之前,信號傳輸過程中損失的信息量,又被稱爲信息熵。信息熵也稱信源熵平均自信息量



一篇論文中將熵作爲檢測噪聲的指標:本文[1]定義了熵來描述用戶模型評分的變化程度, 熵的定義如下: 用戶模型Pu 可表示爲統計集合
Xu= { ni , i= 1, 2, ,, rmax} , 其中i 是評分值, ni 是評分值i 在Pu 中出現的次數. 熵Entropy( Xu) 的計算公式如式(2) 所示:


n1 = n2 = n3 = n4 = n5, 這樣求解到熵爲最大值 entropy(max) = log2(5);n1 = S,entropy(min) = 0

熵的範圍是[ 0, log2rmax] , 熵越小, 表示評分值變化幅度越小, 當所有評分值都相等時, 熵爲0; 當ni 相等時, 熵取到最大值log2r max .論文[1]中認爲託攻擊者一般利用正態分佈N 生成隨機評分數據[ 2, 3] , 託攻擊者的隨機評分變化幅度較小, 而正
常用戶會根據自己的興趣偏好評分, 評分變化幅度較大。根據熵的變化來作爲一個檢測噪聲的檢測指標。 我的問題1:如果知道了攻擊模型採用的分佈,檢測會不會更容易些呢?

嘗試用python寫了一個實現簡單的entropy求解過程,數據集才用movielens,抽取了一小部分用戶來測試:

 # calculated  one user'entropy 
def entropy_user():
    S = {}
    for user in user_movie.keys():
        n  = 0
        n1 = 0
        n2 = 0
        n3 = 0
        n4 = 0
        n5 = 0
        for u in user_movie[user].keys():        
            S.setdefault(user,0)           
            if (user_movie[user][u] == 1.0): 
                n1 += 1
            elif(user_movie[user][u] == 2.0):
                n2 += 1
            elif(user_movie[user][u] == 3.0):
                n3 += 1
            elif(user_movie[user][u] == 4.0):
                n4 += 1
            else:
                n5 += 1
        # print every rating times        
        print n1,n2,n3,n4,n5
        n= n1+n2+n3+n4+n5 
        print "n",n
        for x in n1,n2,n3,n4,n5:
            if x==0:
                continue
            p = x / float(n)
            p1 = log(p,2)
            S[user] += -1*p*p1
    return  S 

實驗結果:

數據顯示爲每個用戶,以及該用戶對應的熵:

{'1': 2.2339979078388272, '3': 2.0931147203787517, '2': 1.823067982273661, '5': 2.219733897483769, 

'4': 1.4854752972273344, '6': 2.016645572517734}

不足之處還望各位指正,剛接觸推薦系統,多多交流~~~

  • References:
  • [1] 伍之昂1, 莊 毅2, 王有權3 , 曹 傑1, 3基於特徵選擇的推薦系統託攻擊檢測算法 .電 子 學 報Vol . 40 No. 8Aug. 2012

  • [2]S Zhang , A Chakrabarti, J Ford, F Makedon. Attack detection in time series for recommender systems [ A] . Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining ( KDDc 06 ) [ C] . Philadelphia, Pennsylvania, USA, 2006.

  • [3] C Williams. Profile Injection Attack Detection for Securing Collaborative Recommender Systems[ R] . DePaul University
    CTI Technical Report, 2006.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章