tag推荐系统的关键问题以及解决方案

标签: tag 推荐系统 问题 | 发表时间:2012-06-27 05:26 | 作者:hxxiaopei
出处:http://blog.csdn.net
 
from: http://www.hxxiaopei.com/?p=141
最近在做推荐产品,读了一些论文,客观的说,扯淡的居多,基本的思路也差不多,结合工作的情况,谈一下tag推荐的产品形态、主要问题以及如何推荐

产品形态以及主要问题

tag 的推荐系统,顾名思义,利用用户或者item的 tag信息进行推荐,涉及到两个产品形态:

1.tag-based recommend,基于tag信息推荐item给用户

2.tag recommend,给用户推荐tag

无论1,还是2,都面临一个问题,tag从哪里来?这个是tag推荐系统最为关键的事情。通常来讲,有4个:

1.专家标注,貌似jnni是这样做的

2.UGC,由用户产生,douban等很多都是这样搞得

3.系统产生,利用用户/item数据

4.人工和系统相结合

解决了tag产生的问题,构建tag体系后,我们只需要抽取相关的feature,就可以完成item推荐或者tag推荐。

tag产生

工程上分析一下如何生成tag:

1.专家标注

目前大多数公司不现实,尤其是startup时,不可能有这么大的投入。

在垂直领域,这个问题可以简化,成熟的相关网站抓取,比如3C类,可以去京东,中关村在线等,结构化数据,效果不错。

覆盖率可能不够,但是作为startup公司或者要求不高时,应该够用,如果做深,是一个无底洞,taobao N多人N年搞产品库,投入很大。

所以有朋友希望兼职做做产品库挖掘,尤其说类似淘宝那种,直接拒绝。

2.UGC

tag的获取不是问题,产生的tag有很大的随意性,问题在于如何处理这些tag,主要问题:

1.书写不规范,最重要的问题,比如 美女,大美女,recomend system recomendation system, RS 等等,需要做归一化

2.同义关系

目前UGC 产生标签,是最主要的形式,不过产品前期比较多,稳定后用户更多的会采用推荐的tag

3.系统产生

用系统产生tag,基于user或者item信息,最简单的方式,将用户访问item的title取出来,处理后生成tag给用户,比如用户浏览”美女范冰冰“,可以将”美女“”范冰冰“作为该item的tag。

这种方式在系统初始化时,非常有效,无UGC数据,如果给用户提供tag,提高用户体验以及规范用户行为

目前的工作主要是针对用户的浏览的web,提供该web的tag信息,供用户选择。问题是web的title包含的信息太好,尤其是非文本类web页面。主要处理的方式,对title分词后

1.过滤掉停用词,比如数字,的,一个 等,极端一点过滤掉所有的单字,但是会将其中的名词滤掉

2.只考虑名词,动名词,地名,人名等实体词,这些词对title的信息描述比较好,类似 购买,采购等动词没有意义,这些信息可以在分词是获取到词性信息

3.计算每个token的idf值,对于title来讲,token的 tf值一般都是1,所以只需要idf,出现在title的次数越多,idf越小,生僻token的idf值偏大

目前没有办法很好的计算token的全局或者在title中的分数,只能用idf来描述,大多数情况下还行,但是不够准确。

将用户访问过过的所有item title获取到,提取出来的tag可以作为用户的profile 

4.人工和系统结合

这个依赖稍微多一些,1,通过专家或者其他方式获取一批种子数据,比如某些item的tag,然后通过item间的相似性或者其他方式将item关联起来,将tag扩散出去,同样可以生成item的tag列表,当然会有一个权重信息,将低权重滤掉即可。UR

产生种子后,搜索数据中在同query下,url的内容相似性也很大 ,可以获取query->clicked url list以及 clicked url->qurey list,目标是同时对query以及url产生tag,初始化 P(Tag_{q}) = \alpha * sum_{u:(q,u)}{w_{qu}}P(Tag_{u}=tag) ,其中 w_{qu} 表示通过改query点击url的次数除以通过query点击所有url的总次数。

同时 P(Tag_{u}) = \alpha * sum_{q:(q,u)}{w_{qu}}P(Tag_{q}=tag)w_{uq} 表示通过通过q访问u的次数除以通过所有qeury访问u的总次数,不停地迭代,最后将seed中的tag扩散出去,针对每个url/query,去概率最大的几个tag。

tag推荐

当有了tag数据后,就是利用tag完成那两个产品推荐,首先说明一下可能的feature

1.用户user 使用tag的次数 N_{u,t}

2.item被打上tag的次数 N_{i,t}

3,tag被多少个user使用过 N_{t}^{u}

4.tag被用在多少个item上面 N_{i}^{t}

5.p(tag|user)

6.p(item|tag)

7.p(tag|item)

8.p(user|tag)

利用这些数据以及常用的理论,进行推荐:

1.基于tag给用户推荐item

计算user对item的喜好程度,最直接的做法 sum_{t}{N_{u,t}N_{t,i}} 用户使用tag越多,tag用户item的越多,那么用户可能越喜欢。

很容易想到万能的tf-idf,如果这个tag被其他用户用过的越少,说明这个tag也能代表user的兴趣,同样如果item被使用的其他的tag越少,tag越能刻画item,转化为:

sum_{t}{N_{u,t}N_{t,i}}/(\alpha + N_{t}^{u})(\alpha + N_{i}^{t})

