1. 连续特征做离散化的好处?
在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:
连续特征离散化的好处_网络_codestrom04-CSDN博客
1. 离散特征的增加和减少都很容易,易于模型的快速迭代;
2. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
3. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
4. 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
5. 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
6. 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
7. 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
2. 为什么要进行特征选择?特征选择的方法?
特征选择主要有两个功能:1.减少特征数量、降维,使模型泛化能力更强,减少过拟合。2.增强对特征和特征值之间的理。
方法:连续特征离散化达到更好的效果,特征选择的工程方法 - 简书
通常而言,特征选择是指选择获得相应模型和算法最好性能的特征集,工程上常用的方法有以下:
1.计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了.(其实就是计算输出关于输入的导数,如果某个特征很大程度上影响了输出,那么该特征就会比较重要)。
2. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征,另外,记得JMLR'03上有一篇论文介绍了一种基于决策树的特征选择方法,本质上是等价的。当选择到了目标特征之后,再用来训练最终的模型;
3. 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;
4. 训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;
5. 通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型,这个问题有机会可以展开讲。
6. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervisedfeature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。
3.正负样本不平衡怎么解决?
关于正负样本不平衡问题的解决方法收集整理_人工智能_zhuhongde的博客-CSDN博客
采样:上采样和下采样
数据合成:SMOTE算法
加权
一分类/异常检测
4. 优化器有哪些方法
一个框架看懂优化算法之异同 SGD/AdaGrad/Adam - 知乎
5.DCN的优势
玩转企业级Deep&Cross Network模型你只差一步 - 知乎
DCN主要有以下几点贡献:
提出一种新型的交叉网络结构,可以用来提取交叉组合特征,并不需要人为设计的特征工程;
这种网络结构足够简单同时也很有效,可以获得随网络层数增加而增加的多项式阶(polynomial degree)交叉特征;
十分节约内存(依赖于正确地实现),并且易于使用;
实验结果表明,DCN相比于其他模型有更出色的效果,与DNN模型相比,较少的参数却取得了较好的效果。
6. 讲一下DEEPFM
Wide & Deep Learning 模型的核心思想是结合广义线性模型的记忆能力(memorization)和深度前馈神经网络模型的泛化能力(generalization)。利用广义线性模型从历史数据中学习特征相关性,利用深度前馈神经网络揭示隐式特征之间的相互作用。在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。
所谓Wide&Deep就是整个模型结构由wide部分和deep部分共同组成,左边是wide模型,一个逻辑回归,右边是deep模型。假设输入的都是类别特征,deep模型的输入是用one-hot表示的Sparse Features。比如,对手机型号这个特征而言,市面上可能存在数千个手机型号,但是每个用户只对应一个手机型号,那么这个稀疏向量有几千个维度,只有一个位置为1,其余位置为0。将每个特征以embedding表示,embedding是一个低维稠密向量。将高维稀疏特征,映射到对应的embedding上去,将所有特征的embedding水平拼接起来,生成图中的Dense Embeddings,最后通过若干层神经网络得到输出。将wide和deep部分组合起来,就是wide&deep模型。值得一提的是,wide部分用带L1正则化的FTRL优化,deep部分用AdaGrad做优化,两个部分联合训练
但Wide部分需要人工参与的特征工程。因此DEEPFM既希望考虑高/低阶的feature interaction,又想省去额外的特征工程。使用FM取代Wide的LR部分是一个可行的做法。
主要做法如下:
FM Component + Deep Component。FM提取低阶组合特征,Deep提取高阶组合特征。但是和Wide&Deep不同的是,DeepFM是端到端的训练,不需要人工特征工程。
共享feature embedding。FM和Deep共享输入和feature embedding不但使得训练更快,而且使得训练更加准确。相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。
本质的物理意义是说,FM部分负责一阶特征和二阶交叉特征,而DNN部分负责二阶以上的高阶特征交叉。
7.DEEPFM相比于wide&deep的优势
DeepFM借鉴了Google的wide & deep的做法,其本质是:
1.将Wide & Deep 部分的wide部分由 人工特征工程+LR 转换为FM模型,避开了人工特征工程;2. FM模型与deep part共享feature embedding。
优势:
1. 不需要预训练FM得到隐向量
2. 不需要人工特征工程
3. 能同时学习低阶和高阶的组合特征
4. FM模块和Deep模块共享Feature Embedding部分,可以更快的训练,以及更精确的训练学习
异同:
总结下wide&deep和DeepFM的异同:
1)两者的DNN部分模型结构相同;
2)wide&deep需要做特征工程,二阶特征交叉需要靠特征工程来实现,通过wide部分发挥作用;
3)DeepFM完全不需要做特征工程,直接输入原始特征即可,二阶特征交叉靠FM来实现,并且FM和DNN共享相同的embedding;
8. 什么是FNN?
FNN (Factorization-machine supported Neural Network) 的提出,应该算是一次非常不错的尝试:先使用预先训练好的FM,得到隐向量,然后作为DNN的输入来训练模型。缺点在于:受限于FM预训练的效果。
FNN is a FM-initialized feedforward neural network. FNN使用预训练的FM来初始化DNN,然后只有Deep部分,不能学习低阶组合特征。
FNN缺点:
Embedding的参数受FM的影响,不一定准确
预训练阶段增加了计算复杂度,训练效率低
FNN只能学习到高阶的组合特征。模型中没有对低阶特征建模。
网友评论