#1 - 2010-3-28 09:40
‌aligo
之前Mio算法的结果令人不是很满意
主要原因在于用户评分时候会被其他人评分和自己的评分习惯所左右
之前没有想到这个问题,昨天群里有人提了一下之后才重新在这个方向上考虑

Mio Techpreview 1的相似度是比较两个项目在同一部分用户手中得分高低的一致性(与评分高低无关)来比较两个项目是否相似
而Mio Techpreview 2考虑的是先参考用户过往评分基准得出用户实际上对项目的评价。同时对于项目对应用户口味聚类进行权重,当一个用户在同一个口味的类似项目(不妨碍一个用户同时喜欢多种口味的项目,只是按评价类似度)中的评价越相似,则此用户对此种口味项目的评价越有代表性,反之亦然。

经过比较个人认为在滤去用户评价基准噪音以及用户评价时受到其他用户评价的影响之后,Mio Techpreview 2的推荐出的关联项目较有价值

关于为什么Mio是优先选择用户评价而非tag或者其他方式来评价项目关联,主要是基于'喜欢这个XXX的用户还喜欢'的考虑。
同时Mio只是作为Tomodachi的一员,下一个Tomodachi应该会采用tag关联的形式

测试数据:
Bangumi的subject_interests表
生成日期:2010 年 03 月 26 日 21:57
打分数据:140,766条,6.8 MB
有效项目:3,531条

测试条件:
CentOS 32bit
Xeon 3.06GHz * 1
256MB RAM
MySQL 5.1.41
PHP 5.3.1,使用PDO_SQL方式连接,使用foreach遍历数据


结果对比:
学习计算复杂度:
Mio Techpreview 1:每项目0.3~0.9s*3,531条,共花费约14分钟完成记忆库学习
Mio Techpreview 2:每项目0.1~2.1s*3,531条,共花费约17分钟完成记忆库学习
学习空间复杂度:
Mio Techpreview 1:为一个{mediumint,mediumint,float,smallint}的双索引记忆库,共2,879,974条,35.7 MB
Mio Techpreview 2:为一个{mediumint,mediumint,float,smallint}的双索引记忆库,共2,876,732条,35.7 MB
#2 - 2010-3-28 10:29
(BGMのTrinitas<=>婊冈妈<=>补冈妈<=>拜冈妈 三位一体 ...)
这种东西我觉得还是从tag上比较靠谱 而且比较重要的TAG权重也要考虑
#3 - 2010-3-28 12:39
(Awesome!)
这个版本算出来的结果已经比较靠谱了
#4 - 2010-3-28 16:06
杯具鸟右击点到打开所有链接导致楼层没了
#5 - 2010-3-28 16:06
结果举例:
A.在过滤掉冷数据(共同评分用户较少)之后,与id=1424:K-ON关联前十的为:
id=274:Kanon(京都)
id=1464:Don’t say“lazy”
id=1890:最终幻想VII:再临之子 Complete
id=889:CLANNAD -クラナド-
id=876:CLANNAD ~AFTER STORY~
id=793:反逆的鲁鲁修
id=290:Fate/stay night
id=2585:科学超电磁炮
id=1671:化物语
id=276:Lucky Star

B.在过滤掉冷数据(共同评分用户较少)之后,与id=3477:空之音关联前十的为:
id=3444:神隐之狼
id=1372:凉宫春日酱的忧郁
id=1377:海猫鸣泣之时
id=1952:迦南
id=3326:笨蛋,测验,召唤兽
id=2463:无头骑士异闻录
id=2567:学生会的一己之见
id=236:超时空要塞 Frontier
id=3241:吸血鬼同盟
id=2354:黑之契约者 流星的双子

C.在过滤掉冷数据(共同评分用户较少)之后,与id=2667:机动战士Z高达关联前十的为:
id=770:天元突破
id=265:EVA
id=515:机动战舰
id=1015:机动战士高达0080口袋里的战争
id=1451:东之伊甸
id=234:AIR
id=2664:机动战士高达第08MS小队
id=928:现视研
id=292:黑之契约者
id=1333:空之境界 第五章 矛盾螺旋

D.试试美剧,id=2683:的生活大爆炸S3关联前十的为:
id=1390:生活大爆炸S2
id=265:EVA
id=1648:生活大爆炸S1
id=276:Lucky Star
id=247:银魂
id=1608:灌篮高手
id=1671:化物语