@chanvee
2014-07-11T13:34:09.000000Z
字数 1991
阅读 2881
趋势预测
社区推荐
动图一表示的是初始时的top500流行商品随着时间的推移排名的变化,红色的点表示初始排名为前250,绿色点表示初始排名为后250名。图二表示的是初始时排名在前250的商品随着时间变化仍在前250的个数。由上面两图可以发现大部分的top流行商品仍然会流行,但是最流行的前20商品一般是会一直变化的,同时随着时间的演化会有越来越多的后250个商品进入前250。那么如何发现这些会进入前250的“潜力股”商品,以及即将掉出前250的产品就成为了非常重要且有意思的问题。
在曾安的工作中][1],主要介绍了两种想法:根据当前item的度;以及根据相比前一个时间段增长的度来与预测商品的趋势。从中可以得到的结论包括:第一种方法对新晋流行的商品准确率较高,第二种方法可以提高预测那些商品不会掉出最流行的商品。又如上一次的结果有说道很多新进入前250的商品往往是最近新加进系统的商品,这些商品往往会在某一个月存在着突变,一下由几百或是几千的评分次数跃升到几万的评分次数。在没有做具体的完全统计情况下,只是肉眼的看了10个左右的这类商品的样本,发现一般从加入到爆发的隐藏时间大概在5个月左右(上图表示的是新商品的爆发现象)。所以另一个工作是如何找到新商品中哪些可能更具有爆发增长性,应该是解决上述进入前250的“潜力股”商品问题的一个解决思路。
对于这种爆发性的商品根据它当前的流行度(即度的大小)和最近流行度都不能够准确的预测出其流行趋势,于是我又做了一下这些新加进来的商品他们的平均评分,看看这种具有爆发特性的商品是否与他的评分相关。只不过实验结果得出的结论是两者似乎没有什么关系,前100,前1000-1100,前2000-2100的平均评分都在3.2左右,也就是说爆发性商品也不是想象中评分比较高的商品。目前遇到了这个瓶颈,没有想到太好的方法去解决。
[1] Trend prediction in temporal bipartite networks: the case of Movielens, Netflix, and Digg.
本次报告主要是按着邵老师提供的思想进行试验得到的结果,其中略作了一些改动,后文会说明原因。
Item1 Item2 Item3
User1 5 0 4
User2 3 1 3
同样以邵老师给的例子为例:
第一步是学习Item1, Item2, Item3等对于用户聚类的作用,即得到各个item对聚类作用的一个权值。这里使用的方法是:首先计算每一个Item相对于其他Item的Person Correlation(即列求相关系数),然后将所有的这些相关系数求和,以此类推,这样对每一个Item就都得到了一个相关系数的和,然后将这些相关系数“归一化”。需要说明的是,考虑到权值感觉是非负的,我把这些和(范围大概是-5-200左右,不精确)映射到了[0,1]的区间,原理y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;,所以这些权值的和不为1,我觉得也不需要为1,因为赋权值的本质是为了刻画该Item对于聚类的作用。
第二步在计算用户的相关系数矩阵的时候,也不是采用的邵老师提到的欧氏距离,因为欧氏距离越大表示越不相关,与程序有点矛盾,所以我把它改成了计算余弦相似度。计算式为:S((U1,U2)| (Item1, Item2, Item3))= (w1(5 * 3)+w2(0*1)+w3(4*3))/(sqrt(5^2+4^2)*sqrt(3^2+1^2+3^2));由此得到了一个新的用户的相似度矩阵。
第三步则是根据用户相似的矩阵进行社区划分,采用的方法是k-means++。
此实验根据上述方法以及传统方法分别计算了推荐的准确率、召回率和F1值,其结果如表一、表二所示:
表一
L=5 | L=10 | L=15 | L=20 |
---|---|---|---|
Precision | 0.2916 | 0.2429 | 0.2107 |
Recall | 0.0617 | 0.0957 | 0.1179 |
F1 | 0.0881 | 0.1138 | 0.1232 |
表二
L=5 | L=10 | L=15 | L=20 |
---|---|---|---|
Precision | 0.2664 | 0.2130 | 0.1853 |
Recall | 0.0539 | 0.0724 | 0.0869 |
F1 | 0.0769 | 0.0900 | 0.0976 |
上面两个表分别表示两种不同的方法得到的结果,表1是根据邵老师的方法得到的结果,L表示推荐列表长度,即给每个用户推荐L个商品(下同);表二是传统的社区推荐算法。由图可知,新方法对推荐结果是有提高的。
[1] Markdown原文