前段时间参加了一次数据竞赛,做的是用户兴趣度预测。下面说说我做的时候的一些思路和想法。
首先说数据:官方给了大约700M的训练数据,数据为CSV格式,用python的pandas读入后观察数据,会发现一个行数大约为三千四百余万、列为4的Dataframe,每一行代表了一次评分记录,记录中包含的信息为uid、iid、‘score’、‘time' ,即(columns=['uid'、‘iid’、‘time’、‘score’])。
下面就可以说说我们的思路了~:我们先是使用各种平均值法(包括u_means,i_means,u_i_means方法)这种方法逼格Low,效果也不怎么样,所以这里详细说了,然后我们把用户和商品评分的方差(std)考虑了进来,以此表示评分的波动,希望可以建立一个数学模型,最终效果也不好,再然后我们使用了协同过滤算法~~,这是推荐系统里最常见的算法,不多解释了,可是我们在做的时候又遇到问题了,(稀疏性如何解决就不提了,因为我们根本就没有建立起计算相似度所需要的矩阵,原因是数据太多,用户多,商品也多,建立一个[iid_max,uid_max]的矩阵太耗内存~~,我的笔记本只有6G内存,无法存储如此大的数据),不过这个问题并不严重,毕竟我们可以分开计算物体的相似度,具体思想参考 http://data.qq.com/article?id=823,我尝试了如此做,先是借鉴了关联规则里的Aproari算法来做,可问题来了,这样太慢了,然后我选择用FP-Tree,以为会快好多,