我一直自夸是「菜刀流」的工程师,做为一个数据挖掘的门外汉,竟也操刀过三个推荐系统的项目了。这三个推荐系统,用户群不一样,业务场景不一样,连地域和文化也有些差异。因此近来总在琢磨,推荐系统的缘起千人千面,纷繁万变的细节当中,能不能汇聚出一些广泛共性?有没有一个普适的标准,回答什么是一个真正出色的推荐系统?我但愿迈出这一步,把以前想过的梗、跳过的坑以及卑微的沉思亮出来,等待真正的高人点拨一二。算法
这实际上是最容易被忽视的一个问题。尤为在这几年「大数据」的概念炒得火热,推荐系统也就成了某些人眼中的仙丹妙药,无论三七二十一,先上了再说。在我看来,推荐系统至少须要评估下面三个可行性:网络
要有足够的数据机器学习
一种常见的错误思路是,个人社区不够活跃,上个用户推荐系统增强活跃吧。若是你抱着这样的想法,我只能恭喜你选择了一种坚苦卓绝的逻辑。推荐系统是数据挖掘的一种应用,而没有数据,一般都不会产生什么有价值的挖掘。学习
要有丰富的内容测试
推荐系统起源于亚马逊的图书推荐。但有没有人细想过,为何亚马逊是第一个吃螃蟹的人?由于贝佐斯把书店搬到网上后,他发现本身拥有了全世界最多的图书,在一家库存数百万种图书的虚拟书店里,你根本没法依赖任何一个店员帮你的顾客推荐新书。而另外一种常见的错误思路是,在内容未丰富的前提下就急着上推荐系统。事实上,只有内容极大丰富的时候,才可能有被无用户差异排行榜埋没的优质内容,个性化需求才能体现出商业价值。若是你的内容在一万如下,我会建议你使用单一的热门排行榜;十万如下,我会建议你使用分类的热门排行榜,十万以上,才慢慢有推荐系统的可行性。大数据
用户分众图片
数据充分了、内容丰富了,还得掂量下用户的口味能不能产生足够的分众。推荐系统之因此在电商、音乐上有成功的应用,最主要的因素是这类产品的用户有足够的分众。而越是大而全的领域,用户的分众越明显,推荐的效果越好。比如淘宝的推荐颇受赞扬,而惟品会的推荐多被吐槽,道理就在这儿。若是你说你正在作同志社区或情趣电商,我会内心一凉。get
先决条件经过了,咱们来讨论「术」的问题,你能够把这节的内容看成「跳坑实录」来读。产品
热门和长尾的矛盾数据挖掘
第三种错误的思路在于,推荐系统以提高点击率为目标,而每每横向对比之下,个性化推荐的指标每每不如热门排行榜。对此一小部分算法人员铤而走险,但愿用热门混杂长尾的方法去得江山抱美人,而在我看来,推荐系统有且仅有一个目标,知足用户的个性化需求。至于你说点击不如推热门?那把排行榜留着呗,那才是赚点击率的地方。
基于内容仍是协同过滤
推荐系统的本质在于增强联结,或者说,给用户绵绵不断发现新东西的机会。因此协同过滤(或者往更宽泛的范围,矩阵分解也算)都是在利用联结的信息,从而取得比基于内容更好的推荐效果。可是,了解你所拥有的内容,做为辅助的算法,绝对能使推荐的质量大幅上升。可是算法人员面临的现状每每是,很可贵到格式化的内容标签,一个可行的思路是,请用户来为内容打标签,参照豆瓣和淘宝。另外一个决定选择的因素是数据特征,若是用户行为集中而稀疏,那么意味着你必须更多依赖内容的信息。
负样本的问题
协同过滤是基于统计的算法,并不须要负样本的信息,但若是是基于机器学习的算法,训练的过程是须要负样本的。有的产品只有用户的隐反馈(好比播放、购买),即用户没法表达对一个内容的厌恶,那么你只有创造负样本了。在这一块,最好的思路是,选择热门的但用户没有行为的样本,由于热门的内容更有机会让用户看到,用户看到屡次但没点击,那就更多是不喜欢。
冷启动的问题
应对冷启动的策略要按照业务场景区分,若是是用户看了一个内容,要给他推荐其余的内容,那么能够利用内容特征的类似度;若是是对一个新用户推荐,条件容许的话,能够请用户表达本身的偏好,或者依赖社交网络的信息,实在不行,只能推热门了。
我但愿把实施中的一些Keypoint单独罗列,你们都懂的东西,暂时不讲。
借助更多信息
个人风格是作推荐以前必定要把产品用坏,来肯定能获取到哪些用户行为和用户数据,能获取的尽可能获取。好比,用QQ邮箱的和用Gmail邮箱的用户确定有些不同,对不?
研究数据之间的相关性
这就是熵的概念。若是两个数据相关性是1,那么确定有一个没什么用处。用好回归,你会少不少运算量。
弄清你的业务场景
有的人会把业务场景叫作「推荐的上下文」,事实上推荐算法的许多细节都会被业务场景影响,好比以物推物的场景就会更适合采用ItemBased,一个一个展示的能够考虑加入点随机性,首页推荐应该多放新品,等等。
定义好你的目标
我习惯了作事以前目标先行,目标错了跑得再快也没用。推荐算法的长期目标应该是提高用户的活跃(注意,不是活跃率),而对于短时间指标,应该着重在几点:有没有更多的内容被发现?热门排行榜的更新是否加快?用户对于推荐的点击是否在一个比较活跃的水平(再次,我反对一律而论)?若是是UGC的产品,用户有没有由于更容易被发现而积极地上传内容?固然,这些指标都必须被量化。
良好的引导
记得以前去听百分点科技的演讲时,他们提到会有人专门去研究推荐系统的引导,甚至有时候引导比推荐的内容更重要,深有同感。这也是社交推荐为何不须要什么模型却效果很好的缘由。记住一点,若是推荐的区域有任何的图片或数字时,想办法让它们更有诱惑力。
收集更多反馈
推荐系统一前一后的数据流都不容轻视,我一样倾向于收集一切与推荐系统有关的数据,好比推荐区域的停留与点击、推荐内容的消费、连续点击推荐内容的链条等等。若是可能的话,请用户对你的推荐给予评价,这也能让你的推荐更有温度。
离线实验
不要迷信离线实验的结果,一般和线上都会差很远。若是以前不存在推荐系统,那么用户极可能根本就没有机会接触到你推荐的内容,也就无从证明。
耐心
推荐系统并非一个立竿见影的产品,上线以后多花点时间收集数据、调整参数、作更多的分组测试,更重要的是,让你的老板也有耐心。
来自:建造者说