请教推荐算法中关联规则算法的最小支持度和最小置信度如何确认

基于Apriori算法的邮政手机渠道的产品关联分析_企业管理论文_第一论文范文网
第一论文范文网免费提供企业管理论文范文,企业管理论文格式模板下载,并提供论文代写代发服务!
论文分类导航
基于Apriori算法的邮政手机渠道的产品关联分析
朱和胜3(1.广东省邮政信息技术局,广东
.上海民航职业技术学院,上海
200232;3.中山大学移动信息工程学院,广东
519000)  摘要:为了查找客户手机渠道的购买规律,做好邮政手机渠道的推荐。本文采用Apriori算法针对客户的手机订单进行处理,统计并且分析手机业务之间的关联性,生成手机渠道业务的强推荐规则。推荐算法的关键在于阀值的确定,本文将关联规则产生的购买行为对应的购买比例与客户的平均购买比例相比较,高于平均购买比例的规则定义为强规则,最终,本文得到12条强关联规则。  教育期刊网 关键词 :Apriori;产品关联;手机业务推荐  中图分类号:F626.12
  文献标志码:A
  文章编号:(6-01  电子渠道是当前电信行业、互联网企业、电商等必备的销售渠道,中国邮政为了方便客户,同时拓宽业务的推广渠道,目前已经开始将某些便民的邮务类的业务建立了电子渠道[1,2]。当前邮政通过手机渠道能够办理的业务包含:代收路桥费年票、电信充值、会员报刊、交通违章非现场缴费、境外报刊、图书销售、我要上封面、自由一族缴费八种业务。  如表1所示,根据客户的过往的交易记录,统计客户交易的种类,客户的交易主要集中于会员报刊、境外报刊、图书销售以及电信充值四种业务。按照客户的角度统计其采用的业务种类发现,99.17%的客户当前只采用了手机渠道1~2种业务。  一、数据预处理  按照客户维度统计每种业务客户办理的情况,为了寻找不同业务之间的购买的关联规则,将八种业务类型客户加办的情况分别用布尔型变量表示,有金额发生的业务标记为true,无金额发生的业务用false表示。  二、Apriori算法  Apriori算法是Agrawal和R.Srikant于1994年提出的,是布尔关联规则挖掘频繁项集的原创性算法。它是一种逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。该算法主要有两个步骤。  1.找出所有的频繁项集:该项集的每一个出现的频繁性与最小支持度。  2.由频繁项集产生强关联规则:满足最小支持度和最小置信度的规则。  算法在实施过程中的主要的问题在于,在最小支持度值设置的很低的时候,会产生大量满足最小支持度的项集。  算法流程:   设定k=1  扫描事务数据库一次,生成频繁的1-项集  如果存在两个或以上频繁k-项集,重复下面过程:  [候选产生] 由长度为k的频繁项集生成长度为k+1的候选项集  [候选前剪枝] 对每个候选项集,若其具有非频繁的长度为k的子集,则删除该候选项集  [支持度计算] 扫描事务数据库一次,统计每个余下的候选项集的支持度  [候选后剪枝] 删除非频繁的候选项集,仅保留频繁的(k+1)-项集  设定k = k+1   三、计算结果  采用Apriori算法求解后,得到以下强关联规则,置信度的设置的阀值是针对推荐产品的平均购买率。若关联规则推导出的产品购买率高于其平均购买率,则为强关联规则。最终,得到以下强关联规则:  1.充值→图书,置信度为31%,平均购买率为22%;  2.充值→违章,置信度为4%,平均购买率为0.14%;  3.违章→充值,置信度为48%,平均购买率为8%;  4.违章→图书,置信度为40%,平均购买率为22%;  5.违章→境外,置信度为8%,平均购买率为6%;  6.充值、报刊→图书,置信度为70%,平均购买率为22%;  7.报刊、违章→充值、图书,置信度为91%;  8.报刊、违章→充值,置信度为100%;  9.报刊、违章→图书,置信度为100%;  10.境外、充值→图书、报刊,置信度为77%;  11.境外、充值→图书,置信度为85%;  12.境外、充值→报刊,置信度为92%。  四、结语  本文重点针对手机渠道产品的关联推荐进行分析,采用Apriori算法计算出产品间的强规则,然后,本文采用可以针对每个顾客以往的业务办理情况,推断其最有可能办理的其他业务。教育期刊网 参考文献:[1] 赵川江.浅析移动互联网时代电子渠道的作用[J].电信科学,2011(S1).[2] 高克成.电信行业营销渠道用户适应性影响因素研究[D].黑龙江:哈尔滨工业大学,2011.(责任编辑:张娟)
浏览次数:  更新时间: 13:04:00
网友评论《基于Apriori算法的邮政手机渠道的产品关联分析》
本类论文总排行版
本类论文本月排行
本类论文本周排行&img src=&/14d55d3b8b5dbbb8aeff49_b.jpg& data-rawwidth=&551& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&551& data-original=&/14d55d3b8b5dbbb8aeff49_r.jpg&&————————————————收费转载————————————————&p&#作者:面包君&/p&&p&#专栏:数据分析侠&a href=&/dataman& class=&internal&&&span class=&invisible&&http://&/span&&span class=&visible&&/data&/span&&span class=&invisible&&man&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&因为目前主攻要解决内容排序的问题,所以对FB、微博等等的内容排序机制都比较关心,像FB的内容是比较少的,&a href=&/p/?refer=dataman& class=&internal&&数据挖掘系列篇(16):Facebook内容排序算法研究&/a&有介绍道一些,感兴趣的可以多找找FB的算法朋友多聊聊这块的东西。&/p&&p&在&a href=&/p/?refer=dataman& class=&internal&&数据挖掘系列篇(16):Facebook内容排序算法研究&/a&这里主要是分享了下内容排序的背景和一些简单的维度,而在国内的微博其实内容上也差别不是太大,而有些思想上还是可以参考下,仅供参考。&/p&&p&官方的微博介绍是:智能排序是根据用户的关注、标签和微博内容等相关信息,帮助用户梳理微博内容,对同类微博进行合并、对可能感兴趣的微博内容进行优先展示的排序的功能。通过智能排序,能够帮你第一时间找到感兴趣的微博、合并微博中的重复信息、掌握朋友们共同关心的事情。&/p&&p&&img src=&/c5ad507ddb2e31b204d0_b.jpg& data-rawwidth=&441& data-rawheight=&2000& class=&origin_image zh-lightbox-thumb& width=&441& data-original=&/c5ad507ddb2e31b204d0_r.jpg&&至于效果怎么样,我是没怎么发觉好的,可能也是因为本身微博的活跃度不够到底的,没几个是自己真实的好友。&b&为什么微信朋友圈还不赶紧上朋友圈的内容排序!!&/b&&a href=&/people/d1e085e496b20b8a64da5f4f11858b85& data-hash=&d1e085e496b20b8a64da5f4f11858b85& class=&member_mention& data-editable=&true& data-title=&@微信& data-hovercard=&p$b$d1e085e496b20b8a64da5f4f11858b85&&@微信&/a&&/p&&p&————————————————收费转载————————————————&br&&/p&&p&微博背景:共同话题!弱关系!媒体属性!&/p&&p&所以这个属性导致和&a href=&/p/?refer=dataman& class=&internal&&数据挖掘系列篇(16):Facebook内容排序算法研究&/a& Facebook的性质还不太一样,也导致在内容推荐上会有一些差别,当然微博在用户推荐、内容推荐上都做了一些思考,关于几点觉得还是不错的(虽然没觉得效果怎么样,关键产品不行)。&/p&&p&在用户推荐上:&/p&&p&1.具体衡量哪个指标:效果衡量指标是连接产品定位和算法优化方向的桥梁,而这也是产品设计中不断思考和摸索的方向。&b&初始时我们直观地认为,如果用户喜欢推荐结果就会产生较高的点击率,从而将CTR作为衡量指标,但随后这个思路就被否定。&/b&用户推荐的初衷是关系达成而不是即时愉悦用户,于是衡量指标被调整为RPM(Relation per Thousand Impression,即千次曝光的用户关系达成量)。在一段时间后我们开始反思一个问题:用户关系达成的意义是什么,用户关系量是否是越多越好呢?答案显然是否定的,受限于精力,&b&推荐必须帮助用户梳理关系网络结构,让用户可以简单地构建高价值的用户关系,&/b&从而让用户可以更好地消费内容以及更容易地进行社交互动,因此衡量指标衍生为关系达成后的互动率和用户行为量。&b&我的理解应该是用户互动社交的关系链变长了,比如我在微博上30天内只是和3个人有过评论、转发、私信、点赞等动作,通过推荐之后在微博上30天内达到10人。&/b&&/p&&p&2.产品设计上,推&b&荐是用户预期之外的非自然流量,应该顺应用户的行为,以自然流畅的方式展现给用户&/b&。因此,推荐必须从最有效的&b&主动场景入手&/b&,比如微博找人页用户带有明显关注新用户的意图,而这里展示用户推荐正好满足需求;而Feed流的浏览目的是内容消费,推荐新用户会打断内容消费的流畅性,效果很差。所以大家也不难看到在微博找人上能看到你关注的人,相关性之类的排序。我倒是觉得像在用户推荐、你可能认识的人上也可以尝试看看推荐怎么样。毕竟这个很多人开了微博我也不知道。当然不要把人家的小三推荐给老婆这样的悲剧故事。&/p&&p&————————————————收费转载————————————————&br&&/p&&p&内容排序:&/p&&p&而重点就是内容排序上了,看了下大部分也是借鉴的FB的算法思路,而用的算法也是传统的LR来学习的。主要场景是&b&“错过的微博、赞过的微博、正文页相关推荐、热点话题”&/b&等具有代表性的内容推荐产品。&/p&&p&有个结论可以供参考下:&b&用户错过的90+%信息中,只有部分内容是对用户具有极高价值且不容错过的,所以这里无需对未读Feed全排序,只需要将最高价值的信息找出来并推荐给用户,其它的Feed仍按正常时间序排列。&/b&这样做一方面可以让Feed流整体上符合Timeline的排序,用户感觉自然流畅;另一方面,与用户对最高价值的信息认知上比较接近,算法效果比较理想。产品推出后,用户认可度很高,互动率远远高于普通Feed。&/p&&p&应该来说我们如果在做内容排序上,对于用户的未读feed也会有相应的降权,借鉴FB的思想把亲密度这东西考虑的比较重要,时间和相应的一些简单活跃权重可以放低。&/p&&p&&img src=&/b550a9a51cb00e551188_b.png& data-rawwidth=&678& data-rawheight=&528& class=&origin_image zh-lightbox-thumb& width=&678& data-original=&/b550a9a51cb00e551188_r.png&&感觉微博上的数据特征还是比较少,能挖掘的东西应该也不是特别多。所以这个推荐的效果就不清楚是什么样了。看了下广告推荐的说是RPM那个关系达成是有30%(蓝、橙V)。&/p&&p&————————————————收费转载————————————————&br&&/p&&p&系统框架上就不过多的BB了,离线和实时的推荐平台的那套东西。&/p&&p&如果觉得有价值,请大家支持!打赏点赞(据说可以加芝麻分哟:D)!另外数据分析联盟微信群也发展的很快,下面建个5群。&/p&&img src=&/c1466acfdf19_b.png& data-rawwidth=&472& data-rawheight=&535& class=&origin_image zh-lightbox-thumb& width=&472& data-original=&/c1466acfdf19_r.png&&&img src=&/59b70252f2efd944d02f08c3d8b41ea8_b.png& data-rawwidth=&368& data-rawheight=&308& class=&content_image& width=&368&&
————————————————收费转载————————————————#作者:面包君#专栏:数据分析侠因为目前主攻要解决内容排序的问题,所以对FB、微博等等的内容排序机制都比较关心,像FB的内容是比较少的,
&img src=&/3f9a9dc97a0d1a894acbada5b41897ae_b.jpg& data-rawwidth=&960& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/3f9a9dc97a0d1a894acbada5b41897ae_r.jpg&&—————————————禁止转载—————————————————————&p&花了几天看了些做社交的好友推荐,现在很多App都有社交场景,本身就是做用户的场景,所以以后肯定要在这块有一些应用。像早期的论坛类的更偏重资讯类的信息,后来像优酷土豆这又是做视频类,网易云音乐做音乐类。豆瓣相对来说还比较全一些,有包含资讯、音乐电台等这些。也用了一些其他做社交场景的App,包括像脉脉、钉钉这些。感觉不是太好,具体原因就是都不是什么认识的人,活跃度也不高。很多App基本上就是属于少数意见领袖,这些人有大量的粉丝。而还有一帮大量用户,他们粉丝不多活跃也不高。本质上来说,还是没有找到他们感兴趣的内容。就跟昨天一样,突然腾讯视频给我推了下2007出的《远古入侵》,这推的太给力了!一部科幻、时空穿越、冒险题材的英剧就应该推给我这样tag的用户。&/p&&p&我们平时光计算用户的关系亲密度,比如两者的SNS互动次数、媒介场景关系度、地理位置相关度,这些缺陷都很依赖用户之间的活跃程度。后来又有人提出了好友的好友、圈子、共同兴趣、共同话题等方面角度进行研究。实际场景中我们也是会结合 “社交”+“兴趣”两点平衡,找到一个比较融合的权衡,推荐用户感兴趣的content。&/p&&br&&b&计算共同好友比例&/b&&p&一般最简单推荐好友就是计算两者有哪些共同好友,如果共同好友很多自然就认识的概率很大。比如我和Jackie是同学,但是我们可能都因为用Facebook时间不长,可能都没相互添加,那就可以计算我和Jackie之间发现同学的占比是多少。包括像同事、家人、朋友等等都差不多。在社交网络中, 可以根据现有的社交网络图给用户推荐新的好友, 比如给用户推荐好友的好友。基于好友的好友推荐算法可以用来为用户推荐在现实社会中相互熟悉而在当前社交网络中没有联系的其他用户。例如使用人人网时, 经常看到一些久未联系的老同学出现在推荐好友列表中。&/p&&p&优点是简洁、易实现, 效果明显。但是其缺点也是显而易见的, &b&如果用户好友人数不够多, 那么无论是为其推荐其他好友或者将其推荐给其他人都会变得很难&/b&。其次是该算法只是关注“ 人” 的因素而忽略了其他因素, 可能影响所推荐好友的准确性。&/p&&p&最简单的好友推荐算法是为用户推荐共同好友数最多的用户。其基本思想是, 用户之间的共同好友越多, 则他们越可能是好友。由于这种方法受用户好友总数影响较大, 因此通常根据共同好友比例计算相似度来推荐好友。&/p&&p&在Twitter和新浪微博等有向社交网络中, 用户u关注的人out(u)和关注用户u的人in(u)是两个不同的集合, 因此使用共同好友比例计算相似度有三种不同形式, 本文采用出度的方法, 用户u和用户v的共同好友比例fuv表示为:&/p&&br&&img src=&/fcfb7d9f1f921_b.png& data-rawwidth=&138& data-rawheight=&42& width=&138& class=&content_image&&&p&其中, out(u)表示用户u关注的用户集合, out(v)表示用户v关注的用户集合。out(u)∩ out(v)表示两个集合的交集。|out(u)|和|out(v)|分别表示集合out(u)和out(v)的元素个数。&/p&&br&&b&互动次数&/b&&p&不管人们有多少共同好友, 都无法确定是否会一直与其保持联系。社交网站倾向于促使用户尽可能多地与别人产生互动, 这样他们就能看到并从中提取信息。如果两个人之间没有互动, 很难称得上朋友。&/p&&p&社交网络中用户之间的互动包括消息、评论、转发和收藏等形式, 转发和评论等行为在一定程度上代表着信息对于用户的吸引力, 评论与转发等通常有不同的权重, 为了简化计算, 这里对消息、评论和转发取相同权重。&/p&&p&用户u与用户v之间的互动情况iuv可以用两者之间互动次数占用户u和用户v全部互动行为的比例来表示, 本文提出的互动比例计算方法如下:&/p&&br&&img src=&/b73dd04aeca_b.png& data-rawwidth=&206& data-rawheight=&43& width=&206& class=&content_image&&&p&其中, interact(u, v)表示用户u对用户v的互动次数, interact(u)表示用户u对所有用户的总互动次数。两用户之间互动次数用单向互动次数的平均值表示。&/p&&p&&b&社交兴趣度&br&&/b&&/p&&br&&p&本文对根据社交图谱计算用户相似度的传统方法进行改进, 从共同好友和互动情况两方面来表现用户之间的关系亲密程度, 从而计算出目标用户对待推荐用户的社交兴趣度, 以此描述目标用户和待推荐用户成为好友的可能性。&/p&&p&建立n个用户之间的关系矩阵A, A是一个n× n矩阵, 其中, 如果用户u和v是好友关系(或用户u关注了用户v), 则auv=1, 否则auv=0。矩阵A中第u行ua= (au1, au2, , aun)反映了用户u的好友关系。&/p&&img src=&/c212cd1dac_b.png& data-rawwidth=&1326& data-rawheight=&484& width=&1326& data-original=&/c212cd1dac_r.png& class=&origin_image zh-lightbox-thumb&&&p&。其中, fuv表示用户之间的共同好友比例, iuv表示用户之间的互动情况比例。α 是综合共同好友比例和互动比例的参数, 其取值范围为[0, 1], 不同数据集中α 可能有不同的最佳值, 可根据经验取值或者在特定数据集上逐步调整和比较以获得最佳值。本文中取α =0.5。矩阵C中元素cuv反映了用户u与用户v关系的亲密程度。&/p&&img src=&/074c2ef5a96d9a313e87a7fa09d1eab3_b.png& data-rawwidth=&982& data-rawheight=&282& width=&982& data-original=&/074c2ef5a96d9a313e87a7fa09d1eab3_r.png& class=&origin_image zh-lightbox-thumb&&&p&最近邻协同过滤技术中, 由于最近邻居与目标用户对项目的评分非常相似, 因此目标用户对未评分项目的评分可以通过最近邻居对该项目评分的加权平均值近似表示。类似地, 在好友推荐中, 可以把待推荐用户看作待评分项目, 把好友作为邻居, 把用户u与用户v的关系亲密程度看作用户u对用户v的评分或者邻居用户v的权重。&/p&&img src=&/2ac954d07dfeeaccf3df8_b.png& data-rawwidth=&1328& data-rawheight=&982& width=&1328& data-original=&/2ac954d07dfeeaccf3df8_r.png& class=&origin_image zh-lightbox-thumb&&&img src=&/dfff9decd0f7_b.png& data-rawwidth=&1324& data-rawheight=&684& width=&1324& data-original=&/dfff9decd0f7_r.png& class=&origin_image zh-lightbox-thumb&&&b&兴趣相似度&/b&&p&社交网络中用户留下的文字和行为可以反映用户兴趣和需求。通常用户可使用自然语言或者标签主动展示其喜好。这种方法可以获得一些关于用户兴趣爱好的信息, 但是其缺点也比较明显, 自然语言理解技术不能很好地理解用户的描述, 而且用户兴趣是动态变化的, 兴趣描述很容易过时, 况且很多时候用户并不知道或者很难用语言描述喜欢什么。因此, 需要通过算法自动发掘用户历史行为数据, 以推测用户兴趣, 从而推荐满足兴趣的项目。&/p&&p&计算用户之间的兴趣相似度, 主要思想是: 如果用户喜欢相同物品, 则说明具有相似的兴趣。微博内容可以看作物品, 如果两个用户曾经评论、转发或者收藏过同样的微博, 则说明他们具有相似的兴趣。此外, 也可以根据用户在社交网络中的发言提取用户的兴趣标签(关键词), 计算用户的兴趣相似度。基于标签的推荐中, 很多时候用户主动标记使用的标签很少, 这可能是由于用户没有使用标签的习惯或者用户新近加入或者用户活跃度较低。因此, 通常从用户的内容数据中抽取关键词作为标签或者是根据标签之间的相似度做一些关键词扩展。&/p&&p&本文运用现有知识计算兴趣相似度。用关键词向量描述兴趣, 用TF-IDF公式计算关键词权重, 用关键词向量之间的余弦相似度表示兴趣相似度。&/p&&p&一般来说, 用户兴趣可以通过向量空间模型表示为一个关键词向量。从微博内容中提取关键词的过程需要引入一些自然语言处理技术。关键词向量生成过程包括中文文本分词、命名实体(如人名、地名、组织名等)检测、关键词排名和关键词权重计算等。用户u兴趣特征向量可以表示为&img src=&/d5bcf2b822a77e138a56_b.png& data-rawwidth=&1340& data-rawheight=&1052& width=&1340& data-original=&/d5bcf2b822a77e138a56_r.png& class=&origin_image zh-lightbox-thumb&&&/p&&br&&p&,N为用户总数, ni为包含ei的用户数目。&/p&&p&向量空间模型的优点是简单, 缺点是丢失了一些信息, 比如关键词之间的关系信息。但是, 在绝大多数应用中, 向量空间模型对于文本的分类、聚类、相似度计算已经可以给出令人满意的结果。&/p&&p&用户之间的兴趣相似度可以通过兴趣特征向量之间的余弦相似度计算如下:&/p&&img src=&/aaa1ccb2a54aa791afc5ee_b.png& data-rawwidth=&1224& data-rawheight=&180& width=&1224& data-original=&/aaa1ccb2a54aa791afc5ee_r.png& class=&origin_image zh-lightbox-thumb&&&p&余弦值与相似度成正比, 余弦值越小表示相似度越低, 余弦值越大表示相似度越高, 其取值范围为[0, 1], 0表示完全不同, 1表示完全相同。&/p&&br&&b&综合社交和兴趣的好友推荐&/b&&p&不同的社交网络中人们的目的和侧重点往往是存在差异的, 因此, 人们通常在不同的社交网站建立不同的关系网络。例如人人网中的好友通常以同学校友或者熟人为主, 而豆瓣网中的好友却大多因相似兴趣而聚集。因此本文先计算交际兴趣度和兴趣相似度, 然后将二者综合评分, 最终推荐得分最高的Top-k位用户。由于只需要计算存在好友关系的用户之间的共同好友比例和互动比例, 因此可以有效提高效率。&/p&&p&社交图谱是静态的, 没有时间变化概念, 认识10年的朋友和昨天才发生交集的朋友在社交关系图上没有明显差别; 而兴趣图谱是动态的, 其变化通常会反映在历史行为中。社交图谱反映了用户的交友倾向, 而兴趣图谱反映了用户的兴趣偏好, 将两者综合考虑很可能获得比单纯考虑社交关系或者兴趣爱好更好的推荐结果。为了便于控制以上两个因素对最终结果的影响, 可将社交兴趣度和兴趣相似度分别按最大值归一化。综合社交关系和兴趣偏好的最终评分可表示如下:&/p&&img src=&/61b113d783ee261cd1d094cb8bbda181_b.png& data-rawwidth=&758& data-rawheight=&134& width=&758& data-original=&/61b113d783ee261cd1d094cb8bbda181_r.png& class=&origin_image zh-lightbox-thumb&&&p&其中, β 是改进的好友推荐算法的可调参数, 表示最终评分中社交因素的权重, β 取值范围为[0, 1], 本文实验中β 取0.5。s(u, v)为社交兴趣度。w(u, v)为兴趣相似度。&/p&&p&本文好友推荐算法执行过程如图1所示:&/p&&br&&img src=&/b8fcd59fafb_b.png& data-rawwidth=&636& data-rawheight=&666& width=&636& data-original=&/b8fcd59fafb_r.png& class=&origin_image zh-lightbox-thumb&&&b&图1&/b& 基于社交和兴趣的好友推荐方法&b&实验与分析&/b&&p&从 2012 KDD 竞赛所提供的腾讯微博数据中提取部分作为实验数据, 对本文提出的算法进行实验分析。所采集数据包括用户社交网络(关注关系)、用户社交行为(通知、转发和评论行为)以及用户关键词(关键词及其权重)。&/p&&p&从用户社交网络中随机选取5个较活跃用户作为种子, 采用宽度优先策略收集用户好友关系, 过滤掉好友数目少于5个和大于150的用户, 最终得到3 237个用户, 以此模拟一个小型的社交网络。随后的实验中只考虑这些用户之间的好友关系。平均每个用户关注13.4个人, 为非常稀疏的好友网络, 网络稀疏度99.6%, 表现出明显的数据长尾性。根据以上获得用户列表, 分别从用户社交行为和用户关键词中提取出相关用户的社交行为和关键词。实验数据处理步骤如&a href=&/?target=http%3A///article/13-31-1-59.html%23outline_anchor_13& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&图1&i class=&icon-external&&&/i&&/a&所示。根据关系网络计算共同好友比例, 根据行为信息计算交互比例, 综合共同好友比例和交互比例获得社交兴趣度。然后根据用户关键词建立兴趣向量, 从而计算兴趣相似度。最后综合社交和兴趣两方面因素获得最终评分, 将评分最高的k位用户推荐给目标用户。&/p&&p&Top-k推荐中常用的评价指标有准确率(Precision)、召回率(Recall)以及综合准确率和召回率的F1-measure。其定义如下:&img src=&/a4c6a4893f9f_b.png& data-rawwidth=&1306& data-rawheight=&440& width=&1306& data-original=&/a4c6a4893f9f_r.png& class=&origin_image zh-lightbox-thumb&&&/p&&p&实验比较了基于共同好友比例、基于兴趣相似度、基于共同好友比例和兴趣相似度以及基于社交和兴趣相似度4种好友推荐算法的性能。&/p&&br&&br&&br&&p&————未完待续&/p&&p&&/p&
—————————————禁止转载—————————————————————花了几天看了些做社交的好友推荐,现在很多App都有社交场景,本身就是做用户的场景,所以以后肯定要在这块有一些应用。像早期的论坛类的更偏重资讯类的信息,后来像优酷土豆…
对于推荐方面的接触,我也仅限于一些简单、常见的推荐逻辑,因此我自己片面的得出一个结论“&b&推荐算法都是朴素的&/b&”。&br&&br&最经典的、也是被举烂的栗子,就是沃尔玛的“啤酒和尿布”的故事。支持度就是所有非单商品交易中,啤酒(b)和尿布(d)同时出现的概率;置信度就是所有出现b的交易中又出现了d的概率(有些很严格的领域,通常会限制“如果d和b同时出现,那么能只包含这两个”,这是强关联)。&br&置信度是单向的,简单的说,“大部分购买尿布的人,同时会购买啤酒”的结论和“大部分购买啤酒的人同时会买几块尿布”的结论是不同的,而且根据结论来分析合理性,也会觉得前一个结论更加合理。&br&&br&下面根据个人的经验以及理解,说说支持度和置信度的分析和选择(仅供参考,不负责^_^)。&br&&br&&b&一、支持度&/b&&br&支持度就是所有我们分析的交易中,某两种(若干种)商品同时(这里的同时,一般意味着同单或者一次独立的交易)被购买的概率(比率)。我们选择支持度的最终目的就是找出同时被购买的两个商品,可以提高我们的推荐转换率,从而增加收入。那么可以选出支持度最高的前n对(以下分析仅考虑两种商品,简称“对”)商品,我通常是选择总对数的万分之一或者是前20个。这样的数量不会很多,可以比较快的进行下一步分析,而且做推荐,要记住一点,“不能急功近利”。&br&&br&根据万分之一或者前20,可以得到一个支持度,其实这个时候的支持度阀值,对本次分析已经意义不大了,主要是用于后续推荐系统的智能学习提供一个参考值。&br&&br&&b&二、置信度&/b&&br&置信度就是根据某一个条件,得到一个结论的可信程度、可靠程度。例子中,“购买了尿布”这个条件,可以推出“同时也会购买啤酒”这个结论的可靠程度很高,百度百科&a href=&///?target=http%3A///link%3Furl%3DCIrLyTuizVAhpueAo-yf-uU9Emc55dlNSZOgmSkl_a1hhABeWlChHdE6cDl2hhHLlN1K4NpSMTcfX0dgurkhPK& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&关联规则_百度百科&i class=&icon-external&&&/i&&/a& 中分析的数据表明沃尔玛尿布到啤酒的置信度高达70%。&br&&br&在分析支持度得到的前20对商品中,分别计算双向置信度(购买a同时购买b和购买b同时购买a的置信度都要算),然后筛选中前n个置信度较高的置信度,分析其对应的结论。通过有经验的业务人员,从中共同选出最合理的一对商品,来进行单向的购物车推荐。这时得到的一个置信度,可以作为今后机器学习的参考值。&br&&br&个人觉得机器学习要做到全自动,几乎不可能,特别是对于我这种初学者,现在还接触不到。因此个人比较偏向半自动和人工分析辅助来完成一些功能。&br&&br&关于推荐的学习的资料,我其实真正买的书就一本《web智能算法》&a href=&///?target=http%3A///link%3Furl%3D4jX5Kn30fc00i41E3OgKozs6_45Py1wo6XQSAAVFPgIjWb6z49EMUl9SqJ6W4mS7SaueMBLM06BWVNwWgzfyAK& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&智能Web算法_百度百科&i class=&icon-external&&&/i&&/a&。其余的信息都是自己在网上搜出来的,碰到一些难点、概念就去网上查查资料,顺带看看相关的博客。&br&&br&以上分析仅供参考。
对于推荐方面的接触,我也仅限于一些简单、常见的推荐逻辑,因此我自己片面的得出一个结论“推荐算法都是朴素的”。 最经典的、也是被举烂的栗子,就是沃尔玛的“啤酒和尿布”的故事。支持度就是所有非单商品交易中,啤酒(b)和尿布(d)同时出现的概率;…
当你买了一个杯子,你下一个想要购买的东西是什么?恐怕你自己都难以回答吧。&br&&br&所有的推荐,其实都是基于历史,预测未来。这就意味这推荐系统必须通过压榨历史数据,来得到你未来可能的行为。&br&&br&再回到命题,你买了一个杯子,下一个该买的是什么?直觉上,可能是茶包,杯垫,杯套。但是这些答案别说你,程序员自己都觉得蠢。(基于内容的推荐) &br&&br&换一种方式,也许别的买杯子的人下一个买的东西就是你要买的呢?比如隔壁老王买了杯子之后,买了杜蕾斯。楼上老李买完杯子买了吸尘器…好吧,还是觉得蠢。(协同过滤算法)&br&&br&你肯定发现,基于直觉的算法基本靠不住。计算机的phd们又发明各种几乎与直觉无关的推荐模型,不就是通过历史预测未来嘛,为什么要跟直觉有关,我只要输入数据,产生推荐结果就好了。(基于模型的推荐算法)&br&&br&既然有这么多花哨的算法,实际运用一下,每次推荐中包含了我真正感兴趣的商品的概率有多大?&br&&br&假设这个概率是20%,那么会有80%的人认为这个推荐是一坨屎,瞎胡闹。(题主) &br&&br&剩下的20%的人呢?在下一次推荐中,属于80%,于是认为推荐系统是一坨屎,工程师简直都是渣渣。&br&&br&所以推荐从来都是糟糕的。&br&&br&&br&只有上面的80%和20%数据换一下,恐怕才能让大部分人满意,可别说机器,人自己对自己行为的预测又能多准确呢?换个角度,如果真的行为都能预测了,岂不是一件很悲哀的事情。&br&&br&再换个角度,现有的无论是亚马逊还是淘宝,推荐算法的最终目的都是提升整体转化率。也就是说,在常人看来非常愚蠢的算法,碰到那万中无一的看到真正购买的人,能够提升转化率那么一丁点,算法工程师的工资就已经被赚回来了。
当你买了一个杯子,你下一个想要购买的东西是什么?恐怕你自己都难以回答吧。 所有的推荐,其实都是基于历史,预测未来。这就意味这推荐系统必须通过压榨历史数据,来得到你未来可能的行为。 再回到命题,你买了一个杯子,下一个该买的是什么?直觉上,可能…
注:以下内容非原创,为本人2年前整理自网上多种来源,但来源当时未标记,&br&时过境迁,也许推荐引擎不再是当初的模样。&br&——————我-是-分-隔-线,我是辛勤的搬运工,我是变态的整理侠——————————&br&&br&&p&
与购物网站内部的搜索对应,购物网站一般还会有推荐引擎。因为在很多情况下,&strong&用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果&/strong&。最早将推荐引擎投入大规模使用的是亚马逊,它采用了一种关联推荐机制:当用户购买了一本书之后,页面上会出现这样一个框:你可能对这几本书也有兴趣。
根据推荐引擎是否为不同的用户推荐不同的数据可分为基于大众行为的推荐引擎(千人一面)和个性化推荐引擎(类似千人千面),题主说的应该主要是&strong&个性化的推荐引擎&/strong&。&/p&&p&
a1. 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。&/p&&p&
a2.个性化推荐引擎,对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。&/p&&p&&strong&一、推荐引擎的工作原理&/strong&&/p&&br&&img src=&/ddb9fa38e6fe2_b.jpg& data-rawwidth=&500& data-rawheight=&344& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/ddb9fa38e6fe2_r.jpg&&&p& 一般情况下,推荐引擎所需要的数据源包括:&/p&&ul&&li&&p&要推荐&strong&物品或内容的元数据&/strong&,例如关键字,基因描述等;&/p&&/li&&li&&p&系统&strong&用户的基本信息&/strong&,例如性别,年龄等&/p&&/li&&li&&p&&strong&用户对物品或者信息的偏好&/strong&,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。&/p&&/li&&/ul&——其实这些用户的偏好信息可以分为两类:&br&&strong&显式的用户反馈&/strong&:这类是用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论(UGC内容);&br&&strong&隐式的用户反馈&/strong&:这类是用户在使用网站是产生的数据,隐式的反应了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息等等(行为内容)。&br&&p&
显式的用户反馈能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价,而隐式的用户行为,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,例如在电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。&/p&&p&&strong&二、&/strong&&strong&个性化推荐引擎的分类&/strong&&/p&&p&
主要根据不同的数据源发现数据相关性的方法可以分为以下几种:&/p&&p&1. 基&strong&于人口统计学的推荐&/strong&(Demographic-based Recommendation)&/p&&p&
根据系统用户的基本信息发现用户的相关程度区分【&strong&基于人的背景上的相似度】&/strong&&/p&&p&
好处是&strong&适合新用户、不依赖物品本身数据&/strong&,&/p&&p&
缺点是粗糙且涉及一些敏感个人信息。&/p&&p&&img src=&/8f278c308e2c4b15de2dfa8bceea6b2b_b.jpg& data-rawwidth=&436& data-rawheight=&257& class=&origin_image zh-lightbox-thumb& width=&436& data-original=&/8f278c308e2c4b15de2dfa8bceea6b2b_r.jpg&&&em&如:甲乙都是大学生,甲爱金庸的武侠,那么把金庸的武侠也推荐给乙&/em&&br&&/p&&br&&p&2. &strong&基于内容的推荐&/strong&(Content-based Recommendation)&/p&&p&
根据推荐物品或内容的元数据,发现物品或者内容的相关性,【有点&strong&爱屋及乌&/strong&的意思】&/p&&p&
这是在推荐引擎出现之初应用最为广泛的推荐机制,核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。&/p&&p&【根据物品的相关性和用户的喜好记录推荐相似物品】&/p&&img src=&/2a89aba51b_b.jpg& data-rawwidth=&449& data-rawheight=&268& class=&origin_image zh-lightbox-thumb& width=&449& data-original=&/2a89aba51b_r.jpg&&&p&&em&即如甲喜欢金庸的武侠,而古龙的书和金庸的武侠像,那么把古龙的书也推荐给甲&/em&。&/p&&p&
这种基于内容的推荐机制的好处在于它能很好的建模用户的口味,能提供更加精确的推荐。也很适用于新产品。&/p&&p&
但它也存在以下几个问题:&/p&&p& ·需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度(关键词和标签Tag被认为是描述物品元数据的一种简单有效的方法)——&strong&需设定物品的关键词和标签化&/strong&&/p&&p&·分析仅&strong&仅依赖于物品本身的特征,没有考虑人对物品的态度&/strong&;&/p&&p&·因为需要基于用户以往的喜好历史做出推荐,所以对于&strong&新用户有“冷启动”&/strong&的问题,&/p&&p&
虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐,图书的社交站点,有些站点还请专业的人员对物品进行基因编码。&/p&&p&&strong&3.基于协同过滤的推荐&/strong&(Collaborative Filtering-based Recommendation)【有点&strong&志趣相投&/strong&的意思】&/p&&p&
根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐,这种被称为基于协同过滤的推荐。&/p&&p&
可以分为三个子类:基于用户的推荐、基于商品的推荐和基于模型的推荐。&/p&&p&&strong&3.1基于用户的协同过滤推荐(User-based Recommendation)&/strong&&/p&&p&
基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- 邻居”的算法;然后,基于这K 个邻居的历史偏好信息,为当前用户进行推荐。【&strong&基于个体偏好而非背景上的人的相似度】&/strong&&/p&&br&&img src=&/b5ea48f3c983d_b.jpg& data-rawwidth=&414& data-rawheight=&306& class=&content_image& width=&414&&&br&&p&&em&甲乙爱好相似(“邻居”),且甲喜欢AB,乙喜欢ABC,那么把C推荐给A(C可能和AB毫无关系)。&/em&&/p&&p&&u&——与基于人口统计学的推荐的区别:基于人口统计学的机制只考虑用户本身的特征,&/u&&u&而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,&strong&喜欢类似物品的用户可能有相同或者相似的口味和偏好。&/strong&&/u&&/p&&p&&strong&3.2基于商品的协同过滤推荐(Item-based Recommendation,又称基于项目的)&/strong&&/p&&p&
基于商品的协同过滤推荐的基本原理也是类似的,只是说它&strong&使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户&/strong&。【基于全体偏好发现物的相似度,再根据个体偏好推荐】&/p&&p&&u&——与基于内容的推荐的区别:基于内容的推荐仅根据物的相似度,不考虑个体偏好。&/u&&/p&&img src=&/e6bfbe9f95a3e1f9b3a92ba_b.jpg& data-rawwidth=&384& data-rawheight=&291& class=&content_image& width=&384&&&p&&em&即如:发现金庸和古龙的武侠比较相似,甲喜欢金庸和古龙的武侠,而乙喜欢金庸的武侠,那么把古龙的武侠也推荐给乙(甲乙可能毫无关系)&/em&&/p&&p& ——与机遇用户的协同过滤推荐的对比:其实基于商品的协同过滤推荐机制是Amazon 在基于用户的机制上改良的一种策略&b&,因为在大部分的Web 站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于商品的机制比基于用户的实时性更好一些。&/b&但如在一些新闻推荐系统则相反。&/p&&p&&strong&3.3基于模型的协同过滤推荐(Model-based Recommendation)&/strong&&/p&&p&&strong&基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。【降维建模,有点高大上的AI向】&/strong&&/p&&p&
基于用户和基于商品的协同过滤推荐有一个大问题:它们太死了,就是说,它们能发现都喜欢同一样东西的人,但却忽略了爱好非常相似的潜在用户组合。比如说你喜欢莫奈的睡莲。那么,在这个法国印象派大师画的 250 幅睡莲中,你最喜欢哪一幅?在一群喜欢莫奈的人当中,完全可能每个人喜欢的睡莲都不相同,而基本的算法就有可能识别不出这些人都有着共同的爱好。【基于属性的表象而非内涵?】&/p&&p&
此时需要降维(Dimensionality Reduction)的方法。我们来看看你爱吃的东西,以及如何把它跟其他一百万人爱吃的东西做比较。你可以把这些信息用一个巨型矩阵表示出来,每一条竖线代表一样食物,每个人爱吃什么东西就自然形成了一行。在你的这一行上面或许会显示你给了烤牛排 5 颗星、红烧小排 4 星半、烤鸡翅 2 颗星、冻豆腐卷 1 颗星、奶酪烤蘑菇 5 颗星、盐水毛豆 4 颗星,等等。&/p&&p&
然而,使用这个矩阵的推荐算法并不关心你给哪种食物评了多少颗星。它想要了解的是你一般而言的喜好,这样它可以将这个信息应用到更丰富多样的食物上。比如说,基于你上面给出的信息,算法可能会认为你喜欢牛肉、咸的东西和烤制菜品,不喜欢鸡肉和任何油炸的东西,不喜欢也不讨厌蔬菜,依此类推【降维找到本质!】。你爱吃的食物所拥有的特点或者说维度,它的数量和符合你要求的食物的数量比起来要小得多——至多可能 50 或 100。通过查对这些维度,推荐算法可以迅速决定你是否会喜欢一种新的食物(比方说盐焗排骨),方法就是把这种食物的各项维度(咸的、牛肉做的、不是鸡肉、不是炒的、不是蔬菜、不是烤的)同你的资料进行比对。这种更为一般性的呈现使得推荐算法能准确的发现有着相似但不同喜好的用户。而且,它大幅压缩了矩阵的规模,使算法变得更加高效。&/p&&p&
不过,你爱吃的食物的维度该上哪儿去找呢?肯定不是去问厨师。推荐系统会使用一种称为奇异值分解的数学方法来计算维度,这&b&种方法涉及到创建两个保存原始数据的巨型矩阵,这也是这种方法的主要缺点&/b&。创建矩阵所需要的时间会随着客户和产品数量的增多而飞速增长——创建一个拥有 2.5 亿名客户和 1000 万种产品的矩阵,需要花上创建一个 25 万名客户和 1 万种产品的矩阵 10 亿倍那么多的时间。而且这一过程还需要经常重复。一旦收到新的评分,矩阵就已经过时;在像亚马逊这样的公司,每一秒钟都会收到新的评论。幸运的是,就算略微过时,矩阵仍然能以一个挺不错的水平运作。研究人员们也已经在设计新的算法,为奇异值分解提供可用的近似值并显著缩短计算时间。&/p&&br&&p&
基于协同过滤的推荐应用最广泛,而它也存在以下几个问题:&/p&&ol&&li&&p&方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。&/p&&/li&&li&&p&推荐的效果依赖于用户历史偏好数据的多少和准确性。&/p&&/li&&li&&p&在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。&/p&&/li&&li&&p&对于一些特殊品味的用户不能给予很好的推荐。&/p&&/li&&li&&p&由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。&/p&&/li&&/ol&&strong&三、&/strong&&strong&个性化推荐引擎的应用&/strong&&br&&strong&其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果。&/strong&&br&&p&&strong&3.1 Amazon&/strong&&/p&&p&Amazon 作为推荐引擎的鼻祖,其推荐的核心是通过数据挖掘算法和比较用户的消费偏好与其他用户进行对比,借以预测用户可能感兴趣的商品。Amazon 采用的是分区的混合的机制,并将不同的推荐结果分不同的区显示给用户。&/p&&ul&&li&&p&今日推荐(Today's Recommendation For You): 通常是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。&/p&&/li&&br&&li&&p&新产品的推荐(New For You): 采用了基于内容的推荐机制(Content-based Recommendation),将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题。&/p&&/li&&li&&p&捆绑销售(Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析,找到经常被一起或同一个人购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。&/p&&/li&&li&&p&别人购买/ 浏览的商品(Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于项目的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。&/p&&/li&&/ul&&p&
另外,Amazon 很多推荐是基于用户的profile 计算出来的,用户的profile 中记录了用户在Amazon 上的行为,包括看了那些物品,买了那些物品,收藏夹和wish list 里的物品等等,当然Amazon 里还集成了评分等其他的用户反馈的方式,它们都是profile 的一部分,同时,Amazon 提供了让用户自主管理自己profile 的功能,通过这种方式用户可以更明确的告诉推荐引擎他的品味和意图是什么。&/p&&p&&strong&3.2 豆瓣&/strong&&/p&&p&
豆瓣的推荐是通过“豆瓣猜”,官方介绍——&你的个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准。”&/p&&p&
这一点让我们可以清晰明了的知道,豆瓣必然是基于社会化的协同过滤的推荐,这样用户越多,用户的反馈越多,那么推荐的效果会越来越准确。&/p&&p&
相对于Amazon 的用户行为模型,豆瓣电影的模型更加简单,就是“看过”和“想看”,这也让他们的推荐更加专注于用户的品味,毕竟买东西和看电影的动机还是有很大不同的。&/p&&p&
另外,豆瓣也有基于物品本身的推荐,当你查看一些电影的详细信息的时候,他会给你推荐出“喜欢这个电影的人也喜欢的电影”,这是一个基于协同过滤的应用。&/p&
注:以下内容非原创,为本人2年前整理自网上多种来源,但来源当时未标记, 时过境迁,也许推荐引擎不再是当初的模样。 ——————我-是-分-隔-线,我是辛勤的搬运工,我是变态的整理侠—————————— 与购物网站内部的搜索对应,购物网站一般还会有…
&b&QQ&/b&&b&圈子:从哪里来,到哪里去&/b&&b&&/b&&br&&br&&b&摆脱顿巴数的魔咒&/b&&b&&/b&&br&&br&社交是人类的一个最基本的需求。但是,自然给我们人类的大脑,只能让我们维系150-200个左右的好友。超出这个范围,就会有好友慢慢地被淡忘。很多社会群体的平均大小是150,这个数也被称为顿巴数(Dunbar Number)[1]。例如,公元前6000年左右,中东地区新石器时代村落的人数大约在120-150人之间。在罗马共和国时期,罗马军队的一个基本作战单位的人数大约为130。20世纪50年代以来,社会学家了解到,150-200人之间的公司可以基于人际关系运作,一旦超过,就需要各类等级制度和管理结构[2]。&br&&br&在近代以前,绝大部分人生活在150-200人之间的固定圈子里。圈子里的人之间有着良好的人际关系,而与圈子外的人很少有联系。因此,他们仅仅用大脑就可以管理整个圈子中的社交关系。当然,在这150个人中也有亲疏不同。其中最亲密的,大概包括3-5人,组成一个很小的核心圈。其次是稍大一些的圈子,大约30-50人[2]。再次就是整个圈子。
&br&&img src=&/b103f69ceafb9407490abee_b.jpg& class=&content_image&&&br&但是,现代社会的流动性改变了这一切。我们随着成长,从一个地方迁移到另一个地方,从一个圈子迁移到另一个圈子。对于大多数人而言,我们在一个地方出生和长大,去一个新的地方求学,认识新的朋友。毕业后,我们再去一个新的地方工作,认识新的同事……在每一个阶段,我们都会有好友,也会有密友。但是随着迁移,旧的好友慢慢地被淡忘。Dunbar等人指出,每年我们会遗忘大约15%的好友,而旧时的密友也会从我们社交圈的中心,慢慢地退到圈子的边缘,甚至最终消失[1]。&br&&br&&img src=&/4ca7d681f7b8dcb4dbac_b.jpg& class=&content_image&&&br&遗忘旧朋友并不是唯一的问题。当我们到一个新的地方,需要结识新的朋友,融入新的环境,这一过程又变得有些吃力。尽管我们有各种各样的技术手段,但是,面对面的沟通和交流仍然是结识朋友的主要手段。据研究统计,我们每天40%的时间,只用来和5个人打交道。而这5个人,往往还是我们的密友[1]。在现在这样一个快节奏的时代,面对面交流,对于快速地结交好友而言,效率显然有些低下。&br&&br&我们期望“结识新朋友,不忘老朋友”。可事实上,我们正处在一种“难交新朋友,忘却老朋友”的尴尬处境中。现在社交网络类的网站和软件,正在努力地帮我们改变这种尴尬的处境。通过社交网络,我们可以添加相当多的好友,数百个甚至数千个。这似乎解决了我们的问题,但这只是表面现象:实际上,我们还是管不过来。在一个成熟的社交网络中,用户的平均好友数仅为120-130。当好友数超过150-200,有些好友几乎就认不出来[1]。这昭示了一个可笑的,但是却不得不让人接受的事实:社交网络的确进化到了21世纪,可是我们大脑,并不比几千年前有多大的改观。看起来,顿巴数就像个魔咒。尽管我们做了很多努力,仍然摆脱不了。&br&&br&可是,为什么我们不直接把我们的生活圈子(包括过去的、当前的、正在进入的)直接地在社交网络中列出来呢?那样的话,我们就可以很好地管理和识别我们多年来积攒的好友,有些也许已经淡忘,但是当把他们放回到他们所在的圈子中时,那些忘却的姓名将再度清晰;我们也可以利用圈子中人脉的力量,去寻找失散多年的好友;我们也可以跟旧时的玩伴分享现在的故事,他们也一定很渴望知道我们的近况;当我们进入一个新的环境,只需要加几个QQ好友,圈子就能为我们展示更多的潜在好友,帮助我们快速地融入新的环境……是啊,为什么不呢?&br&&br&QQ圈子,就这么诞生了。&br&&br&&br&&b&理念到实现的距离&/b&&b&&/b&&br&&br&理念到实现的距离,是一个合适的技术方案。QQ圈子的计算思想很简单:第一步,找到可能的圈友;第二步,分圈。&br&&br&寻找可能的圈友,相对来说比较简单。众所周知,QQ使用的账号是QQ号码。正是QQ号码,天然地成为了寻找好友的障碍——因为我们并不知道他们的QQ号码是多少。但是,我们相信,如果他们有QQ号码,总会有人知道。而这些人,就藏在我们的好友列表中。换句话说,那些失散多年的好友,很有可能就藏在我们的好友的好友(下文称为潜在好友)中。经过长期的数据分析和评估,我们最后做了个简单而又有效的设定,那就是把我们的圈友限定在好友和与我们关系紧密的潜在好友中。基于这个圈友列表,我们又设计了一套严谨的清洗、筛选和过滤算法。设计这些清洗、筛选和过滤算法的目的,一是为了保护隐私,二是为了提高推送的准确度。&br&&br&分圈是最关键,也是最难的步骤。在真实的社交网络中,同一个圈子的人彼此熟识,而不同圈子的人之间,却鲜有交情。映射到QQ的账号体系中,这就等价于,同一个圈子的人互相加为好友,而不同圈子的人则彼此为“陌生人”。这一从现实生活中得来的经验,是我们整个分圈算法的基本假设。&br&&br&其实,基于这一假设的分圈算法并不罕见。学术界对与社交网络的分圈算法早有研究,其中较为流行的是Newman等人提出的分圈算法[3, 4]。我们在初期也尝试了Newman等人的方法,却发现这个算法比较消耗计算能力,而分出来的效果,远远达不到我们的要求。我们还尝试了文献中的另外一些方法,如Raghavan 等人[5]的一种随机扩散算法等。Raghavan 等人的算法大幅度地减少了运算量,可惜分出来的效果,仍然达不到我们的要求。我们想要展示的圈子,要更好一些,更准确一些。&br&&br&最后我们决定自己开发一套算法。经过长时间的尝试和实验,我们设计了一种“找朋友”算法。如同已有的社交网络分圈算法,“找朋友”算法只使用了QQ号码之间是否为好友这一最简单而直接的数据。这一算法的计算相对简单,效果却优于我们尝试过的所有方法。在算法里,每个圈子都在通过“找朋友”让自己变得更好。这里“好”的标准,也就是让圈子内的好友联系尽可能地紧密,而与圈子外的好友则尽可能地没有联系。&br&&img src=&/48ecdf8c9da3f703e3afd_b.jpg& class=&content_image&&&br&能让大家更好地识别圈子和圈友,我们还设计了特别的算法,尝试为圈子和圈友提供参考名称。在算法设计的过程中,我们花了相当多的时间和精力去保护隐私。例如,在一个圈子里,只有大部分圈子成员对某一个圈子成员都使用严格相同的备注名,这个备注名才会被聚合出来。而且这个备注名也仅仅只展现给这个圈子中的核心成员。所有的名称也都经过了非常严格和全面的脏词、敏感词等的过滤。此外,我们还基于小世界网络的理论[6, 7]精心设计了圈友的排序。我们还做了智能备注这样的功能,如果你愿意,可以快速地将圈子上的备注名复制到QQ的好友列表中……&br&&br&&br&&b&新的开始&/b&&b&&/b&&br&&br&我们所做的一切,都是为了帮助我们有限的大脑来应对现在多变的社交环境。QQ圈子将会是一个智能的平台。这个平台可以辅助我们做很多琐碎的,有时也很困难的事情:譬如分组,备注,寻找好友。这个平台可以集成好友的通信方式,也能集成好友的消息动态,省去我们到处检索和浏览的精力。这个平台可以帮助我们维系现有关系,重拾失散的好友,也能帮助我们探索更多好友,拓展我们的社交网络。这个平台能帮助我们盘活我们的社会资本,为我们的生活带来更多的精彩!&br&&br&QQ圈子,将是一个崭新的开始!&br&&br&&br&&b&参考文献:&/b&&br&1.
Dunbar, R., &i&You’ve Got to Have (150) Friends.&/i& The New York Times, The Opinion Pages, 2010.&br&2.
Dunbar, R., &i&How Many Friends Does One Person Need?: Dunbar's Number and Other Evolutionary Quirks&/i&. 2010: Harvard Univ Pr.&br&3.
Newman, M.E.J., &i&Modularity and community structure in networks.&/i& Proceedings of the National Academy of Sciences, 2006. &b&103&/b&(23): p. 8577.&br&4.
Newman, M.E.J. and M. Girvan, &i&Finding and evaluating community structure in networks.&/i& Physical review E, 2004. &b&69&/b&(2): p. 026113.&br&5.
Raghavan, U.N., R. Albert, and S. Kumara, &i&Near linear time algorithm to detect community structures in large-scale networks.&/i& Physical review E, 2007. &b&76&/b&(3): p. 036106.&br&6.
Adamic, L., &i&The small world web.&/i& Research and Advanced Technology for Digital Libraries, 1999: p. 852-852.&br&7.
Collins, J.J. and C.C. Chow, It’s a small world. Nature, 84): p. 409-410.
QQ圈子:从哪里来,到哪里去 摆脱顿巴数的魔咒 社交是人类的一个最基本的需求。但是,自然给我们人类的大脑,只能让我们维系150-200个左右的好友。超出这个范围,就会有好友慢慢地被淡忘。很多社会群体的平均大小是150,这个数也被称为顿巴数(Dunbar Numbe…
作为淘宝的推荐算法工程师,来说几句,希望能解答一些题主的疑惑。知乎上有太多熟人,还是先匿了。&br&&br&&br&1. 淘宝的推荐是在不断进步的,题主说的现象几年前更为严重,你买了什么就给你推荐一模一样的,但现在情况是在改观的,尤其是最近一年。&br&&br&2. 淘宝的场景众多,以手机淘宝app为例,首页有猜你喜欢,购买付款之后有推荐,逛店铺有推荐…这些场景少说也有几十个,这与豆瓣亚马逊都是不同的。这些场景之间并不能用同一份数据,也不是同一个人做的(甚至不是同一个团队做的)。这有什么问题呢?一个直接的问题就是资源。由于这些场景都是不同的,因此推荐算法所需要的计算资源存储资源也是不可复用的。阿里虽然有钱,但也不能为每个场景都建立足够全量计算的资源,于是算法就会做简化。&br&&br&3. 到去年年初的时候,很多场景的推荐甚至都没有个性化算法在里面。去年大老板提出千人千面,这才逐步在各个场景开始用上个性化推荐的算法(所以我们团队的活儿越来越多了),在此之前淘宝上各个场景或许七成都是没有个性化的(所以题主会觉得都是热门)。可以这么说,淘宝的推荐真正开始像豆瓣亚马逊那样有算法介入,给每个人推荐适合他的东西,也就这一两年的事情。&br&&br&4. 推荐算法的目标是什么?从现实的角度,很简单,就是点击率,或者转化率。我推荐什么用户才会多点多买呢?也许题主觉得那些搭配啊风格啊是很好的,但从普罗大众剁手党来说,并不会买账。我们也做过实验,实际数据表明,很多场景里用户刚看了什么买了什么,你就推荐个类似的,这是点击率最高的方式。题主是不是很诧异?我也很无奈,淘宝用户毕竟不是豆瓣用户,题主这样的用户在淘宝上是绝对的少数。&br&&br&5. 题主提到的搭配推荐,这个事情我们团队正在做,不久之后会成熟完善。即使现在已经有个性化算法的场景,比如猜你喜欢,我们也在持续地改进算法中,题主可以体会一下。&br&&br&6. 有人说网易云音乐,确实他有很多设计可以更容易让用户暴露出自己的喜好,这是产品设计上的先天优势。这一块,我们团队几个月前开始支持类似的产品天天动听的推荐,现在第一版本已经上线,题主不妨感受一下。我自己的感受并不差。&br&&br&7. 当然,有时候推荐结果之所以是这样而不是那样,是因为算法要迎合老板的口味。这就不多说了。&br&&br&淘宝推荐还很年轻,以后会越来越好。
作为淘宝的推荐算法工程师,来说几句,希望能解答一些题主的疑惑。知乎上有太多熟人,还是先匿了。 1. 淘宝的推荐是在不断进步的,题主说的现象几年前更为严重,你买了什么就给你推荐一模一样的,但现在情况是在改观的,尤其是最近一年。 2. 淘宝的场景众多…
&img src=&/d0f54e3774c6bfe24e5bf3_b.jpg& data-rawwidth=&834& data-rawheight=&278& class=&origin_image zh-lightbox-thumb& width=&834& data-original=&/d0f54e3774c6bfe24e5bf3_r.jpg&&&p&社交网络中,好友推荐随处可见,这里探讨好友推荐是如何做的。&/p&&p&1、三元闭包理论
&br&说到好友推荐,就不得不谈三元闭包理论。
&br&三元闭包定义:在一个社交圈内,若两个人有一个共同好友,则这两个人在未来成为好友的可能性就会提高。
&br&举例说明,若B、C有一个共同好友A,且B、C不认识,则B、C成为好友的几率会增加
&br&这个理论直观自然,可以从机会、信任、动机上来解释:
&br&1、B、C是A的朋友,那么B、C见面的机会会增加,如果A花时间和B、C相处,那么B、C可能会因此有机会认识
&br&2、在友谊形成过程中,基于B、C都是A好友的事实,假定B、C都知道这点,这会为他们提供陌生人之间所缺乏的基本信任
&br&3、A有将B、C撮合为好友的动机:如果B、C不是朋友,可能会为A和B、C的友谊造成潜在的压力
&br&&br&两个人共同好友的多少决定这两个人关系的强弱,基于共同好友的多少,就可以进行好友推荐。
&br&&br&1)共同好友数
&br&&/p&&p&&img src=&/327d115adff14ad2ad778_b.png& data-rawwidth=&487& data-rawheight=&52& class=&origin_image zh-lightbox-thumb& width=&487& data-original=&/327d115adff14ad2ad778_r.png&& 其中,Neighbor(i)表示i的好友,也就是网络拓扑上的邻居节点
&br&&br&通过对共同好友数排序,即可产生一个好友推荐列表。
&br&&br& 2)对双方好友数加权
&br&为消除双方好友数差距,可以除以双方好友数进行加权,也就是杰卡德系数,计算公式如下:
&br&&img src=&/d11bc520adc4e5396ecc8b8_b.png& data-rawwidth=&503& data-rawheight=&86& class=&origin_image zh-lightbox-thumb& width=&503& data-original=&/d11bc520adc4e5396ecc8b8_r.png&&3)对共同好友加权
在1)2)中,相当于对每个共同好友一视同仁,都贡献1分,但是共同好友中,有些人好友多,有些好友少,当某个共同好友的好友数较少时,这个共同好友应该更加重要,所以可以通过除以每个共同好友的好友数进行加权。
&br&&img src=&/e2b4fae075fdbe_b.png& data-rawwidth=&542& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&542& data-original=&/e2b4fae075fdbe_r.png&&上式中,通过除以每个共同好友的好友数进行加权,如果好友数相差过大,需要通过开方、对数等方式进行处理,如下:
&br&&img src=&/aa57ffbd7caea301d8ed_b.png& data-rawwidth=&553& data-rawheight=&92& class=&origin_image zh-lightbox-thumb& width=&553& data-original=&/aa57ffbd7caea301d8ed_r.png&&&img src=&/da6d34b50ba9729b44afe_b.png& data-rawwidth=&587& data-rawheight=&82& class=&origin_image zh-lightbox-thumb& width=&587& data-original=&/da6d34b50ba9729b44afe_r.png&&下面是y=&i&x&/i&,y= &i&x^0.5&/i&,y=log2x 的曲线:&br&&img src=&/24a51c20c16b11bc68d99be1e7fd8984_b.png& data-rawwidth=&1027& data-rawheight=&610& class=&origin_image zh-lightbox-thumb& width=&1027& data-original=&/24a51c20c16b11bc68d99be1e7fd8984_r.png&&可以看出,使用开方、对数都可以有效消除差值过大的影响。
&br&&br&2、Facebook
&br&Facebook的数据表明:好友关系建立中,拥有10个共同好友是只有1个共同好友的12倍。
&br&&img src=&/ddc7250260bde852ade05f1e13d4d18b_b.png& data-rawwidth=&423& data-rawheight=&317& class=&origin_image zh-lightbox-thumb& width=&423& data-original=&/ddc7250260bde852ade05f1e13d4d18b_r.png&&Facebook在共同好友的基础上,加入了时间维度;
&br&基于一个假设:用户对新添加的好友更感兴趣。如图:f1和f2是用户u的好友,相对于很久之前添加的好友f2,f1是近期添加,用户对f1近期添加的好友更感兴趣。
&br&&img src=&/0a73dbff31ae1a5c0b22ab_b.png& data-rawwidth=&681& data-rawheight=&252& class=&origin_image zh-lightbox-thumb& width=&681& data-original=&/0a73dbff31ae1a5c0b22ab_r.png&&&/p&&p&基于这样的假设,Facebook出了一个经验公式,如下:&/p&&img src=&/f2e97deb5f081cc6f98d24a9f3e86f74_b.png& data-rawwidth=&567& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&567& data-original=&/f2e97deb5f081cc6f98d24a9f3e86f74_r.png&&&p&从这个公式可以看到,对比对共同好友加权的公式,增加了时间特征:&/p&&img src=&/dc8a04ba38ce5ff_b.png& data-rawwidth=&162& data-rawheight=&47& class=&content_image& width=&162&&&p&时间相差越大,权重越小。其中,δ u,&i&fi&/i& 为u与fi建立好友关系的时间,
为fi与fof建立好友关系的时间,-0.3为惩罚因子,是Facebook的一个经验参数,需要根据具体情况进行调整。
&br&下面是x^a的图,可以直观感受下衰减的程度:
&br&&img src=&/155c8dfe2d84ef21689ac06_b.png& data-rawwidth=&921& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&921& data-original=&/155c8dfe2d84ef21689ac06_r.png&&根据这个经验公式能直接计算出好友推荐的得分,也可以作为一维特征与其他特征一起做回归。
&br&&br&3、其他
一般情况下,使用二度好友(好友的好友)作为推荐的候选集。&br&假设平均每人有150个好友,差不多有22500个二度好友,数据量基本满足推荐候选集的需求,并且数据表明,绝大部分(92%左右)的好友关系都建立在二度空间。
&br&基于三元闭包理论进行好友推荐,推荐的用户至少有一个共同好友,也变相的确定使用二度好友进行推荐。
&br&&br&暂时先这样,有时间继续写关于推荐系统相关的内容。&/p&
社交网络中,好友推荐随处可见,这里探讨好友推荐是如何做的。1、三元闭包理论
说到好友推荐,就不得不谈三元闭包理论。
三元闭包定义:在一个社交圈内,若两个人有一个共同好友,则这两个人在未来成为好友的可能性就会提高。
举例说明,若B、C有一个共…
这就是amazon发明的“喜欢这个商品的人,也喜欢某某”算法。&br&其核心是数学中的“多维空间中两个向量夹角的余弦公式”,当初我的确是被这算法惊艳到了。&br&&br&============= 更新 =============================&br&不好意思,之前说的有误,特来更正兼补充。&br&&br&“商品推荐”系统的算法( &a href=&///?target=http%3A//en.wikipedia.org/wiki/Collaborative_filtering& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Collaborative filtering&i class=&icon-external&&&/i&&/a& )分两大类,&br&第一类,以人为本,先找到与你相似的人,然后看看他们买了什么你没有买的东西。这类算法最经典的实现就是“多维空间中两个向量夹角的余弦公式”;&br&第二类, 以物为本直接建立各商品之间的相似度关系矩阵。这类算法中最经典是'斜率=1' (&a href=&///?target=http%3A//en.wikipedia.org/wiki/Slope_One& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Slope One&i class=&icon-external&&&/i&&/a&)。amazon发明了暴力简化的第二类算法,‘买了这个商品的人,也买了xxx’。&br&&br&我们先来看看第一类,最大的问题如何判断并量化两人的相似性,思路是这样 -- &br&例子:&br&有3首歌放在那里,《最炫民族风》,《晴天》,《Hero》。&br&A君,收藏了《最炫民族风》,而遇到《晴天》,《Hero》则总是跳过;&br&B君,经常单曲循环《最炫民族风》,《晴天》会播放完,《Hero》则拉黑了&br&C君,拉黑了《最炫民族风》,而《晴天》《Hero》都收藏了。&br&&br&我们都看出来了,A,B二位品味接近,C和他们很不一样。&br&那么问题来了,说A,B相似,到底有多相似,如何量化?&br&&br&我们把三首歌想象成三维空间的三个维度,《最炫民族风》是x轴,《晴天》是y轴,《Hero》是z轴,对每首歌的喜欢程度即该维度上的坐标,&br&并且对喜欢程度做量化(比如: 单曲循环=5, 分享=4, 收藏=3, 主动播放=2 ,
跳过=-1 , 拉黑=-5 )。&br&那么每个人的总体口味就是一个向量,A君是 (3,-1,-1),B君是(5,1,-5),C君是(-5,3,3)。
(抱歉我不会画立体图)&br&我们可以用向量夹角的余弦值来表示两个向量的相似程度, 0度角(表示两人完全一致)的余弦是1, 180%角(表示两人截然相反)的余弦是-1。&br&&br&根据余弦公式,
&b& 夹角余弦 = 向量点积/ (向量长度的叉积)&/b& =
( x1x2 + y1y2 + z1z2) / (
跟号(x1平方+y1平方+z1平方 ) x
跟号(x2平方+y2平方+z2平方 ) )&br&可见 A君B君夹角的余弦是0.81 , A君C君夹角的余弦是 -0.97 ,公式诚不欺我也。&br&以上是三维(三首歌)的情况,如法炮制N维N首歌的情况都是一样的。&br&假设我们选取一百首种子歌曲,算出了各君之间的相似值,那么当我们发现A君还喜欢听的《小苹果》B君居然没听过,相信大家都知道该怎么和B君推荐了吧。&br&&br&第一类以人为本推荐算法的好处我想已经很清楚了,那就是精准!&br&代价是运算量很大,而且对于新来的人(听得少,动作少),也不太好使,&br&所以人们又发明了第二类算法。&br&&br&假设我们对新来的D君,只知道她喜欢最炫民族风,那么问题来了,给她推荐啥好咯?&br&&img src=&/f9b50aa7934b1bcebacb4e715d9f1190_b.jpg& data-rawwidth=&903& data-rawheight=&552& class=&origin_image zh-lightbox-thumb& width=&903& data-original=&/f9b50aa7934b1bcebacb4e715d9f1190_r.jpg&&&br&如图,推荐《晴天》!&br&&br&呵呵,第二类算法的好处大家也看出来了,简单粗暴好操作(也适合map-reduce),可精度差了点。&br&&br&所以,各家网站真正的推荐算法,是他们在综合上述两类算法的基础上,各自研制并且不断地改进调节的,外人不得而知! ^_^&br&&br&===
再补充 ===&br&&br&多谢 @刘彦彬 给了一个非常专业的评论 ,不贴出来可惜了。&br&&i&“这个只能说是理论基础。歌曲不考虑热门冷门,同时不考虑用户数和歌曲数计算复杂度的话第一一天内离线数据计算不完的(当然网易云音乐用户量小全量暴力计算当我没说),实际应用起来复杂很多了。现在的推荐系统并不存在一种算法通吃,除了算法上的问题,还需要考虑基础数据的影响因素,比如两张歌单有多少歌曲重合,歌单的质量是怎么样的。” &/i&&br&&br&我上一帖也说了,&br&'向量夹角余弦' 解决的是‘量化顾客口味相似度’的问题(是最经典的解法,也有别的解法),&br&不是有了它就能轻易实现第一类算法的,难处在后面咯。&br&我不是干‘CF/算法/数据挖掘/互联网’的,只是几年前偶尔瞄到过这方面文章被惊艳了一下,&br&见到这题就随口抖了个机灵,然后被评论区几位带板凳来的朋友给推上来了 ^_^&br&&br&既然大家都这么有兴趣,我在来抛块砖,说说‘有了理论基础之后咋整’的思(nao3)考(dong4)。&br&继续第一类算法的话题,目标“每日歌曲推荐”(其实题主感兴趣的是这个吧,旁边‘根据你喜欢的xxx推荐的yyy歌单’我觉得不咋样)。&br&首先就是如何定维度。
&br&直接用‘歌’当维度是不行的,第一是太多了算不过来,第二维度数一直猛涨也不是个事。&br&用‘歌单’或者‘专辑’,‘演唱/演奏者’呢?也有类似的困难。&br&说到这里大家应该都意识到了,咱不是还有‘tag’嘛!&br&云音乐初期,tag是可以由大家自己填的,我记得我填过‘莫扎特’,‘钢协’,‘交响’这样的tag,现在都不见了吧。&br&一段时间之后,tag无法自填了,只能从云音乐给的tag lib中选,这肯定有原因的。&br&我的推测就是,他们需要用tag来当作维度,所以不希望tag数经常变化。&br&第一阶段,他们需要搜集用户的输入来做出tag lib,&br&第二阶段,他们构建了多维度空间,就不希望再动维度了,因此关闭了自填tag的功能。&br&&br&假设就用tag做为维度,那么第二个难处在于,维度上的'刻度'必须有正有负才好使,&br&用户没有机会直接表达对tag的好恶(不能收藏,播放,跳过一个tag),如何定刻度呢。&br&我认为每一首歌背后是有其所属tags这个属性的,这个属性在UI上看不到很可能是因为比较容易引起口水。&br&歌往往隶属于很多歌单,而那些歌单都是有tags的,根据那些歌单的播放数收藏数分享数可以决定其'权威性',&br&取'权威性'高的歌单的tag,就可以得到每首歌的tag属性。&br&然后用户在表达对一首首歌的好恶的时候,其实就不知不觉地影响了他在相应维度上的刻度。&br&&br&假设维度和刻度都这样解决,那么我们可以对每个用户做出‘口味向量’了,接下来的难处是,&br&啥时候算/如何保存‘用户相似性’?&br&所有用户两两算一下相似性,存为一个NxN的矩阵,这种事情不是闹这玩的。&br&&br&其实到了这一步,不考虑‘以人为本’,直接根据我喜欢的tag,从各tag里挑一些人气高的,或者蹿升快的歌来推荐也算是能交差了。&br&不过那样的话,就容易同质化,也就不易让用户‘惊艳’了。&br&让我们继续沿着第一类算法的思路琢磨琢磨。&br&&br&多维度空间还有一大好处是,有‘像限’这种的概念,&br&比如我们可以粗暴地假设,和我同一个像限的人,就是和我‘相似’的人,&br&如果因为维度太多,或者初期用户太少等原因找不到同像限的人, 还可以去‘相邻’的像限找嘛。&br&OK,假设我们根据tag以及自己的像限,找到了一批和自己‘气味相投’的人。&br&再丛这批人中,选几个‘和我夹角余弦’最大(再综合一下个人名声比如星标,粉丝数,和我的互动度等,更好)的人,&br&从他们听过而我没听过的歌中,再选一批 他们喜欢,或者他们新听到,新收藏,或者总人气高的等等,&br&就可以说是“根据我的口味生成”的“每日歌曲推荐”了。&br&&br&以上内容,均是臆测,如果雷同,纯属巧合 ^_^
这就是amazon发明的“喜欢这个商品的人,也喜欢某某”算法。 其核心是数学中的“多维空间中两个向量夹角的余弦公式”,当初我的确是被这算法惊艳到了。 ============= 更新 ============================= 不好意思,之前说的有误,特来更正兼补…
推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。&br&
基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐),弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致;另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签。&br&
协同过滤算法,原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering),还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering,另一种则是Model-based collaborative filtering,包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。&br&
最后一种方法是基于知识的推荐算法,也有人将这种方法归为基于内容的推荐,这种方法比较典型的是构建领域本体,或者是建立一定的规则,进行推荐。&br&
混合推荐算法,则会融合以上方法,以加权或者串联、并联等方式尽心融合。&br&
当然,推荐系统还包括很多方法,其实机器学习或者数据挖掘里面的方法,很多都可以应用在推荐系统中,比如说LR、GBDT、RF(这三种方法在一些电商推荐里面经常用到),社交网络里面的图结构等,都可以说是推荐方法。
推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。 基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上…
已有帐号?
无法登录?
社交帐号登录
106 人关注
150 条内容
763 人关注
100 条内容
11013 人关注
290 条内容
498 人关注
1378 条内容

我要回帖

更多关于 基于关联规则推荐算法 的文章

 

随机推荐