# 关于推荐系统(Recommender System)推荐引擎的吐槽
大数据的一个最原始的使用似乎就是从推荐系统开始的。尤其是B2C电子商务网站,为了多卖点商品给用户,或者是想让用户多消耗一点内容,当然是值得做的。
但是目前这些现有的推荐系统做得怎么样呢?一个字:矬。
拿亚马逊来说吧,我真想告诉它(假如它是个聪明的AI的话):我喜欢的书是翻译类的计算机编程、数学物理、名家的杂文随笔、婚恋心理等等主题的书。可是它每次都会推荐一些无用的书,并且更糟糕的是,有些书我实际上已经卖过,它还是会给我重复推荐。看上去就像没有记忆力。
看起来,主流的推荐引擎主要是根据物品之间的关联进行推荐。这些物品(商品)的关联从哪里来呢?主要是它们一些属性的聚类(机器学习里的经典算法,譬如那个机器挖掘里Apriori频繁集的概念)。但是这些ML的经典算法都是确定性的!死板,并没有什么AI表现出来。
基于用户的个性化推荐呢?那也不行。极少数情况下,可能推荐我没看过的书同时又是很感兴趣的(这可能说明我的兴趣跟那个用户志同道合),但大多数情况下,都是推荐一些大路货,毫无用处。这可能反映了庸众的趣味?这犹如给一个个的小型兴趣群体贴一个共同的标签,怎么能称得上“个性化”呢?在这个互联网时代,其实就是每个个体展现他(她)独一无二的特性的时代,用户并不希望与其他人雷同,可以有一点相似之处,但不应该坠入雷同。
甚至所谓的用户画像也不算个性化。 用户画像无非是用一些关键词作为tag来标记用户,但是这种tag一般涉及NLP的高级话题(语义空间里的维度向量),实际上难以做好,同时那些关键词其实很平面,在大用户的情况下,很容易又变成了给一个个的小用户群体贴标签。在我看来,这正是大数据系统应该完全避免的地方。
真正的大数据应该为每一个独特的用户个体提供唯一的独特的用户体验,它不应该试图把个体用户归为某一分类,这是后端系统由于CPU计算能力或者是IO容量、或者是磁盘存储容量跟不上,搞的一个投机取巧的办法。
所以,真正的大数据推荐引擎应该怎么做呢?首先,这个系统应该综合所有的知识进行判断,而不应该使用任何局部优化技术。它应该是全局的,通过局部的对比和综合,能够对用户的兴趣空间,和物品的属性满足空间有一个全局的上帝视角(是的,它就像一个全能的AI);有了这些全局的知识,它可以做到对系统内的每个用户做出全局最优的判断(推荐),这让我想到了TCS(理论计算机科学) UTM(通用图灵机)里的Oracle(神谕)概念,不过P与NP的问题到现在还没有解决,这个问题就不深入探讨了。
大数据的一个最原始的使用似乎就是从推荐系统开始的。尤其是B2C电子商务网站,为了多卖点商品给用户,或者是想让用户多消耗一点内容,当然是值得做的。
但是目前这些现有的推荐系统做得怎么样呢?一个字:矬。
拿亚马逊来说吧,我真想告诉它(假如它是个聪明的AI的话):我喜欢的书是翻译类的计算机编程、数学物理、名家的杂文随笔、婚恋心理等等主题的书。可是它每次都会推荐一些无用的书,并且更糟糕的是,有些书我实际上已经卖过,它还是会给我重复推荐。看上去就像没有记忆力。
看起来,主流的推荐引擎主要是根据物品之间的关联进行推荐。这些物品(商品)的关联从哪里来呢?主要是它们一些属性的聚类(机器学习里的经典算法,譬如那个机器挖掘里Apriori频繁集的概念)。但是这些ML的经典算法都是确定性的!死板,并没有什么AI表现出来。
基于用户的个性化推荐呢?那也不行。极少数情况下,可能推荐我没看过的书同时又是很感兴趣的(这可能说明我的兴趣跟那个用户志同道合),但大多数情况下,都是推荐一些大路货,毫无用处。这可能反映了庸众的趣味?这犹如给一个个的小型兴趣群体贴一个共同的标签,怎么能称得上“个性化”呢?在这个互联网时代,其实就是每个个体展现他(她)独一无二的特性的时代,用户并不希望与其他人雷同,可以有一点相似之处,但不应该坠入雷同。
甚至所谓的用户画像也不算个性化。 用户画像无非是用一些关键词作为tag来标记用户,但是这种tag一般涉及NLP的高级话题(语义空间里的维度向量),实际上难以做好,同时那些关键词其实很平面,在大用户的情况下,很容易又变成了给一个个的小用户群体贴标签。在我看来,这正是大数据系统应该完全避免的地方。
真正的大数据应该为每一个独特的用户个体提供唯一的独特的用户体验,它不应该试图把个体用户归为某一分类,这是后端系统由于CPU计算能力或者是IO容量、或者是磁盘存储容量跟不上,搞的一个投机取巧的办法。
所以,真正的大数据推荐引擎应该怎么做呢?首先,这个系统应该综合所有的知识进行判断,而不应该使用任何局部优化技术。它应该是全局的,通过局部的对比和综合,能够对用户的兴趣空间,和物品的属性满足空间有一个全局的上帝视角(是的,它就像一个全能的AI);有了这些全局的知识,它可以做到对系统内的每个用户做出全局最优的判断(推荐),这让我想到了TCS(理论计算机科学) UTM(通用图灵机)里的Oracle(神谕)概念,不过P与NP的问题到现在还没有解决,这个问题就不深入探讨了。