
昨天看到同事在朋友圈以及机器学习日报推荐的这篇文章:《佳缘用户推荐系统》,再结合自己之前的几年的推荐系统经验,以及在婚恋网站半年多的经验,来谈谈我眼中的婚恋市场的推荐系统。
如作者所说,佳缘作为第一家也是中国最大的婚恋网站,的确在推荐系统上走了很多的弯路,但也正是这些弯路以及作者的分享精神,才给后来者的我们提供了许多一线的参考价值。我相信任何在今天看来不完善的,甚至有一些可笑的设计,在当时都是有着合理性和必要性的。那么我再回顾自己的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
在 “神经网络与卡尔曼滤波融合” 的理论基础上,Python 凭借其丰富的科学计算库(NumPy、FilterPy)、深度学习框架(PyTorch、T ...
2025-10-23在工业控制、自动驾驶、机器人导航、气象预测等领域,“状态估计” 是核心任务 —— 即从含噪声的观测数据中,精准推断系统的真 ...
2025-10-23在数据分析全流程中,“数据清洗” 恰似烹饪前的食材处理:若食材(数据)腐烂变质、混杂异物(脏数据),即便拥有精湛的烹饪技 ...
2025-10-23在人工智能领域,“大模型” 已成为近年来的热点标签:从参数超 1750 亿的 GPT-3,到万亿级参数的 PaLM,再到多模态大模型 GPT-4 ...
2025-10-22在 MySQL 数据库的日常运维与开发中,“更新数据是否会影响读数据” 是一个高频疑问。这个问题的答案并非简单的 “是” 或 “否 ...
2025-10-22在企业数据分析中,“数据孤岛” 是制约分析深度的核心瓶颈 —— 用户数据散落在注册系统、APP 日志、客服记录中,订单数据分散 ...
2025-10-22在神经网络设计中,“隐藏层个数” 是决定模型能力的关键参数 —— 太少会导致 “欠拟合”(模型无法捕捉复杂数据规律,如用单隐 ...
2025-10-21在特征工程流程中,“单变量筛选” 是承上启下的关键步骤 —— 它通过分析单个特征与目标变量的关联强度,剔除无意义、冗余的特 ...
2025-10-21在数据分析全流程中,“数据读取” 常被误解为 “简单的文件打开”—— 双击 Excel、执行基础 SQL 查询即可完成。但对 CDA(Cert ...
2025-10-21在实际业务数据分析中,我们遇到的大多数数据并非理想的正态分布 —— 电商平台的用户消费金额(少数用户单次消费上万元,多数集 ...
2025-10-20在数字化交互中,用户的每一次操作 —— 从电商平台的 “浏览商品→加入购物车→查看评价→放弃下单”,到内容 APP 的 “点击短 ...
2025-10-20在数据分析的全流程中,“数据采集” 是最基础也最关键的环节 —— 如同烹饪前需备好新鲜食材,若采集的数据不完整、不准确或不 ...
2025-10-20在数据成为新时代“石油”的今天,几乎每个职场人都在焦虑: “为什么别人能用数据驱动决策、升职加薪,而我面对Excel表格却无从 ...
2025-10-18数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15