京公网安备 11010802034615号
经营许可证编号:京B2-20210330
昨天看到同事在朋友圈以及机器学习日报推荐的这篇文章:《佳缘用户推荐系统》,再结合自己之前的几年的推荐系统经验,以及在婚恋网站半年多的经验,来谈谈我眼中的婚恋市场的推荐系统。
如作者所说,佳缘作为第一家也是中国最大的婚恋网站,的确在推荐系统上走了很多的弯路,但也正是这些弯路以及作者的分享精神,才给后来者的我们提供了许多一线的参考价值。我相信任何在今天看来不完善的,甚至有一些可笑的设计,在当时都是有着合理性和必要性的。那么我再回顾自己的2011年如果开始从头搭建这样一套系统,是否能做成这个样子,自认也没有这样的把握。所以这篇文章纯粹是站在我今天的角度来做点评和分析,也望大家多多探讨。
首先,我们先顺着作者的思路去看佳缘经历的推荐算法:
在2011年到2013年的算法年,佳缘尝试了两个算法方向,与我的想法非常背离,第一个不是最基本的Content-based,而是Item-based,相信Item-based算法大家都再了解不过,所以就不多做解释。我们只来分析算法的业务应用。Item-based是在构建一个User-Item矩阵,然后计算Item-Item之间的相似度。那么具体到婚恋网站的业务场景,其实也就是构建了一个Man-Woman的矩阵,将Woman当做Item,计算Woman之间的相似度,这个算法场景基于背后的假设是认为,如果一个男人喜欢一个女人,那么他必然喜欢和这个女人相似的女人,换句更直白的话说,每个男人都喜欢自己女朋友的闺蜜。相似,我们将User-Item矩阵做转置后,可以继续做Man的相似度,不再复述。
这个算法设计有如下几个问题:
1. 如作者所说,给男性展示美女,男性的发信就会暴涨,这样少量女性收到大部分信,而大多数女性却收不到信。但是作者可能没有把这部分给说透,如果单纯从这一点来看,这并不是协同过滤算法本身的原因。这其实是一个恶性循环,算法本身就是基于了一个严重有偏的User-Item矩阵来计算相似度,于是产生的推荐结果最终会造成给所有人都推荐美女。
2. 但是这并非是一个无解的问题,我们回归Item-based的本源思考为什么热门的条目会受到额外的照顾,抛出业务场景,其实根源在于Cosine-Similarity里分母开的那个根号惹的祸,可以想象10000的平方根和1000的平方根到底有多大差别,其实罪魁祸首就是平方根弱化了热门条目的作用,如果一定希望去调整,可以根据实际的业务情况去调整指数。
3. 稀疏性问题。对于婚恋网站来说,长尾性和稀疏性比传统的条目网站都大得多,大家可以想象一下大多数人来婚恋网站的目的,以及走在大街上看到美女的概率即可,所以单纯的Item-based是无法解决问题的,只会造成大部分人可能一辈子都收不到一封信。但是这其实也有解,最粗暴的方法就是对于一部分用户配合Content-based做随机展示(对于展示哪一部分,我们之后再来具体说)。
4. 协同过滤的传统问题,就不多说了,比如说实时性,参数调整的复杂性等等。
5. 具体到婚恋业务上来说,“如果一个男人喜欢一个女人,那么他必然喜欢和这个女人相似的女人”这句话结合业务场景和业务目标是有着悖论的,我们做个逻辑推演,如果我喜欢某个女人,就会给这个女人发信,如果这个女人理我了,我就愿意和她“结婚”(记住,这里不是约炮),那么我就不会也不应该再去找其他女人。 如果这个女人看不上我,那么和她相似的人也不会看上我….. 所以…..我想大家应该可以明白这个其中的问题了。
第二个尝试也是我曾经有段时间努力探索的:Reciprocal Recommendation。也许大家对这个不熟悉,我大概讲一下,这种推荐算法广泛地应用于双向选择的业务场景下,例如求职网站,交友婚恋网站。不同于传统的网站推荐系统,搭建的是基于条目的推荐系统,或者是基于用户单向关注的推荐关系。求职网站给我推荐了一份Google CEO的工作,我会感兴趣,但是他对我不感兴趣是没有意义的。婚恋推荐也是如此。
那么这个算法解决的出发点很好,但是实话实说,其实paper一共就那么多,我总结着看了下,并没有真正有用的东西,也没有创造性的模型产生,只是对于传统推荐算法的一个后过滤,整体思路就是把曾经的无向图变成了有向图,分别求出Man–>Women,Woman->Man的双向关系,然后或者相乘,或者搞一些奇怪的公式去做拟合。作者说不太靠谱,但是我认为这个算法从思路上来说是对路的,无论是不是用他们那些莫名其妙的模型,但是作为思想的参考还是值得借鉴的。
接下来佳缘推荐算法的阶段步入了2014的工程年,作者根据佳缘的团队及业务特点将佳缘推荐做了战略上的调整,从比拼算法模型改成了比拼特征工程。我不了解佳缘的实际情况,不敢多做评价,只是从个人感觉来说也许作者从一个极端走到了另一个极端。从外界来猜测一下佳缘的实现思路:抽出各种各样的特征,例如用户的基本人口学信息,加上用户的行为属性信息等等,然后针对每个用户训练一个分类器,来预测他是不是对对方感兴趣。
那我们来聊聊逻辑回归的根本问题吧:
1. 大部分信息大多都是离散值,而这些离散值之间并非是按照数字本身的意义有着明确的大小关系,这个如果用逻辑回归,就会面临让人绝望的离散值连续化问题。
2. 如果把希望寄往于特征工程,就需要对每个特征都做深入的业务和数学化理解,而且调参这个事儿结合到婚恋网站超长的训练反馈链,几乎是无解的。不要去讨论非监督化的特征工程了,因为婚恋网站的业务特别明确,人工特征往往比泛化的非监督特征工程好用得多。
4. 逻辑回归本质上是广义线性模型,但是这个假设是不是适用。
5. 最关键的是,逻辑回归其实和最基本的感知机有什么不一样,从图形上面最基本的理解,其实就是把最两端的长尾巴给压缩了一下,但是对于婚恋网站来说,恰恰最需要的就是这些长尾巴的东西,因为这些长尾巴是最能让人付费的动力。
我相信接下来我说的很多尝试和做法,佳缘都已经尝试过了,但是站在局外者的角度,我认为除了传统的特征工程以及算法模型的优化外,其实接下来的这些才是婚恋网站推荐算法成功的关键(结合佳缘的模式: 收取用户的看信费用,其实我没用过):
1. 明确推荐评价指标,这一点是老生常谈,做任何一个系统前,尤其是数字化系统时,最重要的就是明确建立这个系统的指标。对于婚恋推荐系统来说,最核心的指标无外乎付费的转换率,那么继承OKR的思路,我们来对这个指标进行拆解Key Result,想提高付费转换率有几点需要提高: A. 收信人的覆盖率 B. 发信者的动力 C. 收件人的看信意愿(付费意愿),那么接下来逐渐说
2. 识别优质资源,对于婚恋系统来说,帅哥就那么多,美女也就那么多,付费用户更是就那么多,所以识别用户成为了婚恋网站的重中之重。所以婚恋网站的第一步不是推荐问题,而是一个用户从多维度的分类问题。
3. 懂得取舍。我们继续做逻辑推演,用户到底愿意给什么人发信,但是到底什么人才愿意让用户看信。接下来什么用户才会愿意为了一封信而付费。其实这个时候问题已经变成了,如何给优质用户看到他感兴趣的人,而这个人又对他感兴趣,而且这个人恰恰又愿意付费。这个逻辑链条太长了。根本没办法来做,我们来精简逻辑链条,发信其实是成本最低的,而且可以通过鼓励或者产品引导来让用户发信,所以我们把第一层逻辑去掉。我们倒着来推,把问题转换为识别出最愿意付费的那些用户,然后找到这些用户感兴趣的用户,通过产品引导让这些用户发信。
4. 推荐理由。对于婚恋推荐来说,推荐理由比传统的网站要重要得多,因为你要明确给用户一个付费的理由,关于传统的推荐理由,就不再复述了,无外乎你们具有相同的属性,喜欢这个人的也喜欢,等等。但是最近的那篇<New Direction in Recommender System>也许会给我们一些额外的启发,大家也可以直接看我之前的博文:<商品推荐算法 & 推荐解释>。
5. Reciperocal Recommendation思想的业务化应用。在之前,我简化了发信者发信这一链条的联系,但是如果精细化来说,不妨用这样的思想来做发信者和收信者之间的平衡。
6. 在做分类以及评分预测时,不妨针对业务的长尾现象来做模型改造和模型选择,因为只有小部分用户是必须要牢牢抓住的用户,从这一点来说,逻辑回归确实不合适。
7. 我扫了下作者2015的展望,我很期待,尤其是ADMM的应用,目测我还没见过身边有人搞过,期待作者的尝试结果。但是特征哈希这个事儿真的不靠谱,因为如果决心做特征工程,那么特征哈希这个事情就显得太远离业务本身而注重于泛化了,这样子不适合逻辑回归+特征工程这样的战略。
8. 从数据和算法出发的产品形态改进。这个没什么好说的了,其实我一直认为婚恋网站的出路不在于算法和数据本身,而是能不能从数据跳出来对产品提出一些创意性改进从而产生的产品模式和收费模式的变革。去年我和很多VC聊过现在国内资本市场对于婚恋市场的看法,大家无一例外都是摇头,婚恋市场太久没人去变革过了,至今的几大网站仍然是十年前的玩法。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
一、问题:为什么 ID 会"断号" 很多刚接触 MySQL 的同学都会有一个困惑:表里的主键 ID 是自增的,删了中间几行数据之后,ID 变 ...
2026-10-22一、问题场景:为什么会重复 JOIN 同一个子查询 在写复杂 SQL 时,经常遇到这种需求:同一张表或同一个聚合子查询,要和主表关联 ...
2026-10-22人力资源专员是HR体系的执行入口。招聘信息发布、简历初筛、面试安排、考勤汇总、入离职手续、劳动合同与档案管理,大多由这个岗 ...
2026-10-22人力资源经理问“必学技巧”,真正要解决的不是知识清单不够长,而是时间有限、业务催得紧,学完却用不上。更有效的路径是:先用 ...
2026-10-22内容营销岗位的核心任务,不是“把文案写得更漂亮”,而是围绕目标受众,用持续的内容供给影响认知、推动转化并沉淀复购。它至少 ...
2026-10-22理财经理培训课程很多,难的是判断“先学什么、后学什么、学完能做什么”。与其按课程名称罗列,不如先看岗位任务:客户分层与维 ...
2026-10-22理财经理的知识结构,可以先用一句话概括:合规与产品知识决定“不出错”,客户经营与资产配置决定“够不够专业”,市场研判与数 ...
2026-10-22经济学背景做数据分析,优势不在工具,而在问题意识:供需如何相互作用、成本与收益如何权衡、变量之间是相关还是因果。真正的缺 ...
2026-10-22需要,但要把“需要”理解准确。经济学本身就在处理数据:GDP、物价、就业、企业营收、问卷调研,都是经济分析的原料。真正的区 ...
2026-10-22经济学分析能力不是单一技能,它至少由三层构成:把现实问题转成可检验假设的理论框架能力、用数据与统计方法验证假设的工具能力 ...
2026-10-22金融分析师的知识提升,先补的不是更多模型,而是让结论可复核的底层能力。按任务顺序,大致是四层:财务与业务理解、指标口径管 ...
2026-10-22金融分析师的“通用技能”,指换到不同机构、不同行业组仍用得上的底层能力,而非某家公司内部系统的操作经验。按任务拆,日常要 ...
2026-10-22先给结论:数据分析证书不是金融分析师的准入条件,招聘方也不会因为一张证书就直接判断你能做分析。要不要考,取决于你当前任务 ...
2026-10-22金融分析师的核心技能,不是“会看K线”或“会讲宏观”,而是能把一家公司、一个行业或一类资产,转化为可核查的数据判断与书面 ...
2026-10-22产品经理的知识提升,不是把需求文档、原型、SQL、数据分析、项目管理都学一遍,而是先对准目标岗位的真实任务,找出自己最缺的 ...
2026-10-22产品专员提升工作知识,最有效的方式不是先囤课程,而是围绕日常交付的四件事来补:需求调研与优先级判断、原型与PRD表达、竞品 ...
2026-10-22产品运营专员提升个人能力,常见误区是先把Excel、SQL、Python列成一张学习清单,然后从第一个工具开始学。更有效的做法是先回答 ...
2026-10-22产品运营的能力提升,最怕从“课程目录”出发:今天学增长模型,明天背SQL语法,学完却说不清自己负责的功能为什么激活率低。更 ...
2026-10-22产品经理的技能和影响力不是两条分开的赛道。技能决定你能不能把问题分析清楚、把方案设计对;影响力决定你的判断能否被团队接受 ...
2026-10-22产品经理要学的数据分析能力,不是“会写SQL”或“会用BI工具”这么简单。更准确地说,是围绕需求评估、功能迭代、指标监控、实 ...
2026-10-22