基于用户画像的商品推荐挑战赛赛题解析

这个赛题涉及的是用户画像建模领域,特征比较多,但是都很简单,并且初步观察可以分为两类特征,用户基本信息特征和用户行为序列信息,所以我在后期做的时候是分别对待的,对于用户基本信息,由于特征间的关联度不是很大,直接用传统机器学习一套特征转换(归一化,标签化)转换即可,对于行为序列信息,由于数据都经过平台脱敏处理,可以构建一个时序预测模型,最后通过模型调参,融合得到预测结果

模型训练

LGB+XGB+MLP

值得注意的是,这个比赛的训练集有30万条,还算比较多的,LGB和XGB的模型的综合能力很强,尤其是LGB,简单又快速,跑个模型几秒钟的事情,结合LGB和XGB,gai可以训练出多个学习器,最后做一下融合,可以得到一个0.6+的分数,但是这一类方法有个局限,就是无法学习序列信息中前后依赖的关系,怎么去形容,比如一位母亲在某宝买东西,他想买一辆质量好的婴儿车,然后多次进行了浏览,加入购物车,收藏等行为,然后又看了一些保健品,那么系统就会学习出这位母亲可能最近想给自己的小baby买点东西,那么系统可能就会给他推荐近期销量比较好的奶粉,这就是对一组对行为序列的描述

但是这种方法并没有学习序列之间数据的相关性,存在一定局限,同理,搭建一个浅层的MLP网络,最后加一个sigmoid层也可以完成预测任务,但是由于MLP比较简单粗暴,参数也多,效果并没有达到理想中那样好,在这里介绍下MLP,下面是它的结构

在这里插入图片描述
上图是一个具有一个单隐藏层的MLP,内部含有五个隐藏单元,输入层是不需要计算的,就这样不同层之间通过全连接堆叠在一起,最后一层,可以看做是线性的预测器,比如做二分类问题,最后就接一个sigmoid,多分类就接一个softmax层,试了下效果一般

TextCNN

TextCNN是我在学习《阿里云天池大赛赛题解析》最后一个关于恶意病毒分类了解到的一个模型,其实就是CNN在文本处理上的应用,通过将使用word2Vec,FastText,Onehot等方式embedding后的词向量通过预先设定好的卷积层,池化层,不断的提取重要特征
在这里插入图片描述
我们的词语,当然在比赛中,这些词语用一串字符表示,并且,这一步一般我们都会预训练好,我们会用一个vocab.txt保存我们的词表文件,这一步的词向量通过embedding层后,会进入到第二层卷积层和池化层,最后使用一个(或多层)全连接层输出
在这里插入图片描述
这版是网上别人写的pytorch,和我自己用keras实现的,我试了下第一次跑起来效果都不是很理想,和lgb的版本差不多,在这里对于CNN来说,CNN其实更多用在计算机视觉领域,对于图像数据,每张图像的像素可以达到百万级,如果简单堆MLP去训练,因为MLP是无结构的网络,大数据下他的参数开销会很大,而CNN则是结构化后的网络结构,能够记住一些位置信息,较少的参数就能学习到有用的数据

BiGRU + Attention

LSTM其实是我用的第一个神经网络,是一种基于门控机制的循环神经网络,出现的也比较早,解决的是传统循环神经网络对于长序列数据学习过程中的梯度爆炸问题,刚开始用的时候由于一些代码是参考网上文档设计,效果和LGB差别不大,后期经过调参,可以达到0.67的分数,这个分数在一个月前挺高,后期通过调参,大概0.68的上下,GRU是LSTM的一个变种,直观来说就是精简了LSTM中的单元数,将原先的模型的训练过程速度可能会快一些,BiGRU则是双向编码的GRU,意思就是用两层GRU分别按照相反的方向对序列进行学习,最后将结果综合起来,来看下二者的对比
在这里插入图片描述Attention机制是一种思想,例如模型想要学习一段序列,只需要记住相对重要的一串信息即可
在这里插入图片描述

