我是靠谱客的博主 魔幻小松鼠,最近开发中收集的这篇文章主要介绍网站的数据挖掘--用户相似性研究,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

想来。然而“并且下次还想来“却是很多网站都想做到的东西。

    众多web2.0网站推出友邻,同好,小组,同城等功能。其实很多网站

 

都是基于用户注册时注册的资料来对用户进行的分组。使用数据库的数

据配对进行的用户分类。例如一个技术网站,你注册的时候填写了上海

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

市,爱好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万数据的效率问题
  后来我发现其实里面的漏洞很大...未完待续.....
附:
   余弦公式:   向量的内积/向量模的乘积 

最后

以上就是魔幻小松鼠为你收集整理的网站的数据挖掘--用户相似性研究的全部内容,希望文章能够帮你解决网站的数据挖掘--用户相似性研究所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部