当前位置: 首页 > 科技观察

1分钟看懂相似度推荐

时间:2023-03-13 20:17:56 科技观察

前几天讨论的“协同过滤(CollaborativeFiltering)”和“基于内容的推荐(Content-basedRecommendation)”要分析用户的历史行为数据(比如电影点击数据、职位浏览数据等),针对不同用户做出个性化推荐。如果系统没有用户的历史行为数据积累,如何实现推荐?今天,我就深入浅出的说说推荐算法中的“相似度推荐”。什么是“相似度推荐”?答:对于新用户A,没有ta的历史行为数据。在ta点击item-X的场景下,可以将与item-X最相似的item集合推荐给新用户A,问题转化为如何用通用的方式表达item之间的相似度。还是以电影推荐为例,新用户A进入《我不是潘金莲》的电影详情页,如何向A推荐一部电影?先看二维空间中的N点,如何推荐最近的点?答:可以用二维空间中,点与点之间的距离表示点与点之间的距离。对于ensemble中任意点M(xi,yi),它到点N(x1,y1)的距离:distance=(x1-xi)^2+(y1-yi)^2所以,只要计算所有点之间的距离point和N可以计算出离它最近的三个点。看三维空间中的N点,如何推荐最近的点?答:可以用三维空间中点与点之间的距离来表示点与点之间的距离。对于集合中的任意点M(xi,yi,zi),它到点N(x1,y1,z1)的距离:distance=(x1-xi)^2+(y1-yi)^2+(z1-zi)^2所以只要计算出ensemble中所有点与N的距离,就可以计算出离它最近的3个点。循序渐进,对于一部电影《我不是潘金莲》,假设它有10个属性,可以看作是十维空间中的一个点:N《我不是潘金莲》点{导演:冯小刚,女主:范冰冰,男主:郭涛女配:张嘉译男配:大鹏类型:剧情地区:中国大陆语言:国语日期:2016片长:140}对于电影集里的任何一部电影,到点N《我不是潘金莲》的距离可以是计算。2D和3D中的点可以通过直线距离计算,10维空间中两点之间的距离{导演、女主、男主、女主、男主、类型、地区、语言、日期、片长},需要重新定义一个距离函数,例如:distance=f1(导演)+f2(女主角)+...+f10(片长),这个距离,通俗解释,就是各个维度的贡献点之和.得分可以定义如下:f1(director){如果两部电影的导演相同,则得分1;导演不同,打0分;}比如10维空间,还有一个点M《芳华》{导演:冯小刚女主:苗苗男主:黄轩女配:NULL男配角色:NULL类型:剧情地区:中国大陆语言:国语日期:2017时长:140距离代入距离计算公式:距离=f1(导演)+f2(女主)+...+f10(片长)=1+0+...+1=5,即:导演、类型、地区、语言、电影相同长度得1分,其他维度不同得0分。通过遍历电影集合中的10w部电影,可以找到距离N《我不是潘金莲》点最近的3部电影。当用户点击《我不是潘金莲》的详情页时,可以直接推荐距离最近的3部电影。相似度推荐的原理大致如上。需要说明的是:由于没有用户历史行为的积累,不是个性化推荐,所以所有用户的推荐结果都是一样的。一般来说,距离公式确实是线性的。一般来说,每个维度的权重不同的线性公式,以及维度的权重,都可以通过机器学习来训练生成相似度推荐。我希望这1分钟对每个人都有收获。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文