8557 位酷友已加入
计算机圈子中包含常用的技术文档、源代码、模型、数据集、学习教程、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~
基于大数据个性化音乐推荐算法分析 一、研究目的 音乐推荐算法,就是针对音乐自身的内容特征以及用户的听歌行为,为广大用户提供可能符合他们兴趣爱好的歌曲的算法。而基于大数据的个性化音乐推荐算法,能够通过历史数据,别的用户的历史数据分析出潜在的喜好相似性,为用户更准确地挖掘出潜在的喜欢的音乐。 1995年,Ringo算法的开发成就了历史上第一个推荐算法,可以向用户推荐他们喜欢的音乐并预测用户对特定音乐的评分,之后一段时间内,音乐推荐都是基于音乐曲目的基本信息产生,缺乏针对性。国外著名网站Pandora和Last.fm是最早提出音乐个性化推荐的网站。Pandora的音乐推荐算法主要来源于音乐基因工程(music gene)的项目,根据这些基因计算歌曲的相似度,给用户推荐基因相似度高的音乐。国内也涌现了一些优秀的音乐推荐网站如豆瓣电台、虾米音乐、网易云音乐等等,根据用户平时推荐给好友的歌曲,听歌行为以及歌曲收录信息,找到“相似的品味者”,更好的做出推荐。 本文针对传统基于用户或者基于物品的协同过滤推荐方法在复杂场景下对用户进行音乐推荐占用内存大计算速度慢等缺点,提出一种基于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月微软公司开源的基于决策树算法的分布式梯度提升框架,和之前的提升框架相比有更快的训练效率,更低的内存使用,更高的准确率,支持并行化学习,可以处理大规模数据等优点,可以用于排序,分类和许多其他机器学习任务。 Boosting算法(提升法)指的是迭代算法,核心思想是对训练样本进行k次迭代,每次迭代形成一个弱学习器,然后根据学习误差对分类错误的样本加大训练权重,形成新的带有权重的训练集,训练形成新的弱学习器;最后将这些弱学习器根据结合策略形成一个强学习器。 此外LightGBM利用Histogram的决策树算法,先把连续的浮点特征值离散化为k个整数,构造一个宽度为k的直方图,如图2.2所示,遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,然后根据直方图的离散值,遍历寻找最优的分割点。使用直方图算法因为只保存特征离散化后的值,内存消耗可以降低为原来的1/8左右;此外计算的成本也大大降低,因为预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只用计算k(k为直方的个数),时间复杂度从从O(datafeature)优化到O(kfeatures)。 和Xgboost采用level-wise策略相比,LightGBM采用更高效Leaf-wise策略(如图2.3所示),每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分类,如此循环,和Level-wise相比,分裂次数相同的情况下,可以降低更多的误差,获得更高的精度。同时LightGBM可以通过最大深度的限制防止过拟合。 并且最新的LightGBM可以自动处理缺失值,可以进一步优化类别特征(Categorical Feature),不再使用类似one-hot coding的分割方式,对于类别数量很多的类别特征采用one-vs-other的切分方式长出的不均衡的树,采用many-vs-many的切分方式,寻找最优分割。 三、研究结论 本文采用新的ligthgbm算法对用户是否会在一个月内重复收听某一首歌曲进行预测,以此作为个性化推荐的目标。通过分析数据特征,使用相关性以及稳定性选择等方法选择特征,随后通过对训练输入数值特征,分类特征和全部特征的性能比较,创新性选择用数值特征完全取代分类特征去训练模型进行预测,使得模型在有效性和准确性上都有稳定的提升,对于其余需要再分类特征上建模的实验具有参考意义。 由图二可知,对于同一个用户,设置不同的候选集,可以有不同的推荐列表,支持音乐服务商使用多种推荐方式,也可以综合多个候选集,建立混合推荐的推荐列表。 由图三可知,对于不同用户,因为其它用户特征的不同,对于相同的候选集,也可以生成不同的推荐列表,符合个性化推荐的要求。 四、目录: 一、前言 二、推荐算法介绍 2.1传统推荐算法 2.2基于LightGBM决策树模型的推荐算法 三、数据集以及数据预处理 3.1数据集介绍 3.2数据筛选 3.3数据预处理 四、特征选择以及模型性能比较 4.1音乐维度特征选择 4.2特征性质选择 4.3迭代次数选择 4.4其它模型参数设置 五、实验结果以及分析 5.1二元化预测结果比较 六、结语 注释: 参考文献: 代码地址:https://github.com/EmilyZhangzzy/MusicSelect
系统简介 利用深度学习自然语言处理模型,学习《全唐诗》所录诗歌,自动创作符合要求的绝句诗歌 系统功能 五言诗生成:无输入,自由发挥创作五言诗 七言诗生成:同上 藏头诗生成:根据用户输入的1~4个字,生成对应的藏头五\七言诗 使用了循环神经网络(GRU)和position embedding生成古诗。输入第一个汉字,生成剩余诗句,并且在生成过程中依概率在topk中选字。 效果 五言绝句 玉照上阳宫,清秋凝素风。日寒人未到,云尽雁还来。 七言绝句 月落寒天末风清,夜深吹落向南平。故人世乱唯应见,此夕空流万里情。 藏头诗(小鸟依人、我爱调参) 小径微凉风,鸟来林下生。依稀有相思,人事竟无情。 我有相思物,爱君花下衣。调琴一别曲,参差不见稀。 运行方法 直接python demo.py即可使用预训练模型。main.py用于训练,参数详见代码。 模型介绍 框架模型:GRU+MLP GRU是RNN的一种,用以处理和生成序列。是对LSTM的改进,使用同一门控控制遗忘和记忆,有更高的训练效率。 将GRU每一步得到的结果再通过一个输入为GRU的隐状态维数,输出为字典维度的MLP,并通过softmax归一化为概率。 训练过程 我们认为诗歌的生成过程是auto-regressive的,即每一个字的生成概率仅与前面的内容有关。因此使用前面基于循环神经网络的方法建模。 训练时,我们使用了teacher forcing的方法:即输入首字,并将模型输出与真实的第二字对比计算交叉熵损失;输入真实的第二字,并将模型的输出与真实的第三字对比…… 生成时,通过给定的每句首字(未给定则依首字频率采样),通过如图所示的传统步骤生成诗歌。我们用位置向量来确定句子位置。 汉字和位置嵌入 word embedding 方法 将字视为向量,在高维空间中使不同字的意义能够充分体现 采用在《四库全书》上预训练的embedding,生成300维字向量。《Analogical Reasoning on Chinese Morphological and Semantic Relations》 position embedding 方法: 将字在句中的位置信息也作为特征,充分利用诗歌的格式要求 能够有效的提高诗句的整体性,降低断句错误发生的概率 采用《Attention is All You Need》中的方法,生成100维位置向量,输入时并(concatenate)到word embedding后。 via:https://github.com/Sleepychord/ChinesePoemGeneration
我已经按照以下步骤使用Keras库训练了情感分类器模型。 1.使用Tokenizer对象/类将文本语料库转换为序列 2.使用model.fit()方法建立模型 3.评估这个模型 现在,使用该模型进行评分,我能够将模型保存到文件中并从文件中加载。但是我还没有找到一种方法来将Tokenizer对象保存到文件中。没有这个,我每次需要评分,哪怕一个句子时都必须处理语料库。有没有解决的办法?
我想替换或修改tensorflow中的OP或部分图的梯度。 如果我能在计算中使用现有的梯度,那就更理想了。 在某些方面,这与tf.stop_gradient()所做的相反:我不想在计算梯度时添加一个被忽略的计算,而是想要一个只在计算梯度时使用的计算。 一个简单的例子是,通过将梯度与常数相乘来简单地缩放梯度(但不将正向计算乘以常数)。 另一个例子是将梯度剪切到给定的范围。
我想按多个列对data.frame进行排序。例如,对于下面的data.frame,我想按列z(降序)然后按列b(升序)排序:
我想在excel中打开spss .sav数据文件而不打开spss文件(我不想将spss数据文件转换为excel文件)
推荐圈子