2008 – 2009, 阅读方式的变化 (Reco 与 Reader 简介)
版权声明: 允许非商业性转载,但转载时必须标明原作者 fcicq、原始链接 http://www.fcicq.net/wp/?p=782 及本声明。
又过了一年, 在偶不需要 Reco 和 Reader 的时候, 把它们的设计与实现过程公开一下.
Reco 是一个基于内容的 delicious 条目推荐系统.
Reader 是一个定制阅读器, 为 iphone / ipod touch 做了优化, 与 Reco 紧密联系. 有阅读/标记 Reco 条目和 RSS, Json 供稿源的能力.
Reco Changelog:
2008.2.7: 1.0, 使用 3000 多个已收藏条目进行训练, 基本推荐功能(link, tags, score), 只依赖内容的推荐.
2008.3.6: 1.05, 推荐排重, 并有重复次数显示, 条目最多只推荐两次(数据基础建立).
2008.4.4: 1.07, 不再抓取 rss, 改用 subscription.
2008.4.19: 1.1, 历史记录.
2008.4.20: 1.2, 统计功能, 界面定形(此后除了统计项目的小幅改动外, 没有任何变化).
2008.7.31: 1.5, delicious.com 上线, 抓取方式更新.
2008.10.11: 2.0, 存储重构, 使用 sqlite2 作为数据库, 弃用 subscription. (1.5 更新引入的 bug)
之后发生的事情对推荐没有太大影响, 也没有突出的新版本.
从这个 Changelog 上可以看出, 偶最初使用 Delicious 的 subscription 作为条目来源.
关于网页内容抽取的问题已经公开. 正文内容判定方面偶不想说.
关于 Tags 的评分:
可以参考贝叶斯垃圾邮件过滤器的实现. 说白了就是朴素贝叶斯.
但这里先验概率的计算方面, 因为条目数量有限所以用了一个函数做了处理.
函数 f(x, y), x 是 Tag 中所含的总条目数, y 是该 Tag 条目通过次数. 显然 x 大于等于 y.
x 越小, 函数值越接近 0.5, 其中 f(0,0) = 0.5.
x 越大, 则函数值越接近于 y / x, 但设计中函数的值域并非是 0 到 1, 以免过度影响结果,
Tags 的评分经常会碰到特殊情况, 如 Tags 过少/过多, Spam 等情况. 这个问题碰见的时候有一点点数学知识就能解决.
此外每个 Tag 还对应有修正值和限定值.
修正值一般在 0.4-0.6 之间, 默认是 0.5(对概率无影响), 用于临时提高某 Tag 权值用. 限定值与上面的函数值域有关.
对网页内容做分析, 形成一个概率数值作为初始值.
阀值因人而异, 因情况而异. 确定一个阀值之后对照训练判断即可.
关于数据的收集:
2 pass 的方法. 看到条目两遍而不收藏就判定为反例. 具体的实现不详述.
关于推荐成功率:
一段时间内的推荐成功率 = 一段时间的收藏数 / 一段时间推荐的条目数(判重后)
不要期待超过 20% 的成功率.
Reco 亮点总结:
概率方法计算, 容易微调. 对所有(新来的)条目概率做计算, 好的留下坏的靠边. 直奔目标, 不走协同推荐的弯路. 单纯的协同推荐不会知道偶需要的是什么.
缺点:
计算量大.
输出量大. (虽然是可调的, 但从启用到得到满意结果需要较长的过程)
之前的讨论文章:
delicious.com 10,000 items & introducing Reco.
delicious.com 10,000 items(2): fcicq 的收藏守则
最近的 Collaborative Filtering 实践结果.
谈谈 SPEAR 算法.
–
Reader Changelog:
在话说阅读器系列(共 5 篇)中有涉及. 以下时间不一定准确.
2009.2.25: 从抄鲜果 iphone 版页面开始. 只留下有用的 div.
2009.2.27: 1.0, 话说阅读器 和 话说阅读器 (2) 中有说明.
此时的 Reader v1.0 是基于 sqlite 数据库的阅读器, 阅读结果直接反馈入数据库.
2009.3.8: 2.0, 可参见豆瓣相册 和 话说阅读器 (4).
Reader v2.0 只读入 json (Reco 的输出已调整为 json 格式, RSS 可转换为 json 读入), 输出 json 配置文件. 运行速度明显加快.
2009.3.xx: 2.1, 完成 Filter 项目. 小的细节修正.
Filter 项目读入 Reco 的输出和 Reader 的配置文件, 负责判重并将 Reader 的推荐数据反馈给 Reco, Reco 不再负责判重任务.
从此 Reco, Filter, Reader 各司其职, 有些 Unix 味道. ![]()
2009.6: 停用 Reader.
2009.11: 结束整个推荐系统的使命.
Reader 亮点总结:
解决阅读问题.
数据收集快速准确(只记录收藏标记情况和当前阅读位置, 有撤销功能).
适合 iphone 平台, 页面干净简单, 加载速度快, 点击区域大, 误操作少.
缺点:
功能少, 除了与 Reco 结合之外其它方面没有跟上.
友情提示: 请注意文章的时效性与准确性, 作者不对文章的有效性负责.
Tags:
Permalink Bookmark on del.icio.us
Last Modified: May 30, 2010 at 7:24 pm