推荐算法是一个很有意思的人工智能(artificial intelligence)。想想看,计算机能够根据大数据较为精确地了解人们的喜好、预测可能的结果,那如果输入人类的表情、内心与行为方式给机器人,它是不是也就能像人一样进行思考和对话呢?目前的科技已部分地完成了这种可能。下面想介绍下我个人对推荐算法的浅薄之见,也是一个深入学习、认真思考的开篇。
推荐算法的Base可以分三类:用户性质、对象性质、用户与对象的交互过程。用网上的话来说,就是以人为本、以物为本和协同过滤(即“联动”)。这三类算法并不会孤立存在,一般会交错切换或者加权共生,意思就是会综合起来使用或者在不同场景使用不同方法。我把它们单一的存在,称为“一度推荐”;综合在一起时,称为“二度推荐”。
说说“一度推荐”。
第一类叫基于用户性质的推荐,可以说是用户与用户的交互过程,具体来说,就是根据用户的label、喜好等个性来建立一个“同好会”,同好会也有分层,低层的只对应一个关键字词(tag),高层的会对应多个tag,故每个用户会有N个同好会,越高层联系越紧密。在推荐的时候,根据分层高低来进行前后排序。说白了,高层产生于低层,低层只是质变之前的量变,可以不作他用。
第二类叫基于对象性质的推荐,可以说是对象与对象的交互过程,根据对象(产品/内容)的本身相似度进行同类推荐,这就包括作用、场景、品牌、价格、目标用户、label等tag,在用户搜索浏览某些tag时,系统会据此来进行相应推荐,推荐排序可以是以加权算法计算的相似度高低。例如,A与B-Z均有关联,但要做推荐,那么简化版的计算公式为相似度=tag1*权重1+tag2*权重2+...+tagN*权重N,所得结果按高低排序。
第三类叫用户与对象的交互过程,根据用户显式或隐式的行为,比如搜索、浏览、关注、收藏、分享、下载、评价等加强的行为,或者取关、删除、拉黑、秒关等减弱的行为,还有关系传递(同类用户也看过B、买物品A的人80%的也买了B)。其中,根据用户不同的行为及展现出的喜好的强弱,进行权重的加减。另外我想到的用户二次行为,也要加入到运算中,比如推荐后主动浏览、多次浏览等。除了这些用户行为,系统也可以进行预测型行为来进一步提高推荐准确度,比如消息推送后点开链接、“换一组”的tag等。此类算法有几个经典的,例如余弦相似度、泊松相关系数等,稍后会一一说明。
这里有几种最主要的推荐算法供大家了解,因为小编数学一般,不能很深入了解,故写得较简略。
一、余弦相似度和修正余弦相似度,公式如下:
将向量根据坐标值,绘制到向量空间中,求得他们的夹角,并得出夹角对应的余弦值。余弦值的范围在[-1,1]之间,值越趋近于1,代表夹角越小,两个向量的方向越一致,相似度也越高。
修正余弦相似度是为了加入取关、删除、低评价等影响相似度的用户反向行为,也算是对余弦相似度缺点的修正
二、潜在因子(Latent Factor)算法
用户-潜在因子矩阵Q(用户多个tag的关注喜爱度)和对象-潜在因子矩阵P(对象多个tag的关联包含度),用矩阵表示即为:R=QP,也是值高者胜。
三、Pearson相关系数
是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系,公式如下:
通常情况下通过以下取值范围判断变量的相关强度:
0.8-1.0极强相关
0.6-0.8强相关
0.4-0.6中等程度相关
0.2-0.4弱相关
0.0-0.2极弱相关或无相关
四、其他
除了以上三类以外,还有一种我觉得特别有意思的推荐算法,可以称为互动型的生态圈,也就是UGC和官网的联动推荐。
用户可以自行建立电台、社区等个性化“文件夹”,进行用户之间的相互推荐,这可以应用于电商、娱乐型产品。
具体的方式可以是基于用户之间的关联,推荐同类用户的个人“文件夹”;基于对象之间的关联,推荐含有相同tag的个人“文件夹”,鼓励和引导用户贡献内容,加强社交属性,增强用户归属感和成就感,增加用户黏性,这种知乎就做得很好,虽然不至于主动推荐,但专为用户开放一个入口,可以接触到可能感兴趣的他人“文件夹”。
出现的疑问一:如何避免推荐的单一化?解决方式可以是推荐用户没有加强或减弱行为下的tag,进行热门推荐、换一组形式的tag。在推荐比例上,遵循推荐数量为强关联:中等关联:弱关联=4:2:1,。
出现的疑问二:如何解决用户冷启动的问题?解决方式可以是排行榜、热门推荐等,也可以在最初让用户选择tag和拒绝部分tag,进行初步推荐,在后续用户行为增加后再进行精细化推荐。
以上是从个人兴趣点出发,仅为拙见。我的公众号是:乱入花间化绿叶,是我的生活和成长空间,欢迎关注和。