用户序列建模思路总结

特征工程

特征归一化

特征归一化的目的是为了消除特征之间的量纲影响,使不同指标之间具有可比性,在公众号文章前我分析的赛题(工业蒸汽预测)中我们总结了L2规则的归一化,更加简单的方法还有线性函数归一化和零均值归一化

  • 线性函数归一化,也称为最大值-最小值归一化,将数据映射到[0,1]这个范围内

  • 零均值归一化(Z-Score Normalizationn)将数据映射到均值为0,标准差为1的分布上,公式如下

通过梯度下降求解的模型,归一化会对收敛速度产生影响,因为通常情况下都需要归一化,包括线性回归,逻辑回归,支持向量机等,但是决策树一般不需要进行归一化

类别型特征的转换

类别型特征是指在有限选项中取值的特征,通常为字符串形式,决策树等少数模型能直接处理字符串形式的输入,而逻辑回归,SVM等模型必须将类别特征转换为数值特征后才可以正常工作

  • 序号编码:例如我们的成绩,可以转化为优秀,良好,及格三个等级,就可以分别用3,2,1表示,转换后依然可以保留大小关系

  • 独热编码(one-hot):通常用于处理类别间不具有大小关系的特征,例如血型中,我们的A型血可以表示为(1,0,0,0),B型血可以表示为(0,1,0,0)

  • 二进制编码,和独热编码的思想类似,不同点在于二进制编码中允许多位为1

高维组合特征的处理

我们将一阶离散特征进行两两组合,就形成了高阶组合特征,例如下面,我们有两组特征

  • [“中文”,“英文”,“日文”]
  • [“电影”,“电视剧”,“小说”]

这样就可以组成 3 * 3 = 9 种特征组合,分别如下:

  • [“中文电影”,“中文电视剧”,“中文小说”,“英文电影”,“英文电视剧”,“英文小说”,“日文电影”,“日文电视剧”,“日文小说”]

但是如果是引入了ID类型的特征数据时,通常需要降维,比如一个推荐问题,例如我们在淘宝上买东西,可能有这么一个组合特征{uid,item}代表着用户uid是否点击了过商品item的商品页,但是如果有10000个用户,商品有10000个时候,这样组合后的特征数就会很大,所以就需要进行特征降维,常见的可以采用SVD(奇异值分解)的思想,在降低参数的同时,还可以增加参数的迭代拟合数量,有效的防止过拟合

组合特征

第三种方式的思想是仿造了决策树对特征进行划分的模式,加入我们有多种特征,例如,我们现在有一组用户特征,比如年龄,性别,用户类型(试用期/付费),物品类型(食品/护肤品/电子设备)等,就可以构造一个决策树来进行特征组合

文本表示模型

词袋模型

词袋模型是最基础的文本表示类型,是将文本以词为单位切分开(将每篇文章看作是一袋子的单词,并且忽略每个单词出现的顺序),将文章表示为一个长向量,每一维表示一个单词,该维的权重表示重要程度,常用TF-IDF来计算权重:

TF-IDF(t,d)=TF(t,d)*IDF(t)

其中TF(t,d)为单词t在文本中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所起的重要性,表示为

IDF(t) = log(a / (b + 1))

其中,a为文章总数,b为包含单词t的文章种数

N-gram模型

N-gram模型是一种语言模型,对于其中由N个词组成的语句片段,我们假设第N个词出现与否只与前N-1个词相关,整个语句出现的频率就是这N个词概率的乘积

主题模型

词袋模型和N-gram模型都无法识别两个不同的词或词组是否有相同的主题,而主题模型可以将具有相同主题的词或词组映射到同一个维度上,映射到的这一个维度表示某个主题

词嵌入

词嵌入是一类将词向量化的模型的统称,核心思想是将每个词语都映射到低维空间(K为50-300)的一个稠密向量

One-hot编码

由于本题基本信息字段不多,涉及的又是有关电商平台用户购买预测业务,所以可以去观察一下数据,基本信息中有年龄,性别,所属,包括设备等信息,但其实对数据分析之后,有一些数据列的使用是可选的,在这一步,我当时是画图了,认为有一些列(例如性别)出现了太多的空值,以及设备列种类居多,可能关联不大,所以没有用,但在竞赛中,建议小伙伴有余力还是多试试,我最终选择了onehot编码,然后输入到特征组中,简单介绍一下onehot编码

TF-IDF提取

词频逆向统计是一种用于信息检索和文本挖掘的信息检索技术,是一种针对关键词的统计分析方法,用于评估一个词对一个文件集或者一个语料库的重要程度。一个词的重要程度跟它在文章中出现的次数成正比,跟它在语料库出现的次数成反比。这种计算方式能有效避免常用词对关键词的影响,提高了关键词与文章之间的相关性。关于TF-IDF进一步介绍以及其他特征构建可

FastText/Word2Vec

由于用户行为序列信息是经过平台脱敏处理后的数据,而且每组行为的长度都是不一样的,所以需要将这些序列预处理,这里可以视为一个文本预处理问题,将序列看成一组文本,需要将文本转化为模型能够识别的向量,FastText/Word2Vec两个模型大同小异,都是国外人研发的,是一类比较好上手的文本处理库
这两种模型其实在底层都是基于Skip-grow和cbow两种词向量训练方法,是早期nlp领域的研究理论,举例来说,我们都做过英文阅读理解,那么skip-grow解决的问题就是我们现在有了一个词语,要去推断词语对应的上下文要填什么句子,而cbow解决的就是我们现在有了上下文,需要结合上下文去推断这个词语本身,相比于Word2Vec,FastText的训练速度更快,但是效果二者都基本相差无几,底层都是浅层的神经网络

最后将所有输入向量进行组合一下,就可以准备放到模型里训练了,整个做特征的时间在后期花了我廷多时间,同时特征数据量也挺大的,在embedding的过程中得耐下心来去花费一些实践训练,同时记得保存模型结果在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度学习推荐算法

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

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

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

打赏作者

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

抵扣说明:

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

余额充值