第一次写数据挖掘方面的程序,只是一个简单的练习,对大数据处理表示无能...
程序采用Item-Based Collaborative Filtering(基于项目的协同过滤算法)产生推荐。首先将训练集数据读入内存,进行分析。再读取每一条测试集数据进行判断:
- 如果该数据测试user对测试item已有评价,则直接给出该评价值
- 如果该测试user不存在,判断:若测试item存在则,给出所有user对该item的平均分,若item也不存在,直接得到1和5的均值3。
- 如果测试item不存在,测试user存在,则取该用户对其他item的评分的均值作为对该项目的评分。
- 如果测试user和测试item均存在,且测试user对测试的item没有过评价,则采用Adjusted Cosine Similarity算出该项目与其他项目的相似度,取前n个最近邻,然后采用推荐函数得到评分。
最后将每一条得到的预测和真实值对比得到mae值。
产生推荐的算法思路:
通过相似性度量产生测试item的最近邻居,然后产生相应推荐。设item的最近邻集合用NBSu表示,某user对某item 的预测评分用 P 可以通过item最近邻集合中user 的评分得到:
其中sim(u,n)表示item u和item n之间的相似性,Rn,i表示item n被user i的评分,"Rx拔"表示项目x得到的平均得分。
这种推荐比的效果要好得多。
#include #include #include #include
好吧最后- -求鞭挞吧..