推荐

来源:互联网 发布:淘宝售假白名单 编辑:程序博客网 时间:2024/04/28 13:12

创新项目做的推荐系统,主要参考文献为巩亮的推荐系统书。

主要利用用户的用户行为,用户标签以及对资源进行动态分类,虽然有很多不足,但自认为还是有些特点的,考虑得比较细致了。

主题思路:

根据用户的兴趣模板,用户的历史记录来给用户做针对性的资源推荐。并且能够根据用户的信息反向动态调整资源分类。下面是算法的具体实现:

1          首先我们将用户分为新用户和老用户,因为新用户会遇到冷启动问题,所以需要区分对待。

1.1         对新用户刚注册,缺乏足够的历史数据,无法根据稀疏的浏览记录正确的分析出用户的兴趣。所以对新用户,我们利用用户自己选择的兴趣模板,根据用户的兴趣模板进行较为大致的推荐。当用户发展成为老用户之后,我们改变推荐标准,使得推荐更加合理。此处我们衡量用户已成为老用户的标准是用户使用的时间》=N天。

1.2         对于老用户,我们使用一个新推荐标准,即评分机制。通过分析用户的浏览历史记录以及一些简单浏览行为,对用户加权积分。最终在推荐的时候根据用户对各个分类的得分高低排序,高分的优先推荐。具体评分机制如下:

1.2.1.1   用户上线后,根据用户信息给用户推荐一些资源。如果用户查看了我们推荐列表里的资源,说明我们的推荐产生了一定的作用,此时给用户查看的该资源对应的类型一个得分x;当然如果此次在线时段都没查看或下载我们的推荐资源,可以认为此次推荐不太符合用户兴趣,应给推荐资源对应的类型评分一个扣分机制,比如扣分y;另外用户除了查看相关资源的信息外,也可能会下载该资源,如果下载了一部资源,我们可以认为用户对该资源很感兴趣,此时应给一个额外的得分z,并且可以令(z>x)。

1.2.1.2   能够说明用户对某些资源是否感兴趣不仅仅通过推荐列表获得,有可能用户喜欢某一类型资源,会直接查找某一类型资源列表。用户的这一行为也能够比较准确获取用户的感兴趣点。所以当用户通过特定资源列表点击某一部资源,此时可给用户一个得分x1,如果下载完成,则另外给一个更高得分z1.

1.2.1.3   在我们的推荐系统中,能够获取资源可以通过很多途径,除了推荐列表,资源分类列表,还可以通过热门资源列表,附近资源列表以及查找资源列表等。但相对来说对用户兴趣点的影响力度相对之前两种方式小点。所以这些情况下点击资源给一个得分x2,并且应该x2<x<=x1。同理如果下载某部资源应给得分z2,使得z2<z<=z1。

1.2.1.4   对于x、y、z、x1、x2、z1、z2的最合理取值需要经过大量数据统计才能得到。

1.3         当然,即使对老用户我们仍需考虑用户的兴趣标签。当用户修改兴趣模板时,如果用户兴趣发生变化,添加兴趣时,将对应的得分置为满分100分,在下次推荐时优先推荐;删除兴趣时,将对应的得分置为最低分0分,在下次推荐时不推荐。

1.4         在对用户推荐时,还考虑了推荐品类的多样性,依据兴趣权值,适当保证多样性,而不至于推荐结果过于单一。

2          第一步我们解决了用户兴趣方面的问题,也考虑了新用户旧用户的一些问题。下一步我们需要对资源进行合理管理,同样新资源也会有类似的冷启动问题。因为在资源共享时,我们没有要求用户选择资源的具体分类,只要求用户提供一个资源的所属大类。比如《王者天下》是动漫里的热血片,也可能是历史片。但是我们只需要用户开始分类时标记该资源为动漫类。所以对于新资源刚开始因为点击量过小,我们无法十分准确的对资源进行精确分类。为此我们采取了以下的解决措施:

2.1         新资源点击量不大,且点击量处于动态变化,所以这时候资源的类别也处于动态变化。我们预定一个周期,比如每天晚上2点对在线新资源根据点击量情况进行动态分类。对应点击量最大的类型即默认为该资源的类型。此处,我们采用了一些技巧来对资源的点击量进行统计,以便于能够对资源进行分类,具体做法为:

2.1.1    每个用户都有对应的兴趣模版和针对各类型资源的得分统计,当许多用户点击该资源时,我们就将用户的其中一部分兴趣标签标记为该资源的类型标签,因为该资源的大类固定,所以使用用户兴趣标签的时候只能使用对应大类的兴趣标签。通过大量统计,我们能够得到该资源的合理分类。举例说明一下,小明有三个标签:热血动漫,悬疑动漫以及科幻电影;小红有四个标签:热血动漫,科幻电影,穿越小说,搞笑视频。他们都下载了动漫类别的资源《王者天下》,所以我们给该资源进行统计:2个热血动漫,1个悬疑动漫,其他的兴趣标签对该资源不起作用。所以在给资源分类时我们可以将该资源的分类标记为热血动漫类。

2.2         对一部资源如何分类,是否需要分类,我们又分以下几种情况:

2.2.1    虽然说资源的点击量一直在增加,但是并不是每天晚上2:00都要对所有资源进行分类,如果一天下来该资源点击量总量很小,不超过n,比如n为100时我们就不对该资源重新分类,当点击量达到一定量之后再分类。

2.2.2    此外,有些资源特别热门,在短短几天里就可以看出该资源类型已经定型,总点击量m很大,超过我们需要动态分类的最大值,比如m>10000。对这样的资源我们之后也无需多次分类。

2.2.3    也可能有些资源已经在线时间很长,有k天了,比如k>30天,对于这样的资源要么不受欢迎,点击量增量不大;要么点击量已经累积到了一定数量,但是没达到峰值m。所以这样的资源我们也可以认为动态分类的价值不大。故之后分类时也忽略该类资源。

为了实现以上几种情况的动态分类,我们需要加设一位标记位mark,取值0和1.在分类时考虑以上情况针对mark=1的资源进行动态分类。


0 0
原创粉丝点击