我的第一版网络设计的很简单,如下所示,tfkeras实现的basemodel比较精简,精度也还行
在这里插入图片描述

其他模型

至于其他的模型,就有很多了,在词向量提取方面有着诸如的bert,elmo等更新的方法,模型网络架构上有transformer等等,还有类似TextRNN,DPCNN都可以试试,但这几种模型虽然搭起来了,但是在复赛数据集上分数都不太高…,参数还在调整,其实我也看了一些文章和一些相似赛题的top方案,最好的方法还是需要去充分利用赛题发布的数据,结合卷积,注意力,循环网络多个子模型,深入挖掘特征特性,然后融合,也可以用一些推荐系统方法里的特征交叉方式来提升特征的质量,后面我会梳理一下,有时间会再记录一次复赛的思路

模型架构图

这是我的模型架构图,虽然最后一步都说模型融合好,其实我最后提交的只有BIGRU模型的结果,也是f1值唯一上了0.7的分数,我想如果其他模型能调好,融合下分数会更高一点吧,也许…,值得注意的是,我觉得调参真的很重要,分数如果上不去,我觉得起来就是两个主要问题,特征没做好,参数没花时间调,调参的方法我也学了几种,这是我的模型的架构
在这里插入图片描述

总结

想学习深度学习方向的朋友,强烈推荐李沐老师的动手学习深度学习这本书和他的b站视频

在比赛时,难免需要有用到用GPU去跑模型,但是GPU并不是人人都能用得起的,如果身边没啥硬件,在这里我想推荐几个可以免费可用算力的网站,谷歌Colab,百度飞桨AIStudio,Kaggle notebook,其中谷歌colab有一个15G的云盘可以供你上传代码,GPU下跑真的快的一逼,但是缺点是偶尔不稳定,需要网页挂在那,花点钱升级成Colab Pro可能会稳一点,但我觉得没必要,基本版的够用了,另外两个网站因为本身是竞赛网站,提供的资源也足够,也有免费服务器,可以去试一试,还有就是对于每次的结果,最好一定要记录下来,哪怕提升的很微小,都要控制好代码版本,打比赛的过程也是学习和自我认知不足的过程,在这个过程中,会为了分数的增长而欣喜,也会为了分数一直上不去而失落,比赛么,打的好就接着打完呗,打的好就有奖品和荣誉,打的不好也别灰心,纯当学习

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于用户画像的电影推荐系统是指利用用户的个人信息、兴趣爱好等特征来为用户推荐适合其口味的电影。Django是一个高效的Web应用开发框架,可以用于构建这样的推荐系统。 首先,我们需要建立用户画像模型。通过用户的注册信息、浏览记录、评分等数据,我们可以对用户的偏好进行分析,包括电影类型、导演、演员、评分等特征。然后,我们可以使用Django框架来构建用户画像模型,并将用户的数据存储在数据库中。 接下来,我们需要建立电影信息模型。这个模型可以包括电影的基本信息、类型、评分、导演、演员等特征。我们可以利用Django框架来构建这个电影信息模型,并将电影数据存储在数据库中。 然后,我们可以使用机器学习算法来匹配用户画像和电影信息,从而为用户推荐合适的电影。我们可以使用Django框架来构建推荐系统的算法模型,并通过用户的个人画像特征来实现个性化的电影推荐。 最后,我们可以利用Django框架来构建用户界面,使用户可以通过Web应用来进行电影推荐。用户可以通过输入自己的个人信息,系统可以根据用户的画像特征为其推荐适合的电影。同时,用户可以对推荐的电影进行浏览、评分等操作,系统可以根据用户的反馈不断优化推荐结果。 综上所述,基于用户画像的电影推荐系统可以通过Django框架来构建用户画像模型、电影信息模型、推荐算法模型和用户界面,从而实现个性化的电影推荐服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习推荐算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值