基于大数据个性化音乐推荐算法分析(附代码github地址)

 

github网址:https://github.com/ciecus/music_lgb_recommend_kkbox

欢迎fork我,和我讨论呀~

摘  要音乐推荐算法针对当今时代信息过载的问题为用户推荐音乐的算法。音乐推荐具有物品空间大、用户空间大、物品消费代价小、物品重复使用率高、物品需求量大、物品喜好变化快、社会化程度高等特点。当今音乐推荐算法主要依赖于用户对音乐的操作记录建立用户和音乐的相似性矩阵,进行基于用户的协同过滤推荐或者基于物品的协同过滤;本文在音乐维度和用户维度之外,增加了对操作维度的分析,分析用户对音乐行为的产生的操作源,借此预测用户对音乐的喜好性;对于各个维度特征的筛选采用稳定性选择(Stability Selection)中的随机逻辑回归获得各个特征的分数,并将筛选后的特征通过Light Gradient Boosting Tree(LightGBM)建立模型进行分析。此外本文创新使用数值特征地理进行预测,经验证,使用数值特征进行建模在有效性和鲁棒性上都有稳定的提升,并且该分析方法适用于所有有监督学习的分类学习,具有广泛的应用意义。

关键词:音乐推荐;数值特征;随机逻辑回归模型;LightGBM

Abstract: The music recommendation algorithm recommends the music algorithm for the user in view of the problem of information overload in the modern era. The music recommendation has features such as large item space, large user space, low product cost, high reusability of items, large demand for items, rapid change in item preferences, and high degree of socialization. Today's music recommendation algorithm mainly relies on the user's operation record of music to establish a similarity matrix between user and music, and performs user-based collaborative filtering recommendation or collaborative filtering based on items; this article adds operations to the music dimensions and user dimensions. Dimensional analysis, analysis of the user's operation source for the generation of music behavior, to predict the user's preference for music; for the screening of each dimension feature, the stochastic logistic regression in stability selection (Stability Selection) is used to obtain the score of each feature. The selected features were analyzed using the Light Gradient Boosting Tree (LightGBM) model. In addition, this paper innovatively uses numerical feature geography for forecasting. It is verified that the use of numerical features for modeling has a steady improvement in both effectiveness and robustness, and this analysis method is applicable to all classed learning with supervised learning, with a wide range of Application .

Keywords: Music recommendation; numerical characteristics; stochastic logistic regression model; LightGBM

 

一、前   

 

音乐推荐算法,就是针对音乐自身的内容特征以及用户的听歌行为,为广大用户提供可能符合他们兴趣爱好的歌曲的算法。而基于大数据的个性化音乐推荐算法,能够通过历史数据,别的用户的历史数据分析出潜在的喜好相似性,为用户更准确地挖掘出潜在的喜欢的音乐。

1995年,Ringo[1]算法的开发成就了历史上第一个推荐算法,可以向用户推荐他们喜欢的音乐并预测用户对特定音乐的评分,之后一段时间内,音乐推荐都是基于音乐曲目的基本信息产生,缺乏针对性。国外著名网站Pandora和Last.fm是最早提出音乐个性化推荐的网站。Pandora的音乐推荐算法主要来源于音乐基因工程(music gene)的项目[2],根据这些基因计算歌曲的相似度,给用户推荐基因相似度高的音乐。国内也涌现了一些优秀的音乐推荐网站如豆瓣电台、虾米音乐、网易云音乐等等,根据用户平时推荐给好友的歌曲,听歌行为以及歌曲收录信息,找到“相似的品味者”,更好的做出推荐。

本文针对传统基于用户或者基于物品的协同过滤推荐方法在复杂场景下对用户进行音乐推荐占用内存大计算速度慢等缺点,提出一种基于LightGBM决策树算法的音乐推荐算法,使用相关性分析和稳定性选择中的随机逻辑回归进行特征选择,采用数值特征取代个体特征进行用户对音乐的喜好预测,根据不同的候选集,可以形成不同推荐列表。采用kkbox音乐公司公布在Kaggle比赛平台上的用户、音乐、用户操作信息进行验证,预测准确率高达76%,训练时间9min,优于该比赛第一名用户算法的准确率68.4%。采用的算法模型可拓展性强,计算效率高,占用内存小,可以迁移到其它类型的推荐系统中。

二、推荐算法介绍

 

2.1传统推荐算法

传统的推荐系统方法包括基于内容推荐过滤、基于规则的推荐、协同过滤推荐。