也可以利用 概率模型直接算,p(u,i) = sum_{t}p(t|u)p(i|t)

在实际使用时,无法两类,基于用户还是基于item,比如item-based,用户最近访问的item,选取item最可能的属于的tag,p(tag|item)分值较大的,然后将这个tag热门的内容推荐出来,p(item|tag)比较大的item,准确率可能比较低,但是复杂度低。

2.tag推荐

两个思路,推荐用户常用的tag以及item上常用的tag,也就是 N_{u,t} N_{i,t} 大的tag列表。

<推荐系统实践>做过对比试验,两个都提供,用户使用的概率最大,所以类似douban等都会将内容提供出来

一些思考:

tag是连接user 和item的手段,更清楚的表达的用户的意图,比较像topic model,在user-item中间引入一层具备 语义信息的概念。

作者:hxxiaopei 发表于2012-6-27 13:26:44 原文链接
阅读:0 评论:0 查看评论

相关 [tag 推荐系统 问题] 推荐:

tag推荐系统的关键问题以及解决方案

- - CSDN博客推荐文章
最近在做推荐产品,读了一些论文,客观的说,扯淡的居多,基本的思路也差不多,结合工作的情况,谈一下tag推荐的产品形态、主要问题以及如何推荐. tag 的推荐系统,顾名思义,利用用户或者item的 tag信息进行推荐,涉及到两个产品形态:. 1.tag-based recommend,基于tag信息推荐item给用户.

struts2的标签tag

- - CSDN博客编程语言推荐文章
二、 常用的Struts 2.0的标志(Tag)介绍. 在上一篇文章《 为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节. 如果,您看完《 为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我.

Cobra Tag + Android 手机帮你找东西

- 可可 - 谷安——谷奥Android专题站
钥匙或什么东西放到哪儿搞忘了. Cobra Tag 可以帮你找到. Cobra Tag 是一种钥匙挂饰,你可以将它挂到你的钥匙上或放到钱包中,而通过专用的(Android)智能手机应用,当挂饰在信号范围内时,就会发出蜂鸣声、震动等来提示你,当这些挂饰离开你一定的范围时手机应用也会提醒器(对防盗来说也有一定的功效).

QR码终结者:Social Snap Tag

- Brant - 36氪
有没有谁遇到过这样的情况:在一本杂志上看到了一双自己喜欢的鞋子,立刻就想买下来. Social Snap Tag可以解决这一问题. 我们先来看一下Social Snap Tag和QR码的对比. 事实上,两者的基本功能都是一样的——即帮助连接真实世界和虚拟世界,也就是说通过手机中装载的扫码应用来扫描获取二维码中包含的数字信息.

标签(Tag)是个好的设计吗?

- - 知乎每日精选
Tag的存在主要有两重作用,一个是keyword,一个是index. Keyword用来用极为简单的词语来说明内容的大意,index用来在搜索时进行匹配. Tag和category的不同在于,一种是逻辑严整的划分,一种是简单直接的划分. category可以通过增加维度来将目标精确化,Tag则往往只需要一个word就能找到精确度很高的目标.

rel=”category tag” 的使用与思考

- - 我爱水煮鱼
在网站优化中,对于a标签的优化可以增加rel属性,例如WordPress的分类链接标签是加上了  rel=”category tag”. rel 属性还有更多的应用,之前我在 WordPress 友情链接增加 external nofollow,这也是一种优化方法. 下面说说对于 rel=”category tag”的使用.

Min-Hash和推荐系统

- - xlvector - Recommender System
前几年看Google News Recommendation的那篇Paper,对里面提到的MinHash的算法基本没有注意,因为之前的习惯都是只注意论文的模型那块,至于怎么优化模型一般都只是扫一眼. 不过最近看了大量的Google Paper,发现Google在实现一个算法方面确实有很多独到之处. 其实,Min-Hash是LSH(Locality Sensitive Hash)的一种,我之前对LSH的了解仅仅限于知道它能把两个相似的东西Hash成两个汉明距离接近的2进制数.

推荐系统实战

- - 博客园_首页
推荐算法:基于特征的推荐算法. 推荐算法准确度度量公式:. 其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合. 集合相似度度量公式(N维向量的距离度量公式):. 其中,N(u)表示用户u有过正反馈的物品集合. 其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣.

推荐系统杂谈

- - 后端技术杂谈 | 飒然Hang
推荐系统是近些年非常火的技术,不管是电商类软件还是新闻类app,都号称有精准的推荐系统能给你推送你最感兴趣的内容. 现象级的资讯类app“今日头条”就得益于此成为了势头非常猛的一款产品. 本文就针对推荐系统讲述一些相关概念和实践经验. 首先需要明确的就是推荐系统的目标,一般来说不外乎以下几个:. 用户满意性:首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标.

个性化推荐系统综述

- Tony - 所有文章 - UCD大社区
上个月写过一篇产品推荐的文章,详情请见《我所了解的产品推荐》,内容很泛,多为工作心得. 本周读了几篇相关的论文,收获颇多,分享点干货. 以下内容摘自《个性化推荐系统的研究进展》,该文发表于2009年1月的《自然科学进展》专题评述,作者是刘建国、周涛、汪秉宏. 我略去了具体的算法和许多公式,重点看原理、思路和比较.