网站的数据挖掘--用户相似性研究(一)

    很多web2.0的网站很注重用户的体验。
    什么叫“注重用户体验呢”?
    其实很简单。很俗的讲法--当一个用户上到你的网站的时候,你要让用户感到用的很爽,并且下次还

想来。然而“并且下次还想来“却是很多网站都想做到的东西。
    众多web2.0网站推出友邻,同好,小组,同城等功能。其实很多网站都是基于用户注册时注册的资

料来对用户进行的分组。使用数据库的数据配对进行的用户分类。例如一个技术网站,你注册的时候填

写了上海市,爱好donet. 则下次你登录的时候系统自动会把你分类到donet技术类。并会把donet技术类

的人员随机推荐5-10个建议你加入其友邻。
    其实上述的做法有时是最有效而且。精度往往很高。(虽然没有理论依据).
    然而随着数据量的增大。这样做带来了一个很大的缺点---效率低下。百万级的数据使你无法瞬间完成这种相似用户的推荐。这也是一个中小型web2.0网站面临的难题。
    拿CSDN的读书频道为例。即将推出的是一个书友会功能。其中每个用户都能对图书进行评分。目前设置最高为5分。书友会的宗旨
   --- “以书会友”.
   反过来讲。既然以书会友,那系统最关心的事情是帮读者找朋友。一般读者都很懒。其实我也很懒。我上有些电影网站。假如他不推荐我一些兴趣爱好和我相同的用户我肯定不自己加他们。所以这样系统有个相似用户的推荐确实很重要。
   刚开始我尝试了采用普通程序进行批量查询。逻辑异常简单。如用户A对10本书的里的5本书打了3分以上。另外5本是2分以下。包含2分。则我会使用程序把对这些书也打打3分以上的用户取出来,取他们打分最高的书并且刨去用户A打分最低的5本书。然后降排序取前10本。最后取出拥有这10本打分(超过3分)最多的5本用户。 很幸运的是。系统测试的时候这个算法往往很准。不幸运的是。当测试数据到了10万以上的时候系统慢的想自杀。
   于是我开始尝试使用一些别的办法。
   探索中走弯路的不可避免的/
   我首先使用了最简单而且传统的 方法 --- 余弦相似性。
  
   为了容易看懂。我画个图
   
                     book1           book2                book3             book4               book5
user1           2                       2                                                 1                        5
user 2          3                                                   3                      0                         5
user3           3                        4                         5                                                
user4           4                                                                                                      3
user5                                      5                                                     3
    用此来举个例。 上面一共5本书。其中有5个用户对此进行了打分,分值如上图所示。
其中最高5分。
    这样看来整个数据视图变成了一个矩阵。
    用户和图书的关系可以看成一个向量。如user1的向量就是(2,2,0,1,5)(注:其中没有打分的

我们假设为0)
    于是假设开始。
    1。假如2个用户之间的向量夹角为0。我们可以认为他们是完全相似的用户。(实际中很少这个情况


    2.  假如2个用户之间向量夹角都不为0。则夹角越小用户的相似性越大。
    经过我翻了一些资料。于是使用 向量的余弦来计算用户相似性。
   假设用户向量使用 D来表示.我们要求的是和user1 最相似的用户.于是接下来的就是要计算 Duser1

分别和 user2,user3,user4,user5的相似性。 ----假设用sum(userx,usery)表示两个用户的相似性.
   通过计算 (保留2位小数)
    user1:user2 =0.81
    user1:user3 =0.34
    user1:user4 =0.79
    user1:user5 =0.74
  这样可以看出.user2 和use1的相似性是最大的。 使用这个方法为我解决了10万数据的效率问题
  后来我发现其实里面的漏洞很大...未完待续.....
附:
   余弦公式:   向量的内积/向量模的乘积


欢迎猛戳我简陋的个人官网 www.shenyisyn.org

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值