【AE based RS】AutoRec: Autoencoders Meet Collaborative Filtering

论文地址:http://users.cecs.anu.edu.au/%7Eu5098633/papers/www15.pdf
WWW 2015
被引用次数:123
Australian National University

简介:
这篇文章提出了一种基于AutoEncoder的协同过滤方法来解决评分预测问题。将协同过滤和Autoencoder结合,在协同过滤算法中,假设有m个用户和n个物品,以及用户对物品的评分矩阵R,任务是尽可能准确地推测出用户对未评分物品的评分值。实验证明在RMSE指标数上优于CF和RBM等模型。

实验数据集:Movielens 1M, 10M and Netflix。

模型

模型分为user-based AutoRec和item-based AutoRec两种。

item-based AutoRec

输入

n:物品数 i=1...n
m:用户数


input

AE模型

output

AutoRec在传统AE的基础上做了如下变化

  • 损失函数只和观察到的元素有关
  • 加上正则化项

目标函数

预测

基线:RBM-CF

AutoRec和RBM-CF的区别:

  • RBM是生成模型,AutoRec是判别模型
  • RBM通过极大化对数似然来估计参数,AR直接用极小化RMSE
  • 训练中,RBM需要用对比散度,AR直接用梯度下降
  • RBM只能预测离散分数
  • 参数量:RBM-CF:nkr(or mkr)AutoRec:nk(or mk)

实验

  • item-based AutoRec胜出user-based AutoRec。这可能是由于每个项目评分的平均数量是高于每个用户的输入评分数;用户评分数量的高方差导致基于用户的方法的预测不可靠。


  • 隐藏层神经元数量会影响实验效果
  • AE深度增加,效果会提升

复现

关键代码

        self.r = tf.placeholder(dtype=tf.float32, shape=[None, num_movies], name='r')
        self.input_mask = tf.placeholder(dtype=tf.float32, shape=[None, num_movies], name='input_mask')
        self.output_mask = tf.placeholder(dtype=tf.float32, shape=[None, num_movies], name='output_mask')

        l_in = tl.layers.InputLayer(self.r * self.input_mask, name='input')
        l_in = tl.layers.DropoutLayer(l_in, keep=keep, name='dropout')
        l_encoder = tl.layers.DenseLayer(l_in,
                                         n_units=hidden_size,
                                         name='encoder',
                                         act=tf.nn.sigmoid,
                                         W_init=tf.truncated_normal_initializer(mean=0, stddev=0.05)
                                        )
        l_decoder = tl.layers.DenseLayer(l_encoder,
                                         n_units=num_movies,
                                         name='decoder',
                                         act=tf.nn.sigmoid,
                                         W_init=tf.truncated_normal_initializer(mean=0, stddev=0.05)
                                        )
        self.network = l_decoder
        self.r_pred = l_decoder.outputs
        W_encoder = tl.layers.get_variables_with_name('encoder/W:0')[0]
        W_decoder = tl.layers.get_variables_with_name('decoder/W:0')[0]
        
        cost_reconstruction = tf.reduce_sum(tf.multiply((self.r - self.r_pred), self.output_mask) ** 2)
        cost_penalty = tf.reduce_sum(W_encoder ** 2) + tf.reduce_sum(W_decoder ** 2)
        
        self.cost = cost_reconstruction + penalty * 0.5 * cost_penalty
        optimizer = tf.train.(lr, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False)
        self.train_op = optimizer.minimize(self.cost, var_list=self.network.all_params)

不足

  • 抗噪性能弱 ==》用DAE可以提升鲁棒性
  • 容易受到稀疏性和冷启动的影响

改进:Collaborative Filtering Neural network(CFN)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容