用TF-IDF算法提升商品关联销售的效果

极应科技

做过个性化推荐的人都有一种感觉,推荐算法给出的结果容易偏向热门商品。对于这个问题无论是网络论坛还是各大文献数据库都没有人做过很深入的研究并提出成熟的解决方案。所以,为了说明这个问题,我们先从一个简单的示例入手。

如上图所示,热门商品Item05购买的人数比较多,一旦有另一款商品的购买人数全部或者大部分都落在Item05购买者内,“先买商品A再买商品Item05”的预测准确性都将比较高,甚至100%。

这种现象的原因在于,关联算法本质上是一种条件概率。当前后两种事件具有包含关系的时候,预测结果的发生将变成大概率事件(即置信度变得很高)。随后,这种预测的准确性相比之前单个事件的预测准确性将得到成倍数的提升。这一点其实从上图的示例中可以很清楚的体会到。

所以,就像上述示例中的规则“Item04->Item05”,从算法层面上看,无论哪个方面(支持度、置信度、提升度)都是可以符合我们的要求。但是,它的推荐项却包含了热门商品:Item05。个性化推荐本来是为了解决商品的马太效应,然而,现在部署了推荐算法后,头部商品在个性化推荐中依然占据了明显的优势。这样的结果显然跟我们做个性化推荐的初衷是违背的。

极应科技

因此,我们希望在现有的推荐算法基础上能够做出一些优化,使得推荐的商品对于合适的顾客而言是投其所好,而不是被大家普遍购买到的热门商品。热门商品,顾客很容易就可以找到并购买,这个不需要我们担心。

基于上述的项目背景,我们想到了自然语言处理领域,用于提取文章关键词的其中一种算法:TF-IDF(Term Frequency–Inverse Document Frequency,词频-逆文档率)。它的计算公式如下所示:

从上面的公式中可以看出,TF-IDF与一个词在一篇文档中的出现次数成正比,与该词在整个语料库(即文章库,包含N多篇文章)中的出现次数成反比。比如一些助词:“的”、“了”、“啦”、“吗”、“呢”。这些词具有两个特点,一是在每一篇文章中都会大量出现,二是无论在什么类型的文章中都会存在。这样的词对于标识任何一篇文章的主题并没有什么意义,它们无法成为所在文章中的关键词。因此,它们的TF-IDF值也是很小的,甚至是负数。

回过头来看我们所要做的在规则项中过滤掉热门商品。对于任何一个进超市购物的顾客来说,我们并不担心他找不到或者买不到热门商品,我们需要关注的是:每个顾客个性的偏好需求是什么。因此,这里的应用场景和自然语言处理中的TF-IDF算法所能解决的问题就可以匹配起来了:与一个商品在某个用户购物篮中出现的次数成正比,与该商品在所有用户N个购物篮中出现的次数成反比。

参考关键词提取公式,在零售行业中的具体做法如下:

首先,抽取一段时间内(比如,一个月)的会员购物明细数据。从实际数据来看,会员的动销SKU数占总体动销SKU数接近90%。

其次,汇总每个会员在一段时间内购买的商品数。

第三,过滤掉购买商品数小于N的会员记录。我们在实际分析中,N取50时,活跃会员的动销SKU数占总体动销SKU数的60%以上,覆盖销售量TOP 100的商品。

第四,对于保留下来的会员消费记录,计算每个会员所购每款商品的TF-IDF值。公式如下:

第五,上述计算将得到每个会员所购每款商品的TF-IDF值,每个会员的商品TF-IDF值按升序排列,结合商品销量排行,确定一个TF-IDF的阈值。小于这个阈值的商品均为热门商品。汇总每个会员购物篮中的热门商品,去重新得到整体的热门商品列表。

最后,在关联算法给出的规则关联项中,过滤掉上述得到的热门商品。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181214G16CJZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券