作者 : 庄程 旭 清华大学电子工程系

23
作作 : 作作作 作作作作作作作作作 作作作作LDA 作 FM 作 作作作作作 作作

Upload: ghada

Post on 07-Feb-2016

332 views

Category:

Documents


0 download

DESCRIPTION

基于邻域, LDA 和 FM 的 混合推荐系统 设计. 作者 : 庄程 旭 清华大学电子工程系. 百度电影推荐. ?. 评分. 训练数据: 1,262,741 测试数据: 314,679 电影总数: 8,369 用户总数: 143,670 标签总数: 1,129 平均关注数: 6.91 用户观看电影记录: 9,871,737. 关注. 标签. 魔幻片. 外语片. 问题描述. FM. 基础模型. kNN. RBM. LibFM. Factorization machines. Basic - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 作者 :  庄程 旭 清华大学电子工程系

作者 : 庄程旭清华大学电子工程系

基于邻域, LDA 和 FM 的混合推荐系统设计

Page 2: 作者 :  庄程 旭 清华大学电子工程系

百度电影推荐

问题描述

评分

标签关注

魔幻片外语片

?训练数据: 1,262,741测试数据: 314,679电影总数: 8,369用户总数: 143,670标签总数: 1,129平均关注数: 6.91用户观看电影记录:

9,871,737

Page 3: 作者 :  庄程 旭 清华大学电子工程系

基础模型

模型建立 实证研究 比赛之后文献综述

Factorization machines

BasicModels

RandomForest

1. LibFM

2. SVD++

RBMkNN

Page 4: 作者 :  庄程 旭 清华大学电子工程系

1. Tag 作为 item feature

Basic Features

模型建立 实证研究 比赛之后文献综述

1. 根据用户喜爱程度调整参数2. 根据 tag 的所标注电影数进行分类

Page 5: 作者 :  庄程 旭 清华大学电子工程系

2. 将 Social 信息直接作为 user feature

模型建立 实证研究 比赛之后文献综述

Basic Features

1. 只保留相似度高的好友

相似度计算:

2. 只保留入度高的好友

Page 6: 作者 :  庄程 旭 清华大学电子工程系

1. 计算“品味相同”的人,取前30 个直接作为 user feature

实证研究 比赛之后文献综述 模型建立

Advanced Features

基本思路:参考 kNN 的思想,参考相邻的人的打分来得出最后

的打分

2. 计算“品味相同”的电影,取前 30 个直接作为 movie feature

Page 7: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

初步实验

每一套模型均采用以下 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 化。

Page 8: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

初步实验

模型 LibFM SVD++_1 SVD++_2 SVD++_3

Tag 0.6198 0.6382 0.6242 0.6435

GoodTag 0.6186 0.6390 0.6262 0.6451

Tag+diff 0.6200 0.6348 0.6283 0.6592

Sns 0.6207 0.6388 0.6297 0.6426

Sns+thread

0.6208 0.6389 0.6325 0.6527

Sns50 0.6227 0.6375 0.6243 0.6510

Snsall 0.6234 0.6375 0.6259 0.6440

Movieall 0.6148 0.6304 0.6168 0.6365

Page 9: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

初步分析

Tag 和 sns 之间的对比1. Tag 比起 sns 来说更加密集2. 这是个很不成熟的 Sns 系统:3. 一部电影至少 1 个 tag ,大部分电影有 10 个tag

一部电影平均有 12.93 个 tag一个人平均只有 6.91 个关注(并

且大部分人关注一个从未有打分记录的官方账号)

总共 143,670 个人,有 98733 个人只有 3 个或者以下被关注数目,有 40715 个人根本没有人关注

Page 10: 作者 :  庄程 旭 清华大学电子工程系

1. user 数据的分散性

模型建立 实证研究 比赛之后文献综述

根据数据分析

1 121 241 361 481 601 721 841 961 1081120113210

2000000

4000000

6000000

8000000

10000000

12000000

1 121 241 361 481 601 721 841 961 1081120113210