基于内容的过滤推荐根据物品的元数据,计算物品的相似性,然后基于用户的历史行为推荐给用户相似的物品;基于规则的推荐常使用于电子商务系统,大量的交易数据中获取关联规则或者按照时间购买商品的序列模型,进行物品之间的相互推荐;协同过滤包括基于用户的协同过滤和基于物品的协同过滤;基于用户的协同过滤通过分析用户历史行为,计算用户之间相似度,利用用户相似度和用户的历史行为给用户形成推荐列表。基于物品的协同过滤与之类似,分析用户行为计算物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

2.2基于LightGBM决策树模型的推荐算法

决策树算法的发展过程从C3.0(基于信息增益) CART(基于基尼系数) 提升树(AdaBoost) 梯度提升树(GDBT) XGBosot  LightGBM算法。

基于决策树模型的推荐算法具有以下优点:(1)可以并行化训练;(2)能够处理离散连续特征值和类别特征,不用对特征做归一化;(3)能够处理缺失值;(4)可以处理高维特征。

LightGBM(Light Gradient Boosting Machine)是2017年8月微软公司开源的基于决策树算法的分布式梯度提升框架,和之前的提升框架相比有更快的训练效率,更低的内存使用,更高的准确率,支持并行化学习,可以处理大规模数据等优点,可以用于排序,分类和许多其他机器学习任务。[3]

Boosting算法(提升法)指的是迭代算法,核心思想是对训练样本进行k次迭代,每次迭代形成一个弱学习器,然后根据学习误差对分类错误的样本加大训练权重,形成新的带有权重的训练集,训练形成新的弱学习器;最后将这些弱学习器根据结合策略形成一个强学习器,学习过程如图2.1所示:

 

图2.1 Boosting算法学习过程

此外LightGBM利用Histogram的决策树算法,先把连续的浮点特征值离散化为k个整数,构造一个宽度为k的直方图,如图2.2所示,遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,然后根据直方图的离散值,遍历寻找最优的分割点。使用直方图算法因为只保存特征离散化后的值,内存消耗可以降低为原来的1/8左右;此外计算的成本也大大降低,因为预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只用计算k(k为直方的个数),时间复杂度从从O(data*feature)优化到O(k*features)。

 

图2.2 直方图分割算法

和Xgboost采用level-wise策略相比,LightGBM采用更高效Leaf-wise策略(如图2.3所示),每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分类,如此循环,和Level-wise相比,分裂次数相同的情况下,可以降低更多的误差,获得更高的精度。同时LightGBM可以通过最大深度的限制防止过拟合。

https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2017/06/11194110/leaf.png

图2.3   按层次生长策略(左)和按叶子次生长策略(右)

 

并且最新的LightGBM可以自动处理缺失值,可以进一步优化类别特征(Categorical Feature),不再使用类似one-hot coding的分割方式,对于类别数量很多的类别特征采用one-vs-other的切分方式长出的不均衡的树,采用many-vs-many的切分方式,寻找最优分割。<

  • 15
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 50
    评论
很抱歉,我无法直接提供基于Python的个性化电影推荐系统的完整代码。这种系统需要大量的数据预处理、算法实现、模型训练和优化,需要根据具体的需求和数据集进行设计和开发。 不过,我可以提供一些相关的参考资料和建议,希望能对你有所帮助: 1. 推荐算法个性化推荐系统通常使用协同过滤、内容过滤、混合过滤等算法来实现。可以利用Python中的开源库如Scikit-learn、TensorFlow、PyTorch、Keras等实现这些算法。 2. 数据处理:数据预处理是推荐系统的重要环节,它包括数据清洗、数据预处理、数据转换和数据建模等。可以使用Python中的Pandas、NumPy、Matplotlib等库进行数据处理和可视化。 3. 数据集:一个好的数据集是成功实现个性化推荐系统的关键。可以使用公开的开放数据集如MovieLens、Netflix Prize等进行研究和测试。 4. 实现步骤:一个基本的个性化推荐系统通常包括用户数据收集、数据处理、建模、评估和预测等步骤。可以根据这些步骤逐步实现推荐系统。 5. 参考资料:有很多优秀的个性化推荐系统的研究论文和开源实现可供参考,如《Collaborative Filtering for Implicit Feedback Datasets》、《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》等。同时,也可以参考一些Github上的开源项目,如《Movie Recommender System》等。 希望这些建议对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值