旧物归档 [gitpage=>csdn]
这是我早期写的论文观后感,观点稚嫩且不准确,权当我瞎说。
Lin J, Sugiyama K, Kan M Y, et al. New and improved: modeling versions to improve app recommendation[C]// International ACM SIGIR Conference on Research & Development in Information Retrieval. ACM, 2014:647-656.
主题
本文建立了一个新型的软件推荐系统(称为版本敏感系统VSR),并与传统推荐系统相结合。不同于传统静态推荐系统(软件属性静态,不随软件的更新而变化),它从软件源码、软件更新日志中提取“潜在主题”(latent topic)并建立“兴趣表”,根据每个用户的“兴趣表”为这些潜在主题打分,得到该软件对于该用户的兴趣分数,随后系统为该用户推荐分数靠前(k位)的软件。
a. 创新点
- 该系统对版本敏感。用户甲对软件A不感兴趣,因此A在推荐系统里的“分数”极低(A并不会被系统推荐),但A更新后,A的潜在主题吸引甲,推荐系统提高A的“分数”,向甲推荐A。
- 新型的打分机制(式4、5、6、7)。同样的更新内容在不同的软件类别下拥有不同的权重。
- 提取潜在主题的方法Topic model中添加前置信息(pseudo-terms),使提取的潜在主题与软件的版本、类别相关联。
核心算法
使用5折交叉验证,每折交叉验证,随机选取样本中20%的用户作为目标用户,用于接受系统的推荐。对于目标用户,剔除前25%的最近最多下载软件(意味着这类软件该用户最感兴趣)。训练样本中,70%提取潜在主题,得到用户的“兴趣表”,30%投入GTB训练。通过上述过程确定系统中使用的参数,从而完善推荐系统。
如何评价推荐系统的好坏:被剔去的那25%的软件是否重新出现在推荐表中。
下面是算法各步的详细说明。
b. 提取潜在主题
使用文档主题生成模型(topic model)LDA与LLDA。将软件版本与类别(genres)作为pseudo-terms以#为头“插入”到将要处理的软件文本中,即潜在主题将会含有版本、类别信息。上述工作记作“inj+”。
插入的版本信息,有标准版本类别(categories)与复杂版本类别。
c. 构建用户“兴趣表”
“兴趣表”由用户下载的全部软件的潜在主题构成。用户评价这些软件(对这些软件打分)是5分制,2分及其以下为“否”(不喜欢),3分及其以上为“是”(喜欢)。
受欢迎程度按论文式(6)计算。
d. GTB训练
按上述步骤得到软件的潜在主题、用户的“兴趣表”,按论文式(7)计算软件的推荐分数。该推荐分数与用户实际评价分数作为特征量输入GTB,GTB输出该推荐系统的预测准确度。
GTB用于VSR与一般推荐系统CF、CBF以及混合系统CF+VSR、CBF+VSR、CF+CBF+VSR推荐效果的对比,以此知晓VSR的引入是否会提升一般推荐系统的推荐效果。
感悟
本论文最终从统计学上发现,VSR的决定性特征量是类别,VSR的混合推荐系统比最新协同过滤系统(a state-of-the-art collaborative filtering system)更好。遗憾的是,由于我见识不足,式4至式7是怎么创建的,并没有任何头绪,能够创造行之有效的式子,对此我十分佩服。
该系统推荐的软件有如下前提:
- 类别继承。软件更新后,会继承该软件上一个版本的类别。
- 完备准确的归类。软件经由正规商店发行,它的类别(genres)是准确无误的。
- 变得更好。“A version that was rated poorly in the past may receive more favorable ratings for later versions.”
既然有假设,那么拿掉这些假设,就会出现局限性:
该系统推荐的软件来自Apple Store与Google Play,并不适合中国国情(盗版软件与无良内容提供商横行),所以若想将该系统搬至国内,需要考虑更多问题,例如针对安卓用户,该选用哪个内容提供商,这个提供商提供的数据是否准确。再者,软件评分存在刷好评嫌疑,本文爬取的评价是否真实可靠。