相似性推荐
没有历史数据的支持,对于新用户A,没有他的历史行为数据,在他点击了item-X的场景下,可以将与item-x最相似的item集合推荐给新用户A
问题转化为,如何用一种通用的方法,表达item之间的相似性
仍以电影推荐为例,新用户A进入了《我不是潘金莲》电影详情页,如何对A进行电影推荐?
- 对于一部电影《我不是潘金莲》,假设他有10个属性,则可以把它看作是一个十维空间的点:
点N《我不是潘金莲》
{
导演:冯小刚
女主:范冰冰
男主:郭涛
女配:张嘉译
男配:大鹏
类型:剧情
地区:中国大陆
语言:普通话
日期:2016
片长:140
}
对于二维,三维中的点,可以直接用直线距离计算远近,10维空间{导演,女主,男主,女配,男配,类型,地区,语言,日期,片长}中的两个点的距离,需要重新定义一个距离函数,例如:
distance=f1(导演)+f2(女主)+…+f10(片长)
这个距离。就是每个维度贡献分值的总和
函数可以自定义
分值可以这么定义:
f1(导演)
{
如果两部电影导演相同,得1分;
如果导演不同,得0分;
}
例如,有另一个点M《芳华》
{
导演:冯小刚
女主:苗苗
男主:黄轩
女配:NULL
男配:NULL
类型:剧情
地区:中国大陆
语言:普通话
日期:2017
片长:140
}
要计算M《芳华》与N《我不是潘金莲》的距离
distance=f1(导演)+f2(女主)+…+f10(片长)=1+0+…+1=5
即:导演,类型,地区,语言,片长相同各得1分,其他维度不同得0分
遍历电影全集中的10w部电影,就能找到与点N《我不是潘金莲》最相近的3部电影,当用户点击《我不是潘金莲》的详情页时,直接推荐这3部最相近的电影即可