#1 - 2015-3-8 09:39
Genius🌟小乖💯 (Enjoy your (real) life!)
Dear BGMers:

我诚邀各位前往同步率改感受一下 Chi 的最新动态。正如标题所暗示的,本次更新除了算法更新之外,还为同步率增加了许多激动人心的新功能。

1. 分类同步率。现在各位可以看到自己在某一类别中的同步率。我认为,这样的改进能使得那些在独特领域有专长的 BGMer 更深入地了解 BGM 与自己持有相近兴趣的人的分布情况。

2. 喜好反馈。现在在查看你与某一位 BGMer 的时候,你可能会发现在下方写了你与他/她在某几部作品上持有相同看法。如果你和他/她的同步率降到 50% 以下,反馈可能会给出你与他/她在某几部作品上持有相反看法。@若卡 你点的菜!

3. 活跃度控制。现在在查看前十位同步率用户榜单的时候,可以加入活跃度控制选项。

另外,本次更新对于算法的详细过程,我已经 po 到了这里。几位业界人士@Kane @Glenn 如果有兴趣可以来评议一下(bgm38)

Cheers
Nya
#2 - 2015-3-8 10:03
(VIP已到期,请尽快续费)
分类好评

Genius、小乖 在 若卡 和全站有收藏三次元条目的 BGMer 同步率中排名处于排名第 9419 位的位置,超过了 3.21% 的 BGMer!

你们在半泽直树一部作品上持有相反评价。