2000000

4000000

6000000

8000000

10000000

12000000

2. movie 数据的集中性含义:相似的人太相似;user 的相似对里有 54.2% 的相似度

超过 0.5 ,甚至有 30.1% 的相似度超过0.7 。

而 movie 的相似对里面只有 9.1% 的相似度超过了 0.5 。

而相似的电影能够很好的扩大数据量

通过相似的电影,能够看到更多的潜在的打分用户

本质考虑:在人和电影的二分图之间引

入隐层来增强两两之间的联系,从而相当于扩大了训练数据量

Page 11: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

深入分析

现象:人的打分记录的分散。电影打分记录的集中。

“ 对称性破缺”启发:

movie 的 feature 效果更好。

因为 movie 需要更多的自由度!来应对更多的 user 。

Page 12: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

深入分析

深入思考:对于不同数据量的电影,给

予不同的重视,用较多的 feature的数量来满足其适应 data 的需求。对于较少的数据量的电影,用较少的 feature 来防止过拟合。

Page 13: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

修改之前的模型

1. 用聚类来使 user 更集中:1. 用 LDA 的方法来做 user 的聚

类,之后添加最相似的 30 个类作为 user feature 。

2. 直接选取观看电影数超过 100 的人作为相似分析的全集。

3. 只选取打过分的人作为相似分析的全集(只有 9873 个人打过分)

2. 将相似电影和其他 feature 混合:

movie + tagmovie + snsallmovie50

Page 14: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

新模型测试

模型 LibFM SVD++_1 SVD++_2 SVD++_3

Movie+tag 0.6138 0.6309 0.6159 0.6390

Movie50 0.6148 0.6320 0.6180 0.6421

Movie+snsall

0.6146 0.6279 0.6189 0.6526

Snsallchange 0.6207 0.6381 0.6261 0.6417

Snsallthread 0.6219 0.6381 0.6262 0.6432

Sns_topic 0.6225 0.6403 0.6309 0.6373

Snsall 0.6234 0.6375 0.6259 0.6440

Movieall 0.6148 0.6304 0.6168 0.6365

Page 15: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

在比赛中实践

比赛中共设计了 30 套以上的模型:Tag+average , user_movieSum+average , movie_userSns+actor , movietagallMovie+topic , sns+tag+movie…

技巧: 切分训练数据,重新训练模型后混合结果;对于训练数据,做后抹零处理…

用最优线性混合对于所有的模型进行混合

Page 16: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

深入思考

如何利用不成熟的 sns 信息?长尾数据的利用一直是机器学习的难

题。如何良好的聚类 user 信息?

这个主要的思路在于找到很好的相似人。品味相似,而且能够扩充数据。

Page 17: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

深入思考

更好的寻找“相似”?现在寻找相似的方法忽略了二

阶相似之间的联系。因此可以采用随机游走的方

法,关在在于多游走几次。问题在于时间效率。

Page 18: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

对于推荐系统实践的建议

相似人

相似电影

Tag 和标签

Page 19: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

比赛之后对于训练集的重新拷问

为什么和第一名差这么多?

数据泄露。

Page 20: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

比赛之后对于训练集的重新拷问

对于 user history 的顺序问题:乱序?

时间顺序!!

Page 21: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

比赛之后对于训练集的重新拷问

前 k 打分,后 k 打分: vali 上的rmse 为 0.6173Movie_tag : vali 上打分 0.6223打乱顺序之后: vali 上打分0.6332

Page 22: 作者 :  庄程 旭 清华大学电子工程系

模型建立 实证研究 比赛之后文献综述

比赛之后对于训练集的重新拷问

前 k 打分,后 k 打分为什么效果这么好:

对于人的处理,从心情角度。而不是从内容角度。实际上:

在真实的推荐系统上,肯定不能获得之后的评分。但是能够知道今天的评分。有一定的作用。

Page 23: 作者 :  庄程 旭 清华大学电子工程系

谢谢欢迎提问