瞎扯淡 对于推荐系统的拙劣看法

lanzhiheng · 2023年02月24日 · 最后由 niakurniawati 回复于 2023年03月11日 · 805 次阅读

大概是 2022 年中旬,老板就有跟我提过未来想要做推荐系统。近期才想起来要看一些相关的资料,这篇文章便谈谈笔者对推荐系统的一些拙见。原文链接:https://step-by-step.tech/posts/think-about-recommended-system

“高大上”吗?

市面上每当提起推荐系统,大多数情况下都让人联想到,人工智能,数据挖掘,机器学习等领域。脑海中一般都会浮现出 Airbnb,抖音,亚马逊,淘宝,京东这些推荐做得很好的公司/App。这就导致了,每当提起推荐系统,都让人有种高攀不起的感觉。然而,自身产品做得差,推荐再好也没用。

在淘宝/京东的早期,数据量还不够大的时候,人工智能,数据挖掘也没像今天这么炙手可热,难道就没有推荐吗?答案肯定是有的,那个时期也有适用于那个时期的推荐。只不过随着时间的推移,它们的推荐系统渐渐演化成今天这样。抖音的推荐肯定不是一开始就这么精准的,也会有它不精准的时期。

故而,真的没有必要在一开始就把推荐系统想得特别高大上,穷人有穷人的玩法,即便是没有数据科学家的团队依旧能够打造合适自己的推荐系统。笔者以为,只要有数据库,依赖足量的数据就能着手开始构建推荐系统。

推荐即使稍微有些偏差也比没有任何推荐强。 - 《实用推荐系统》

推荐系统的分类

按个性化级别的不同,推荐系统大致可以分为:

  • 非个性化推荐系统:比方说常见的最受欢迎排行榜。排行榜跟所要推荐用户的个人特征无关,商品因为自身的特征而上榜。
  • 半个性化推荐系统:根据用户的特征,年龄,职业,性别等不同维度把用户划分成不同群体,按群体特征来做推荐。
  • 个性化推荐系统:根据用户的特征,用户行为来分析出个别用户的品味,进而针对用户的不同品味来进行推荐。抖音,淘宝,京东这些大厂做得挺好的就是这方面的推荐,需要对大量的用户数据做分析,也是最难实现的一种。

绝大多数技术团队都没办法一上来就实现个性化推荐系统,不仅投入成本大,而且收效甚微。既然如此,何不根据自身的情况,先着手于前面两种呢。只要网站有运营一段时间,就会有定量的用户数据跟商品数据,这个时候运用数据库的聚合知识,便能在一定程度上实现非个性化推荐系统半个性化推荐系统

不同应用的不同推荐做法

推荐系统的实现并不能一概而论,不同类型的应用应该采用不同的策略算法。当然有些算法是通用的,但是策略必定会有所不同。

比方说,淘宝的每一件货品,都有库存的概念,那么淘宝完全可以根据某样货品的销量来构建出一个最受欢迎的排行榜。然而回流,是一个基于拍卖模式的应用,每件货都是独一无二的(换句话说库存都是 1),那么我们就没办法根据销量来构建出一个排行榜,而是得仰仗其他策略。

我们这类平台其实就更适合做专家推荐,平台的品类主要是翡翠玉石,玉石行业的专家一般看一眼就大概能知道某货品的价值,大可以把专家也看中的货品也推荐给用户,这也可以说是一种非个性化推荐了。

用户行为的收集

用户量达到一定规模的网站/App 必定会开始监控用户行为。让用户主动对产品进行打分/评价所能获得的信息毕竟有限,而且许多用户往往会出现“口是心非”的现象。于是监控用户的行为就显得很有必要了,我们可以从侧面分析用户的隐性需求,这是实现推荐系统很重要的一环。

用户对某货品的购买行为,用户对应用的操作行为,这些都可以在日常迭代中利用监控链接将其记录下来,以备不时之需。一方面,可以通过分析这些数据更好地了解用户,从用户的行为分析出用户在使用应用的过程中会遇到什么问题,进而优化交互体验。另一方面,可以借由这些数据,了解用户的“口味”,借此为用户提供更好的推荐,渐渐的也会行成一套平台专属的推荐系统。

虽然大众都不会喜欢自己被“监控”,但请相信我,所有应用厂商总能找到冠冕堂皇的理由来合理化自己的行为。

大致规划

若非对系统及业务性质十分了解,必将难以提出很好的推荐建议。个人以为前期由技术团队牵头来做这个事情可能会比较合适。空降的用户分析师,一般对公司产品/业务不会太了解,提出的方案也不一定适用于当前产品。

回流早期的推荐系统应该会先从非个性化推荐着手,先根据用户的活跃情况对货品的属性做一个权重的划分,并根据权重计算后的值来进行排序。其实这种做法就类似于构建排行榜,简单粗暴,不过作为起步是个不错的选择。

半个性化推荐/个性化推荐都需要依赖大量的用户行为/用户属性,则要编写监控链接来监控用户行为。当有了大量的用户行为数据(预览,搜索,购买)及用户属性(性别,偏爱品类)之后才有可能针对用户口味做一些数据分析。反正就是,先把数据收集起来再说。但不管怎么说,还真不着急引入 AI 的东西,在没有数据支撑的情况下,机器学习能施展的空间也是十分有限的。先把数据库用好一点再说,能解决前期的很多问题了。

瞎扯淡

刚开始接触推荐系统相关的知识,便觉得此领域还是大有可为之处的。不过个人以为不宜操之过急,可以先从简单的推荐入手,而不是一开始就去看很多高大上的技术(脑子也容易转不过来)。

也没必要一步到位,计划用几个月时间来打造一个完美的推荐系统往往更容易失败。前期先从简单的开始,有一个不那么好的推荐也总比完全没有推荐来得好,只要公司不倒闭,就有一辈子的时间来优化它。

我觉得 ruby 圈有个很有意思的特点:务实

基本都愿意从业务出发来考虑问题,不愧为最盛产老板的圈子

之前在我们自己系统里上了一个功能:是商详页的商品关联推荐,当时想着人工 + 机器推荐,后来仔细想了下感觉做机器推荐耗时耗力,直接改成全人工操作,上了发现其实是够用,而且用得还挺好😄

chenzhong 回复

😬 前期真的是最佳策略啊。先人工 后智能。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号