来!战个痛快!(bgm38)
#2-1 - 2015-3-8 17:00
#2-2 - 2015-3-8 19:12
老大
与此同时,lighthouse 不该 在 Genius、小乖 的全站有收藏条目的用户同步率排名中名列第 49814 位,击败了 1.09% 的基/姬友!(喂
你们在魔法少女小圆、心理测量者和死亡笔记等作品上持有相反评价。

怎么那么低(bgm38)(bgm38)(bgm38)
#3 - 2015-3-8 10:05
(この勝利を、近所のおばさんに捧げる!)
多谢邀请你以为是知乎啊(bgm38)

1. 我的直觉是最好用cross-validation调sigma和Q,这两个参数直接关系到表达能力和泛化能力的平衡。你好像试了一些不同的sigma。Q是怎么定的?是5吗?

2. early stopping(即小的#iterations)也有一定泛化作用,但前提是你的gradient descend的initialization是一个informative的prior,这样#iterations能决定如何结合prior knowledge和data里的posterior knowledge。顺便你现在的initialization是怎么弄的?

3. 现在的objective function是convex的吧?那样应该总能找到global optimum吧。。

4. 没有打分的项目取0是一种做法,更标准一点的做法应该是直接在objective function里忽略掉。intuition是这样的:假设A没有给X打分,但你从数据里能明显看出来A会很喜欢X,那么你的reconstruction就会给(A, X)一个正分。你现在的objective function是会惩罚这个正分的,因为你把0当成了ground truth。把这个惩罚去掉我感觉实际上是增强了表达能力。。

最后一句表述不准确,想了一会儿终于明白应该怎么说:去掉这个惩罚实际上是简化了问题,因为你现在的objective function不仅要求预测用户的喜好,还要求预测用户是否收藏每个条目
#3-1 - 2015-3-8 13:37
Kane
对了,关于gradient descend发散的那种情况,有个小trick不知道你试过没有:可以考虑不把step_size缩太小,而是控制一下gradient的max-norm。具体说来,设置一个常数C,当||grad||_inf > C 的时候 grad <- grad / ||grad||_inf * C。我最近也在做一个用gradient procedure的东西,有些发散的情况加了这个上限就好了。
#3-2 - 2015-3-8 16:44
Genius🌟小乖💯
(从4看来你有一些重大误解,所以倒过来说了)
4. RMSE 里面计算的都是已经打分的记录与预测值的差距,没有打分的不计算。你好像认为我会给用户所有的未打分条目预测分值?我只给用户已经收藏但未打分的条目预测分值。而且这个罚项正是我想要的目的:用户已收藏未打分的估计值对同步率影响力不能太大。
3. 哦,对,是这样的。
2. U 和 V 都是 SVD,Bu(Bias of user)是用户所有打分条目中处于某一状态(如在看)平均值减去用户全部评分平均值,Bi(Bias of item)是已经减去用户平均值的作品评分基础上,某一作品处于某种收藏状态的平均值减去该作品平均评分值。
1. cross-validation 好啊,但是怎么量化表现“表达能力和泛化能力的平衡”呢?做 cross-validation 计算量超大的。哦,那个 Q 在动画类里面取了 800,我真的不知道怎么取。动画类 utility matrix 是一个40000 x 8000 的矩阵,是按照 SVD 之后的 singular value 占 trace 的比重取的吗?
#3-3 - 2015-3-8 17:31
Glenn
objective function应该是nonconvex的吧,毕竟u_i和v_j都未知
#3-4 - 2015-3-9 00:41
Kane
Genius、小乖 说: (从4看来你有一些重大误解,所以倒过来说了)
4. RMSE 里面计算的都是已经打分的记录与预测值的差距,没有打分的不计算。你好像认为我会给用户所有的未打分条目预测分值?我只给用户已经收藏但未打分的条...
4的确有误解。。不过我还是觉得matrix factorization是可以和计算同步率分离的,如果想要减少特定种类的估计值对同步率影响小(比如:已收藏未打分),可以在最后求余弦距离的时候加上权重。

Q的选取除了CV还真没什么好的办法。至于如何有效地做CV,你现在好像是把条目分成了training/validation/test。其实可以直接在R里randomly挖掉一些孔(用户打分的条目)当作validation/test。。不知道这样会不会让CV快一点?
#4 - 2015-3-8 10:24
被称作业内人士真是受宠若惊(bgm38),我也还在学啊。。

老实说推荐系统我也只是一知半解,你做的这些差不多就快倒我懂的极限了。。不过看了一下有几点觉得奇怪的地方

1. 矩阵R是已经减去了每个用户的平均评分吧,那么似乎就没必要加user bias了。

2. 你的Bu,Bi似乎都是,矩阵?但一般情况下会认为Bu是个长度等于用户数的向量,Bi是个长度等于item数的向量。从而有:
score(i,j)=μ+bu_i+bi_j+u_i.dot(v_j)

3. 似乎,你估算出了所有没出现过的评分之后,又只用了每个人收藏的部分来计算同步率,这是不是有点浪费了。。

4. 关于寻找同好这一终极目标,既然已经有了矩阵U,或许可以用这个来做些什么?毕竟其中每行代表了这个用户对某concept的喜好程度。

另外你是这这段时间里把这个matrix factorization从头写出了么。。行动力真高啊
#4-1 - 2015-3-8 16:57
Genius🌟小乖💯
反正都是研究 ML 相关的,一起讨论讨论嘛,超展开难得见到一个同行啊,也不一定要搞个高下之分。nya~
1、2:Bangumi 的条目是否评分,与条目收藏状态是互相独立的。这个 bias 的目的就是要利用条目所处状态的信息,U 和 V 都不会包含状态信息。所以 Bu 是一个用户数 x 状态数(5)的矩阵。
3. 哦,我没有估计所有未评分条目,我只是估计了用户已收藏但未评分的条目的分值。
4. Oh yes you are right,不过我想多接触一些算法,用不同的模型去解决问题比如说RBM之类的
#4-2 - 2015-3-8 17:25
Glenn
Genius、小乖 说: 反正都是研究 ML 相关的,一起讨论讨论嘛,超展开难得见到一个同行啊,也不一定要搞个高下之分。nya~
1、2:Bangumi 的条目是否评分,与条目收藏状态是互相独立的。这个 bias 的目的就是要...
原来如此,bias是指这方面的bias啊…不过你有试过不把这五种状态分开考虑么?我觉得引入这么多bias变量可能不会增加多少performance。
#4-3 - 2015-3-8 17:41
Genius🌟小乖💯
Glenn 说: 原来如此,bias是指这方面的bias啊…不过你有试过不把这五种状态分开考虑么?我觉得引入这么多bias变量可能不会增加多少performance。
没有。我觉得状态包含的信息量还是挺大的,比如抛弃和搁置就暗示着用户会给作品评低分,而想看表达一种高期望。
#4-4 - 2015-3-8 17:56
Glenn
Genius、小乖 说: 没有。我觉得状态包含的信息量还是挺大的,比如抛弃和搁置就暗示着用户会给作品评低分,而想看表达一种高期望。
你说的对,是我想错了。既然只预测收藏的,那多出来的这个状态信息确实应该用上。
#5 - 2015-3-8 10:26
没有选活跃度控制,在前十位里的排名和点进去看的不一样(bgm38)
书籍是因为我标的太少(100左右)还是用户总体标的比较少和分散,出来的结果非常不准,排得低的感觉比排得高的喜好更相近(bgm38)
#5-1 - 2015-3-8 16:59
Genius🌟小乖💯
It seems it is a bug. I am sorry for that. Maybe I am a religious scholar, but I'm not a good programmer(bgm38)
#6 - 2015-3-8 19:16
(你谁啊?我准许你套近乎了吗?)
(bgm38) 自己和自己比同步率,还不是100%同步率
#6-1 - 2015-3-8 19:20
Genius🌟小乖💯
Yes!
因为为了防止具有很少收藏的人进入前十榜单,在计算的时候做了某些 trick。其实这是不科学的。但是如果我按照真实的同步率展示,BGMer 们又要说我不科学。在下一个玩具设计出来之前,这个 feature 不会有所改变。
#7 - 2015-3-8 19:30
(xxsuneV)
谁把阿里哥给召唤过来。
#8 - 2015-3-9 03:06
(追番日益,补番日损)
你们在特别的她、灰羽联盟和极黑的布伦希尔特等作品上看法一致。

问题是特别的她和灰羽联盟我都还没看过怎么会有想法(bgm38),所以是不是应该考虑计算同步率的时候剔除“想看”的收藏?
#8-1 - 2015-3-9 03:08
Genius🌟小乖💯
那就快看啊!
#8-2 - 2015-3-16 15:56
dhzy
厉害(bgm38)
#8-3 - 2015-3-16 15:59
若卡
想看都有一个“想”字了,怎么会没有想法!(bgm38)
#8-4 - 2015-3-16 16:14
Another
若卡 说: 想看都有一个“想”字了,怎么会没有想法!
恍然大悟(bgm38)
#9 - 2015-7-19 19:48
现在连不上了?
#9-1 - 2015-7-19 19:58
Genius🌟小乖💯
现在好了。昨天配置的时候手抖了一下。
#10 - 2015-7-19 20:45
胡思乱想一下,现在能查询到的是,与自己(或某个特定用户)同步率排名前 10 的用户,很残念的是,再查询这 10 个用户,会发现自己(或某个特定用户)往往并不在与这 10 个用户同步率排名前 10 的用户的名单里。虽然这么打比方可能不太妥当,但总有种我爱她但她不爱我的感觉(bgm38)

不知道能不能开发出这样的功能,倒过来查询自己(或某个特定用户)在哪些用户的同步率排行榜上是靠前的。用上面的比方,就是找出爱我的人(bgm39)

再进一步,如果能筛选出彼此同步率排名都很高的用户,那就更好不过了。这也充分体现了 Bangumi 交友育儿的主旨。(bgm72)
#11 - 2016-8-30 17:05
(xD)
偶然看到这个,这几天正在赶论文,好像对我很有启发(bgm38)
#11-1 - 2016-8-30 21:32
Kane
哦?投啥会?
#11-2 - 2016-8-31 00:39
事实是柿子 - ⭐️VIP3
Kane 说: 哦?投啥会?
我这渣渣能投啥会,自己学校写的玩的……
#12 - 2021-1-17 23:31
(我长大了要发明7G)
……服务现在不在线了啊。
#13 - 2021-3-3 17:02
同步率改的服务不工作了。还有重开的机会吗?