码迷,mamicode.com
首页 > 编程语言 > 详细

推荐系统算法解说

时间:2015-05-19 14:27:58      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

推荐实例扩展【转】

7.1、阅读推荐

先来看一段文字(摘自36kr):

”北京十分科技也非常看好阅读推荐类的应用,他们花了非常大的精力(一年60人团队),才在今天推出了iPhone 版“酷云阅读”。

为什么要投入这么多人去做这个阅读应用?CEO 李鹏告诉我,这个团队超过一半的人都在做后台相关的东西,包括语义分析、机器学习等算法。他们的目的是将互联网“语义化”以后,把人的兴趣明确,最后把每个人感兴趣的内容推荐给相关的人。在iPhone 上,酷云的大致做法和Zite iPad 版类似,用户的行为也是有“喜欢”、“不喜欢”,以及点击相应的媒体来源或者相关的标签来告诉酷云你希望以后看到更多这些内容。

这个目的是大部分阅读推荐应用都有的,但是酷云的做法似乎更加变态。他们除了每天要抓取来自互联网的超过10万篇文章之外,还对全国200个的电视台播出的视频内容进行了索引,以便用户也可以通过文字搜索出视频、以及对视频内容进行一样的推荐。大致做法是先把这些节目都录制下来,然后把声音转文字,最后建立摘要和索引。“

    一般的推荐系统应用的算法是有上文所述的什么协同过滤那般复杂呢?以下是援引自本人1月21日所发在微博上的文字:
    1、大多数推荐阅读应用一般会给文章根据内容打上标签:算法,iphone(点击相当于为此标签加分加权重),并邀请对文章作出评价:喜欢,或不喜欢。每一次点击都被推荐系统记录了下来,最终渐渐形成用户的标签tag云(与此同时,还可基于相同或相似的标签tag寻找相似用户,从而基于用户推荐),而后系统每检索一篇新的文章,提取出文章的关键字,匹配用户的标签取向,进行推送。
    2、目前手机上的新闻阅读做到了分类,如科技,教育,但一般不会采取如网页那般评分表态,所以也就无法记录用户的行为特征,也就不会有新的文章出来后后续的推荐阅读服务,于是造就了一批手机推荐阅读的问世,如 @酷云阅读 ,指阅等。
     3、但一般用户的习惯是看完一段新闻便完事了,择日要看则择日看。例如有几个用户愿意为了评价一篇文章而特地去注册一个帐号呢?如何尽量让用户付出额外代价去使用这类阅读器,改变用户习惯,个人认为,是关键。
    然后我还对上面的那句:先把这些视频节目都录制下来,然后把声音转文字有点疑问。我们已经知道如果是音乐的话像豆瓣FM可能是如下的做法:

 

  1. 你喜欢一些歌曲,而我也喜欢一些歌曲,如果你我喜欢的歌曲中有很多是重复类似的,则系统会把你我定义为好友,即相似用户,基于用户的协同过滤推荐:朋友喜欢,你也可能喜欢 ;
  2. 还有一个就是针对歌曲的推荐,你喜欢一首歌曲A,而另一首歌曲B与歌曲A类似(如都是有关爱情、感伤一类的),所以系统猜测你也可能喜欢B,而把B推荐给你。这就是基于项目(物品)的协同过滤推荐。

根据所听歌曲的重复类似判定为好友从而基于用户的协同过滤进行推荐,通过某些歌曲是差不多类似的来基于项目的协同过滤进行推荐,但问题出来了,重复的好说,同一首歌曲同一个歌手嘛,可那些相似音乐歌曲又如何定义判定呢?通过系统去分析歌曲的频谱?区别各个歌曲节奏的快慢,音频?此举虽然看起来有效,但实际实行起来不太现实。

    我觉得应该是为那些音乐打上标签tag(估计视频也是这么做的,便于日后查找索引。全视频的实录目前觉得还是不靠谱),如打上“爱情”“感伤”一类的tag,而后tag相同的则可判定为相似歌曲。但关键是怎么打?语音识别?
 
7.2、标签tag怎么打
    初期可以人肉,爬虫,买数据库,等流量上来了,可以考虑ugc。所谓ugc,用户产生内容。但是用户一般不太可能自己给音乐打标签,太繁琐了(如最近的新浪微博的每条微博内容下多了一个“加标签”的提示,但有多少用户愿去理它呢?),当然有的系统也会为你自动产生一些标签tag(当然,你也可以自行加上一些标签),如新浪博客:
技术分享
    如何做到的呢?我的想法是,
  1. 应该是系统在背后扫描你的文章一遍,然后提取一些关键词作为tag,供你选择。取哪些关键词呢?当然是取高频词。扫描整篇文章,统计每个单词出现的频率。
  2. 然后取其前TOP K,如上面截图中的“算法”在那篇文章中出现了4次,“博客”出现了3次,所以系统为你自动匹配这些标签。
  3. 至于采取何种数据结构或方法来统计这些关键词的频率呢。一般的应用hash+堆(十一、从头到尾彻底解析Hash表算法),或trie树(从Trie树谈到后缀树)均可。但当trie树面对的是汉字中文的时候,就比较麻烦了。所以hash+堆是比较理想的选择。
    同样,针对视频的话,应该也是类似的:1、通过系统或机器读取视频内容,把视频转换为文字,然后提取其中频率出现高的关键词(如何提取关键词呢,这就涉及到一个关键问题了:分词。本blog日后阐述),把提取出来的这些关键词作为此视频的标签tag;2、然后针对这些tag建立索引摘要(什么样的索引?倒排索引。至于什么是倒排索引,参考编程艺术第二十四章:第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践),最终方便于日后用户或系统的查找(此节系与编程艺术内的朋友讨论整理总结而出)。
    具体细节后续阐述。
 

8、参考文献

  1. 本人1月7日,1月21日的发表的微博(挂在本blog左侧边栏);
  2. 探索推荐引擎内部的秘密,作者:赵晨婷,马春娥;
  3. 集体智慧编程,TobySeganra著。
  4. 推荐系统之协同过滤概述
  5. http://www.cnblogs.com/leoo2sk/
  6. Mitchell, Tom M. Machine Learning. McGraw-Hill, 1997(机器学习领域的开山之作).
  7. http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91。
  8. http://www.36kr.com/p/75415.html
  9. 智能web算法,第三章推荐系统(实现了用户及项目的相似度的计算,值得一看)

推荐系统算法解说

标签:

原文地址:http://www.cnblogs.com/Lxiaojiang/p/4514452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!