一种基于混合推荐算法的歌曲推荐方法
技术领域
本发明属于推荐技术领域,具体属于一种基于混合推荐算法的歌曲推荐方法。
背景技术
传统的推荐歌曲的方法,为获取用户所听歌曲的类型、所属专辑、所属歌手,并向用户推荐相应歌曲类型、歌曲所属专辑或所属歌手的歌曲,而当前音乐推荐方法大多基于协同过滤,该方法有以下不足之处在于,通过协同过滤算法实现的音乐推荐方法,无法及时的反映用户的偏好变化,且歌曲相关性更新较慢,歌曲相关性容易受噪声数据的影响。
发明内容
本发明旨在解决以上现有技术的问题。提出了一种提高推荐准确度的基于混合推荐算法的歌曲推荐方法。
本发明的技术方案如下:
一种基于混合推荐算法的歌曲推荐方法,其包括以下步骤:
用户进行播放歌曲请求,获取用户的歌曲播放日志,所述歌曲播放日志包括歌曲来源、歌曲播放时间、歌曲切换时间和歌曲播放次数;得到用户—歌曲评分矩阵,从预设的用户属性项集合中确定出与所述播放歌曲请求的目标属性项,并利用建立的用户—歌曲评分矩阵,为每个用户和每个歌曲构建历史评分记录集合,同时构建用户集合,按照用户的评分歌曲从大到小对歌曲集合中的歌曲排序;按歌曲在用户集合中的顺序,选取一个评分最高的歌曲作为目标歌曲;根据用户—歌曲评分矩阵,计算其余歌曲与目标歌曲的相似度;选取与目标歌曲相似度大于第一设定值的歌曲构建目标歌曲的优先歌曲集;计算目标歌曲与各优先歌曲的历史共同评分差均值,若两个用户历史本身没有共同歌曲,则不做计算;选取共同评分差均值小于第二设定值的歌曲构造最终的相似歌曲集,利用目标歌曲的相似歌曲集对用户—歌曲评分矩阵进行填充;对用户—歌曲评分矩阵中剩下的未填充数据,同样采用相似度阈值法和共同评分差均值来选取最相似歌曲,并利用相似歌曲来对用户—歌曲评分矩阵进行再次填充,进行歌曲的初步推荐;根据所述歌曲播放日志,计算所述歌曲播放日志中每首歌曲的用户偏好度;根据所述歌曲播放日志,计算歌曲播放日志中歌曲与所述歌曲的相似歌曲的总相似度;根据歌曲与所述歌曲的相似歌曲的总相似度,以及所述歌曲的用户偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值;根据所述歌曲与所述歌曲的相似歌曲的匹配值,将所述歌曲的相似歌曲进行排序,以及将排序后的所述歌曲的相似歌曲进行推荐。确定推荐列表,并将所述推荐列表推荐给的用户;若和歌曲初步推荐结果有一半一样则按此推荐,若不一样则选取评分第二高的歌曲作为目标歌曲,重复以上步骤进行填充,直到超过一半相同则推荐歌曲歌单给用户;
所述根据所述歌曲播放日志,计算所述歌曲播放日志每首歌曲的用户偏好度步骤,包括:将各种歌曲来源赋予相应的权重,以及根据歌曲播放时间确定歌曲是否完整播放;根据歌曲来源的权重以及歌曲是否完整播放,计算所述歌曲播放日志中每首歌曲的当日评分;将所述歌曲当日的评分与所述歌曲上一日的总评分合并,获得所述歌曲当日的总评分;根据所述歌曲当日的总评分和所述歌曲的歌曲播放次数,计算所述歌曲播放日志中每首歌曲的用户偏好度。
进一步的,所述构建目标歌曲的优先歌曲集过程如下:
按用户在用户集合中的顺序,选取一个评分最高的歌曲作为目标歌曲;利用用户—网上歌曲评分矩阵,通过Pearson皮尔逊相关系数公式来计算其余歌曲与目标歌曲的相似度;
其中,simu,v表示歌曲u和歌曲v的相似度,Iu,v为歌曲u和歌曲v的共同评分商家集合,Rui、Rvi分别为歌曲u、歌曲v对商家i的评分,分别为歌曲u、歌曲v的平均评分;选取与目标歌曲相似度大于α的歌曲构建目标歌曲的优选邻居歌曲集p_N(u)。
进一步的,所述最相似歌曲的选取过程如下:
计算目标歌曲与各优先歌曲的历史共同评分差均值,计算公式如下:
其中,avg(u,v)为歌曲u和歌曲v的历史共同评分差均值,Iu′,v为目标歌曲u和歌曲v的历史共同评分新闻播报端集合,Rui、Rvi分别为歌曲u、歌曲v对歌曲i的评分;选取共同评分差均值小于β的优先歌曲构造最终的最相似歌曲N(u)。
进一步的,所述根据歌曲来源的权重以及歌曲是否完整播放,计算所述歌曲播放日志中每首歌曲的当日评分步骤,包括:通过公式:snow=listen*weight,计算所述歌曲播放日志中每首歌曲的当日评分,其中,snow为歌曲当日的评分,weight为歌曲来源的权重,listen表示歌曲是否完整播放,当所述歌曲的播放时间不小于所述歌曲真实时长的85%时,认为所述歌曲完整播放,赋予数值1,当所述歌曲的播放时间小于所述歌曲真实时长的85%时,认为这首歌没有完整播放,赋予数值0;完整播放则为1,没有完整播放为0。
进一步的,所述将所述歌曲当日的评分与所述歌曲上一日的总评分累加,获得所述歌曲当日的总评分步骤,包括:通过公式:Score=Snow+Shistory*decay_factor,计算所述歌曲当日的总评分,其中,Score为所听歌曲当日的总评分,Snow为所听歌曲当日的评分,Shistory为所听歌曲上一日的总评分,decay_factor为第一时间衰减因子。
进一步的,所述根据所述歌曲当日的总评分和所述歌曲的歌曲播放次数,计算所述歌曲播放日志中每首歌曲的用户偏好度步骤,包括:
通过公式:计算所述歌曲播放日志中的歌曲的用户偏好度,其中,score为所述歌曲当日的总评分,δ为所述歌曲的热度,δ=log 20(CNT+20),CNT为所述歌曲的歌曲播放次数。
进一步的,所述根据所述歌曲播放日志,计算播放日志中歌曲与所述歌曲的相似歌曲的总相似度步骤,包括:根据歌曲的歌曲切换时间和歌曲播放次数确定所述歌曲的相似歌曲;计算所述歌曲与所述歌曲的相似歌曲当日的相似度;将所述歌曲与所述歌曲的相似歌曲当日的相似度和所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并;
所述根据歌曲切换时间确定关联歌曲步骤,包括:当歌曲切换到下一首歌的歌曲切换时间小于第一阈值时,所述下一首歌曲为所述歌曲的关联歌曲;当所述歌曲的关联歌曲的播放次数等于或大于第二阈值时,所述歌曲的关联歌曲为所述歌曲的相似歌曲;所述计算所述歌曲与和述歌曲的相似歌曲当日的相似度步骤,包括:通过公式:simcur=log20freq,计算所述歌曲与所述歌曲的相似歌曲当日的相似度,其中,simcur为所述歌曲与所述歌曲的相似歌曲当日的相似度,freq为所述歌曲的相似歌曲的播放次数.
进一步的,所述将所述歌曲与所述歌曲的相似歌曲当日的相似度与所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并步骤,包括:通过公式:sim=simcur+simold*factor,将所述歌曲与所述歌曲的相似歌曲当日的相似度与所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并,其中,sim为所述歌曲与所述歌曲的相似歌曲当日的总相似度,simcur为所述歌曲与所述歌曲的相似歌曲当日的相似度,simold为所述歌曲上一日与所述歌曲的相似歌曲的总相似度,factor为第二时间衰减因子;所述根据歌曲与所述歌曲的相似歌曲的总相似度,以及所述歌曲的用户偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值步骤,包括:通过公式:匹配值=总相似度*偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值,其中,匹配值为所述歌曲与所述歌曲的相似歌曲的匹配值,总相似度为所述歌曲与所述歌曲的相似歌曲的总相似度,偏好度为所述歌曲的用户偏好度。
本发明的有益效果
本发明一方面获取每一个用户的歌曲播放日志,根据歌曲播放日志中记录的用户的听歌行为信息:用户ID、歌曲ID、歌曲来源、歌曲播放时间、歌曲切换时间和歌曲播放次数等,分析用户的偏好,统计出歌曲播放日志中相似的歌曲,结合用户所听歌曲的偏好度和所听歌曲与其相似歌曲的相似度,建立属于用户自己的个性化推荐歌曲集;且根据后期用户听歌行为随时间的改变(例如:已听过的歌再听或不听;新加入一些歌曲等。),及时统计用户歌曲的偏好度,以及歌曲相似度的改变,进而及时更新用户的个性化推荐歌曲集,进而达到提高歌曲推荐准确度的目的。另一方面,加入了历史共同评分差均值来筛选邻居,去掉了与目标项评分差异较大的邻居,使相似邻居集的选取更加准确,有效避免了把一个用户讨厌的歌曲当成另一个用户喜欢的歌曲来进行推荐,使推荐更加准确。本发明先从用户的角度做第一步填充,再从歌曲本身的角度做第二步填充,使稀疏的用户—歌曲评分矩阵的填充更加完整。同时每一步填充都采用动态填充方式,按评分个数的大小来依次选取目标歌曲进行填充,每一次做填充的矩阵都是对上一个目标填充完成后的矩阵。动态填充使歌曲的共同评分数增多,相似度计算更加准确,因此对稀疏的用户—歌曲评分矩阵的填充也更加准确,最后给出的推荐列表更加符合用户的心意,提高了用户对推荐系统的粘性,并且当两者评判结果不一样时,则再次选取评分值第二高的歌曲作为目标歌曲,重复以上步骤进行填充,得到推荐歌曲,这样就避免了评分最高歌曲的局限性,推荐第二高的歌曲,使得推荐更加人性化。
附图说明
图1是本发明提供优选实施例基于混合推荐算法的歌曲推荐方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
如图1所示为一种基于混合推荐算法的歌曲推荐方法,其包括以下步骤:
用户进行播放歌曲请求,获取用户的歌曲播放日志,所述歌曲播放日志包括歌曲来源、歌曲播放时间、歌曲切换时间和歌曲播放次数;得到用户—歌曲评分矩阵,从预设的用户属性项集合中确定出与所述播放歌曲请求的目标属性项,并利用建立的用户—歌曲评分矩阵,为每个用户和每个歌曲构建历史评分记录集合,同时构建用户集合,按照用户的评分歌曲从大到小对歌曲集合中的歌曲排序;按歌曲在用户集合中的顺序,选取一个评分最高的歌曲作为目标歌曲;根据用户—歌曲评分矩阵,计算其余歌曲与目标歌曲的相似度;选取与目标歌曲相似度大于第一设定值的歌曲构建目标歌曲的优先歌曲集;计算目标歌曲与各优先歌曲的历史共同评分差均值,若两个用户历史本身没有共同歌曲,则不做计算;选取共同评分差均值小于第二设定值的歌曲构造最终的相似歌曲集,利用目标歌曲的相似歌曲集对用户—歌曲评分矩阵进行填充;对用户—歌曲评分矩阵中剩下的未填充数据,同样采用相似度阈值法和共同评分差均值来选取最相似歌曲,并利用相似歌曲来对用户—歌曲评分矩阵进行再次填充,进行歌曲的初步推荐;根据所述歌曲播放日志,计算所述歌曲播放日志中每首歌曲的用户偏好度;根据所述歌曲播放日志,计算歌曲播放日志中歌曲与所述歌曲的相似歌曲的总相似度;根据歌曲与所述歌曲的相似歌曲的总相似度,以及所述歌曲的用户偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值;根据所述歌曲与所述歌曲的相似歌曲的匹配值,将所述歌曲的相似歌曲进行排序,以及将排序后的所述歌曲的相似歌曲进行推荐。确定推荐列表,并将所述推荐列表推荐给的用户;若和歌曲初步推荐结果有一半一样则按此推荐,若不一样则选取评分第二高的歌曲作为目标歌曲,重复以上步骤进行填充,直到超过一半相同则推荐歌曲歌单给用户;
所述根据所述歌曲播放日志,计算所述歌曲播放日志每首歌曲的用户偏好度步骤,包括:将各种歌曲来源赋予相应的权重,以及根据歌曲播放时间确定歌曲是否完整播放;根据歌曲来源的权重以及歌曲是否完整播放,计算所述歌曲播放日志中每首歌曲的当日评分;将所述歌曲当日的评分与所述歌曲上一日的总评分合并,获得所述歌曲当日的总评分;根据所述歌曲当日的总评分和所述歌曲的歌曲播放次数,计算所述歌曲播放日志中每首歌曲的用户偏好度。
优选的,所述构建目标歌曲的优先歌曲集过程如下:
按用户在用户集合中的顺序,选取一个评分最高的歌曲作为目标歌曲;利用用户—网上歌曲评分矩阵,通过Pearson皮尔逊相关系数公式来计算其余歌曲与目标歌曲的相似度;
其中,simu,v表示歌曲u和歌曲v的相似度,Iu,v为歌曲u和歌曲v的共同评分商家集合,Rui、Rvi分别为歌曲u、歌曲v对商家i的评分,分别为歌曲u、歌曲v的平均评分;选取与目标歌曲相似度大于α的歌曲构建目标歌曲的优选邻居歌曲集p_N(u)。
优选的,所述最相似歌曲的选取过程如下:
计算目标歌曲与各优先歌曲的历史共同评分差均值,计算公式如下:
其中,avg(u,v)为歌曲u和歌曲v的历史共同评分差均值,Iu′,v为目标歌曲u和歌曲v的历史共同评分新闻播报端集合,Rui、Rvi分别为歌曲u、歌曲v对歌曲i的评分;选取共同评分差均值小于β的优先歌曲构造最终的最相似歌曲N(u)。
优选的,所述根据歌曲来源的权重以及歌曲是否完整播放,计算所述歌曲播放日志中每首歌曲的当日评分步骤,包括:通过公式:snow=listen*weight,计算所述歌曲播放日志中每首歌曲的当日评分,其中,snow为歌曲当日的评分,weight为歌曲来源的权重,listen表示歌曲是否完整播放,当所述歌曲的播放时间不小于所述歌曲真实时长的85%时,认为所述歌曲完整播放,赋予数值1,当所述歌曲的播放时间小于所述歌曲真实时长的85%时,认为这首歌没有完整播放,赋予数值0;完整播放则为1,没有完整播放为0。
优选的,所述将所述歌曲当日的评分与所述歌曲上一日的总评分累加,获得所述歌曲当日的总评分步骤,包括:通过公式:Score=Snow+Shistory*decay_factor,计算所述歌曲当日的总评分,其中,Score为所听歌曲当日的总评分,Snow为所听歌曲当日的评分,Shistory为所听歌曲上一日的总评分,decay_factor为第一时间衰减因子。
优选的,所述根据所述歌曲当日的总评分和所述歌曲的歌曲播放次数,计算所述歌曲播放日志中每首歌曲的用户偏好度步骤,包括:
通过公式:计算所述歌曲播放日志中的歌曲的用户偏好度,其中,score为所述歌曲当日的总评分,δ为所述歌曲的热度,δ=log 20(CNT+20),CNT为所述歌曲的歌曲播放次数。
优选的,所述根据所述歌曲播放日志,计算播放日志中歌曲与所述歌曲的相似歌曲的总相似度步骤,包括:根据歌曲的歌曲切换时间和歌曲播放次数确定所述歌曲的相似歌曲;计算所述歌曲与所述歌曲的相似歌曲当日的相似度;将所述歌曲与所述歌曲的相似歌曲当日的相似度和所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并;
所述根据歌曲切换时间确定关联歌曲步骤,包括:当歌曲切换到下一首歌的歌曲切换时间小于第一阈值时,所述下一首歌曲为所述歌曲的关联歌曲;当所述歌曲的关联歌曲的播放次数等于或大于第二阈值时,所述歌曲的关联歌曲为所述歌曲的相似歌曲;所述计算所述歌曲与和述歌曲的相似歌曲当日的相似度步骤,包括:通过公式:simcur=log 20freq,计算所述歌曲与所述歌曲的相似歌曲当日的相似度,其中,simcur为所述歌曲与所述歌曲的相似歌曲当日的相似度,freq为所述歌曲的相似歌曲的播放次数.
优选的,所述将所述歌曲与所述歌曲的相似歌曲当日的相似度与所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并步骤,包括:通过公式:sim=simcur+simold*factor,将所述歌曲与所述歌曲的相似歌曲当日的相似度与所述歌曲上一日与所述歌曲的相似歌曲的总相似度合并,其中,sim为所述歌曲与所述歌曲的相似歌曲当日的总相似度,simcur为所述歌曲与所述歌曲的相似歌曲当日的相似度,simold为所述歌曲上一日与所述歌曲的相似歌曲的总相似度,factor为第二时间衰减因子;所述根据歌曲与所述歌曲的相似歌曲的总相似度,以及所述歌曲的用户偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值步骤,包括:通过公式:匹配值=总相似度*偏好度,计算所述歌曲与所述歌曲的相似歌曲的匹配值,其中,匹配值为所述歌曲与所述歌曲的相似歌曲的匹配值,总相似度为所述歌曲与所述歌曲的相似歌曲的总相似度,偏好度为所述歌曲的用户偏好度。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。