作者:庄程旭清华大学电子工程系基于邻域,LDA和FM的混合推荐系统设计百度电影推荐问题描述训练数据:1,262,741测试数据:314,679电影总数:8,369用户总数:143,670标签总数:1,129平均关注数:6.91用户观看电影记录:9,871,737FM模型建立实证研究比赛之后文献综述FactorizationmachinesBasicModelsRandomForest1.LibFM2.SVD++RBMkNN1.Tag作为itemfeature𝑟=𝑥·(𝑦+1𝑠𝑡𝑖)+𝑟MainPoint模型建立实证研究比赛之后文献综述1.根据用户喜爱程度调整参数𝑟=𝑥·(𝑦+1𝑠𝑖𝑡𝑖)+𝑟2.根据tag的所标注电影数进行分类𝑟=𝑥·(𝑦+1𝑠1𝑡𝑖1+1𝑠2𝑡𝑖2+1𝑠3𝑡𝑖3)+𝑟2.将Social信息直接作为userfeature𝑟=𝑦·(𝑥+1𝑠𝑝𝑖)+𝑟模型建立实证研究比赛之后文献综述BasicFeatures1.只保留相似度高的好友𝑟=𝑦·(𝑥+1𝑠′𝑝𝑖′)+𝑟相似度计算:𝑟=1𝑛−1𝑋𝑖−𝑋𝑆𝑋𝑌𝑖−𝑌𝑆𝑌2.只保留入度高的好友𝑟=𝑦·(𝑥+1𝑠′𝑝𝑖′)+𝑟1.计算“品味相同”的人,取前30个直接作为userfeature𝑟=𝑥·(𝑦+1𝑠1𝑦′𝑖)+𝑟实证研究比赛之后文献综述模型建立AdvancedFeatures基本思路:参考kNN的思想,参考相邻的人的打分来得出最后的打分2.计算“品味相同”的电影,取前30个直接作为moviefeature𝑟=𝑦·(𝑥+1𝑠2𝑥′𝑖)+𝑟模型建立实证研究比赛之后文献综述初步实验每一套模型均采用以下4种参数和程序运行方式:LibFM:采用MCMC学习,初始值选取参数0.1,特征维数20维,迭代100轮SVD++_2:采用SGD学习,迭代200轮,特征维数50维,前100轮步长0.01,后100轮步长0.001,参数惩罚0.0001,用sigmoid化。SVD++_1:采用SGD学习,迭代200轮,特征维数50维,前100轮步长0.01,后100轮步长0.001,参数惩罚0.1。SVD++_3:采用SGD学习,迭代400轮,特征维数50维,前200轮步长0.01,后200轮步长0.001,参数惩罚0.0001,用sigmoid化。模型建立实证研究比赛之后文献综述初步实验模型LibFMSVD++_1SVD++_2SVD++_3Tag0.61980.63820.62420.6435GoodTag0.61860.63900.62620.6451Tag+diff0.62000.63480.62830.6592Sns0.62070.63880.62970.6426Sns+thread0.62080.63890.63250.6527Sns500.62270.63750.62430.6510Snsall0.62340.63750.62590.6440Movieall0.61480.63040.61680.6365模型建立实证研究比赛之后文献综述初步分析Tag和sns之间的对比1.Tag比起sns来说更加密集2.这是个很不成熟的Sns系统:3.一部电影至少1个tag,大部分电影有10个tag一部电影平均有12.93个tag一个人平均只有6.91个关注(并且大部分人关注一个从未有打分记录的官方账号)总共143,670个人,有98733个人只有3个或者以下被关注数目,有40715个人根本没有人关注1.user数据的分散性模型建立实证研究比赛之后文献综述根据数据分析02000000400000060000008000000100000001200000017214321428535642749856964071178285392499510661137120812791350020000004000000600000080000001000000012000000175149223297371445519593667741815889963103711111185125913332.movie数据的集中性含义:相似的人太相似;user的相似对里有54.2%的相似度超过0.5,甚至有30.1%的相似度超过0.7。而movie的相似对里面只有9.1%的相似度超过了0.5。而相似的电影能够很好的扩大数据量通过相似的电影,能够看到更多的潜在的打分用户本质考虑:在人和电影的二分图之间引入隐层来增强两两之间的联系,从而相当于扩大了训练数据量模型建立实证研究比赛之后文献综述深入分析现象:人的打分记录的分散。电影打分记录的集中。“对称性破缺”启发:movie的feature效果更好。因为movie需要更多的自由度!来应对更多的user。模型建立实证研究比赛之后文献综述深入分析深入思考:对于不同数据量的电影,给予不同的重视,用较多的feature的数量来满足其适应data的需求。对于较少的数据量的电影,用较少的feature来防止过拟合。模型建立实证研究比赛之后文献综述修改之前的模型1.用聚类来使user更集中:1.用LDA的方法来做user的聚类,之后添加最相似的30个类作为userfeature。2.直接选取观看电影数超过100的人作为相似分析的全集。3.只选取打过分的人作为相似分析的全集(只有9873个人打过分)2.将相似电影和其他feature混合:movie+tagmovie+snsallmovie50模型建立实证研究比赛之后文献综述新模型测试模型LibFMSVD++_1SVD++_2SVD++_3Movie+tag0.61380.63090.61590.6390Movie500.61480.63200.61800.6421Movie+snsall0.61460.62790.61890.6526Snsallchange0.62070.63810.62610.6417Snsallthread0.62190.63810.62620.6432Sns_topic0.62250.64030.63090.6373Snsall0.62340.63750.62590.6440Movieall0.61480.63040.61680.6365模型建立实证研究比赛之后文献综述在比赛中实践比赛中共设计了30套以上的模型:Tag+average,user_movieSum+average,movie_userSns+actor,movietagallMovie+topic,sns+tag+movie…技巧:切分训练数据,重新训练模型后混合结果;对于训练数据,做后抹零处理…用最优线性混合对于所有的模型进行混合模型建立实证研究比赛之后文献综述深入思考如何利用不成熟的sns信息?长尾数据的利用一直是机器学习的难题。如何良好的聚类user信息?这个主要的思路在于找到很好的相似人。品味相似,而且能够扩充数据。模型建立实证研究比赛之后文献综述深入思考更好的寻找“相似”?现在寻找相似的方法忽略了二阶相似之间的联系。因此可以采用随机游走的方法,关在在于多游走几次。问题在于时间效率。模型建立实证研究比赛之后文献综述对于推荐系统实践的建议相似人相似电影Tag和标签模型建立实证研究比赛之后文献综述比赛之后对于训练集的重新拷问为什么和第一名差这么多?数据泄露。模型建立实证研究比赛之后文献综述比赛之后对于训练集的重新拷问对于userhistory的顺序问题:乱序?时间顺序!!模型建立实证研究比赛之后文献综述比赛之后对于训练集的重新拷问前k打分,后k打分:vali上的rmse为0.6173Movie_tag:vali上打分0.6223打乱顺序之后:vali上打分0.6332模型建立实证研究比赛之后文献综述比赛之后对于训练集的重新拷问前k打分,后k打分为什么效果这么好:对于人的处理,从心情角度。而不是从内容角度。实际上:在真实的推荐系统上,肯定不能获得之后的评分。但是能够知道今天的评分。有一定的作用。谢谢