推荐系统之去重
问题:
在某宝购物时,为啥我买了一件商品之后还给我推荐相同的东西?
近年来,大数据发展得越来越快,然而由于不同人的需求不同以及人的基数过大数据量过高导致推荐系统无法完全正确的模拟人们购物等需求的具体情况,从而使推荐结果大部分只适用于一个个相同特征的群体,而对于个人的商品推荐无法很好地满足其需求。
推荐算法最根本的意义,在于解决信息过载。如果推荐给到用户,是千篇一律的内容,那将毫无意义。解决重复推荐可以从根源上压制,比如“阅后即焚”,当用户看过该条内容后即标记为已读,已读状态的内容不再推荐给该用户。要定义清楚用户产生什么行为才定义为“看过”,是点击详情页就算,还是点开了“查看剩余全文”等行为,需要根据自身业务进行考虑。
以信息流产品为例,有A和B两篇文章:
1)A和B属于列表页和详情页都一致的文章对用户而言只需要看A和B其中一篇就可以。所以,应该展示其中一篇适当的内容给予推荐,这里面的“适当”可以有两个维度:如发文时间(过滤搬运)、发布者信息(如果是新闻机构号权威一般大于个人号)。
2)A和B两篇文章属于列表页相同,但详情页不相同的情况那么用户点击过A文章,短时间内大概率不会再看B文章。因为在用户的视角,他认为A和B是重复的,所以会大概率错过B文章,对于这类情况应该拉开推荐间隔。
3)A和B两篇文章属于列表页不同,但详情页相同的情况需要考虑用户是否有“看过”其中一篇文章。如果看过A文就没必要再推B文;但如果都没有看过,那么可以进行推荐。因为列表页的差异会影响用户行为,一个标题一张封面都会导致用户是否会查看文章,所以这种情况A和B都有推荐的必要性。
第一个层面,关于推荐目标
首先推荐的本质目标是CTR,即点击转化率,这里面包括点击转化率和订单转化率。
以人话来解释就是: 手机的屏幕就那么大,用户也就是会翻前面几页,而如何在百万千万级商品中筛选出来就那么几十个商品来给你展示就是推荐系统要解决的问题。展示给用户哪些商品,用户更有可能去点开看和去掏钱买。往往被忽略的一个点是点开看和掏钱买这两个动作的区别。点开看一下又不会怀孕,但是掏钱买却要剁手的。所以点击转化率和订单转化率的差别悬殊很大。
回到推荐算法层面,它的目标是提高CTR,自然是通过各种算法优化和测试评估来把用户最可能点开的商品展示出来。我们结合一个场景来看,我要买个iPhone,那在买之前我一定会有大量的搜索,比较,甚至加入购物车又反复拿出来放进去,最后终于下单买了。OK,接下来会怎样呢?推荐给你推一本三体,一双阿迪王的球鞋还是一个存储卡(什么?_?iPhone不支持存储扩展)。因为在购买前你产生的各种行为都是跟这个iPhone相关,而其他商品的行为权重微乎其微。而这个时候推荐系统给你推荐了iPhone之后你要打开的概率还是要比打开阿迪王的概率要大的多。你可能要看买了之后它有没有降价。而这就是推荐的目标所在。
第二个层面,误解机器的智能
这个我可能讲不好,就粗浅胡说了。机器现在我们叫智能,AlphaGo下棋很NB吧,各路高手都被秒杀,人类只能以“断网”的手段求得一局平局。再说AlphaGo只计算棋局下一步棋子落在哪儿胜算更大,而在落子这个简单的动作却是deepmind的工程师在帮AlphaGo执棋。如果让AlphaGo能自己想好棋路又能自己真正在各种规格颜色材质的实际棋盘上轻松落子,那就要给它做一个“手和眼”的系统,而这个系统是跟它的大脑经过同样过程才能建立起来的。
往往人们会误解机器,以为机器已经NB到这个程度了,怎么连这样简单的事情都做不了。
机器会对你义正言辞的说: 人类先生/小姐,对不起请不要以人的思维方式来试图揣测机器的计算行为。
机器在某个领域可以是上帝级的而另外一个技能可能连baby都不如。因为是人类以他们的智慧要求它在计算棋局上打怪升级,而没有要求它去从那个棋子罐罐(不知道专业叫啥,暂且叫罐罐)平稳的拿出来一个子气势如虹地落在那个致命的位置上。
第三层面,何为我买过和何为同一个商品
\1. 土豪金iPhone和老土灰的iPhone是不是同一个商品
\2. 16g和128g的iPhone是不是同一个商品
\3. A店iPhone和B店的iPhone是不是同一个商品
\4. iPhone6和iPhone7是不是同一个商品
\5. 华为p9和iPhone7是不是同一个(如果我就是换一个手机,我买了华为p9,你还给我推任何一款手机都是在推重复的商品)
\6. 我是一个黑心老板,总是从华强北的一些淘宝店进一些水货iPhone。推还是不推
第四层面
我买了一个iphone XR后,确定不想再买它了。但是如果你在淘宝中搜索iPhone XR,会发现
1、2、3…足足有15页结果….那怎么能把所有的iPhone X过滤啊?如果只过滤掉你买过的那个宝贝,肯定还可能漏进其他店家卖的卖的iPhone X,如果把所有含iPhone X关键词的宝贝都过滤掉,那有可能误杀掉手机壳或者耳机充电线等等应该推荐的商品
实际上,即使强大如淘宝,他的SKU管理体系也是很混乱的,一类商品很可能放在不同的sku甚至类目下,完全的过滤是很困难的。实际上,有很多算法工程师比如小程在专门通过人工添加规则做相关的工作,但是淘宝有几亿个宝贝,一定有漏网之鱼,就是大家看到的重复推荐的宝贝了…………
对于同一个在人的不同上下文中是一个完全不确定答案,而这仅仅是iPhone这种标品上。放在其他商品或者品类上可能情况更复杂。而机器最难做的事情就是却解决没有确定性和边界的问题。
淘宝举办过好几次算法大赛,某一年是用user behavior history预测下一天用户会买什么东西。最简单的策略就是推荐用户放入过购物车和买过的商品,这个策略的F1值大概是8%。而经过多重特征提取和深度学习得到的模型,F1值也不过是11%。这说明什么问题呢?
- 推荐买过的商品是一个合理的策略。实际上确实有不少用户会重复购买。
- 机器学习算法看似吊炸天,实际上很多时候只能忽悠外行人。尤其是这种粗放式商品推荐算法,不管吹得多玄乎,本质上是不可能得到特别好的结果的,因为即便客服人工推荐也不可能让多数顾客满意。
以上不是我的原创,想看原创,敬请百度。
推荐算法,不管吹得多玄乎,本质上是不可能得到特别好的结果的,因为即便客服人工推荐也不可能让多数顾客满意。
以上不是我的原创,想看原创,敬请百度。