item 特征
item一般是指一个需要打分的个体,搜索中,是等待被搜索的个体;推荐中,是等待被推荐的个体。但是实际的业务中,往往不是这么简单。
- 在item中,我们都用过什么特征?
item的类别
item的统计类特征 - 在统计类特征中,不是只有sum,ratio,average等这样的特征,有的时候我们也会用到平滑,例如在广告推荐中,A广告投放了10次,被点击1次,B广告投放了1000次,被点击了10次,我们并不能说A的ctr是0.1,因为这样会带来很大的偶然性,此时我们可以加入平滑因子。典型的通过设置β因子,通过 β 分布做平滑。
用户特征
- 离散值和连续值的特点
- 离散值和连续值的相互转化
- 离散特征和连续特征
所有的线性模型都喜欢用离散值,因为连续值中的某个异常点会把模型拉偏。
可以通过不同线性模型的叠加去处理不同的值,降低模型对数据的敏感度 - 用户画像
用户的特征挖掘如何捕捉到真正有用的用户特征,这是和业务以及建模问题强相关的。
u2i特征 user to item
常见的 u2i特征
u2i特征和特征交叉的区别
常见的u2i特征偏统计类,例如一个月内某人购买鞋子的数量,而特征交叉是id类特征的交叉。
u2i大部分情况下刻画的是统计特征,特征交叉偏item
数据的存储和使用
在工业界,大规模数据的存储方式与一般使用支持map-reduce的数据库进行存储,比如Hive
一个数据查询的两个阶段:Mapper,Reduce
均匀哈希分桶和数据倾斜
在线数据存储
- 在线和离线的区别?
离线强调数据量的大,在线强调数据serve/inference过程的快 - 为什么要用在线的hbase?
hbase的性能能满足我们的要求,并且不是一个关系型的数据库 - 特征服务平台
- 如何规范的管理特征
- 特征实时化的好处
带来实时信息
对于新的广告的特征快速从不准确变得准确
上下文,统计信息更加准确 - 如何做到特征共用
- 特征的生命周期
- 离线特征和实时特征
Embedding(嵌入)
1.什么是embedding?
一开始,embedding是在word2vec中使用的,在nlp中把一个单词映射成一个向量,随后在Deeplearning中得到使用。但是embedding本质上是一个数学问题而不是机器学习的问题,其实就是一个matrix。
对于数据的两种表示方式
- OneHot representation
无法考虑到不同维度的关系
如国王-男=女王-女
但是在OneHot中是得不到这样的结果的 - Distributed representation
密集向量,是一种分布式的表示。可以克服one-hot representation的上述缺点,基本思路是通过训练将每个词映射成一个固定长度的短向量,所有这些向量就构成一个词向量空间,每一个向量可视为该空间上的一个点。此时向量长度可以自由选择,与词典规模无关,这样相近意义的词就会聚集在一起,可以更精准的表现出近义词之间的关系
2.从FM角度去看embedding(矩阵分解)
首先来看LR
Y=WTXY =W^TXY=WTX
FM模型的表达式:
y=σ(w⋅x+xT⋅W(2)⋅x)y=\sigma(w \cdot x+x^T\cdot W^{(2)}\cdot x)y=σ(w⋅x+xT⋅W(2)⋅x)σ\sigmaσ为sigmoid函数,只看括号内的内容时,与LR不同的是,这里有了二阶特征组合,但是对于系数,当WWW维度很高时,我们如何优雅的学习得到呢?
此时我们可以通过矩阵分解的方法,把WWW分解成低秩矩阵
W(2)=WTWW^{(2)}=W^TWW(2)=WTW
y=σ(w⋅x+xT⋅WT⋅W⋅x)=σ(<w,x>+<W⋅x,W⋅x>)y=\sigma(w\cdot x+x^{T}\cdot W^{T}\cdot W\cdot x)=\sigma(<w,x> +<W\cdot x,W\cdot x> )y=σ(w⋅x+xT⋅WT⋅W⋅x)=σ(<w,x>+<W⋅x,W⋅x>)
例如矩阵W(2)W^{(2)}W(2)的维度一开始可以是10000*10000,此时参数量太多,学习难度大,我们使用低秩矩阵分解成10000⋅1010000\cdot1010000⋅10乘以10⋅1000010\cdot1000010⋅10000的矩阵,就可以解决这样的问题
从神经网络看FM
y=σ(<w,x>+<W⋅x,W⋅x>)y=\sigma(<w,x> +<W\cdot x,W\cdot x> )y=σ(<w,x>+<W⋅x,W⋅x>)
FM作为预训练的结果直接进入神经网络,也即做embedding - 到底什么是Embedding?
从数学上看,是映射,是从一个向量空间RmR^{m}Rm到另一个向量空间RnR^{n}Rn的映射,m和n没有大小关系
从神经网络的角度看,是层与层之间的矩阵
从特征的角度看,是一套特征映射到另一种的表示方式
3.从Word2vec(序列化建模)
4.从DeepLearning角度去看embedding
特征工程
- 简单模型+复杂特征
LR - 复杂模型+简单特征
GBDT DNN…
-
线性模型的特征工程
二阶交叉和高阶交叉
单变量的非线性变换
特征预处理和归一化(梯度:归一化可以提高梯度下降法求解最优解的速度) -
缺失值
直接填充
中位数填充 -
特征选择
方差过滤法:一般认为方差越大,这个特征越有效
相关系数法:通过计算协方差相关系数判断,一般认为相关系数越大越有效,通常是看绝对值
树模型的特征重要性评估 -
特征降维
PCA:降噪时用
SVD:PCA可以看成SVD的特殊情况
LDA:LDA不同之处在于带label -
特征连续化
怎么进行特征连续化?
一般有embedding
embedding和空间变换 -
特征离散化
怎么进行特征离散化?
一般有手动和自动分桶两种方法
手动分桶:
统计每个组的情况,根据对业务的理解或者一些常识性的东西分桶。
统计类分桶
自动分桶:GBDT+LR
先在GBDT上训练一个树模型,然后使用这个树模型对特征进编码,将原始特征xxx对应的叶子结点按照01编码,作为新的特征,叠加到LR模型里再训练一个LR模型
为什么这样做是有效的?
因为GBDT是在函数空间对残差进行连续的逼近,精度很高,但是容易过拟合;进行裁剪后,利用叶子结点编码,有效的把连续特征离散化,因此适合LR -
特征组合
如何进行特征组合?
一般可以凭借对于业务的理解进行组合,也可以通过一些方法自动特征组合,这里是提升模型效果的主要部分。 -
ML Pipeline
其实模型本身,也是把数据进行映射的过程,包含最开始的特征工程和数据分析,其实可以组合成一个完整的pipeline
Sklearn Pipeline
Fit 方法
Transform 方法 -
样本不均衡怎么处理?
1.简单的上下采样(比较粗暴)
2.基于距离的样本构造(SMOTE)
3.基于模型信息类(例如训练时发现某个样本的loss很大,那么下个batch就只学这个样本,相当于融入了boosting的思想)
论文推荐:youtube推荐系统的四篇文章
这篇博客探讨了推荐系统中的用户和Item特征处理,包括item的类别和统计特征、用户画像、数据存储和使用、Embedding的概念与应用,以及特征工程的各种策略,如特征选择、离散化和组合。同时,提到了特征服务平台的重要性以及处理样本不均衡的方法。
1013

被折叠的 条评论
为什么被折叠?



