“熵”--关于 读论文的一点想法
2013-04-01 20:08
489 查看
熵在维基百科上解释:
点击打开链接
在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。信息熵也称信源熵、平均自信息量。
一篇论文中将熵作为检测噪声的指标:本文[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,抽取了一小部分用户来测试:
实验结果:
数据显示为每个用户,以及该用户对应的熵:
{'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.
点击打开链接
在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。信息熵也称信源熵、平均自信息量。
一篇论文中将熵作为检测噪声的指标:本文[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.
相关文章推荐
- 关于论文的一点想法
- 关于思科网院的一点想法
- 关于web程序设计的一点想法
- 关于监控方案的一点想法供参考
- 关于UED前端开发的一点想法
- 关于REST的一点想法
- 我关于 应用的一点想法
- 主题:关于REST的一点想法,欢迎大家讨论。
- 关于PDF文件加密器内存截取虚拟文件的一点想法
- 关于单点登录的一点想法
- 关于需求变更的一点想法. 论变更的频率:
- 关于用户角色权限的一点想法(RBAC)
- 关于可配置工作流的一点想法
- 关于e瞳网社团web后端部门发展的一点想法
- 关于接口和抽象类的一点小想法
- 关于带有花纹的圆角框的拆法一点想法
- 关于博克园T恤的一点想法。
- 关于计算机培训的一点想法
- 关于敏捷团队建设的一点想法
- 关于自动化的一点想法