-
正则化方法:
(1)参数添加约束,例如L1、L2范数等
(2)训练集合扩充,例如添加噪声、图片翻转(cv),近义词替换(nlp)
(3)Dropout
(4)Early Stopping
(5)集成化方法,bagging,boosting
参考:
https://blog.csdn.net/liujiandu101/article/details/55103831dropout防止过拟合的原因:
(1)取平均的作用(相当于训练了不同的网络)
(2)减少神经元之间复杂的共适应关系(不依赖于某一些特征,学习更加鲁棒的特征)
参考:
https://blog.csdn.net/hk121/article/details/71081624
2.过拟合和欠拟合解决方法
过拟合(和1答案一样)
欠拟合:
(1)添加新特征(增加模型复杂度)
(2)不使用正则化
参考:
https://blog.csdn.net/willduan1/article/details/53070777
-
怎么做模型融合
(1)投票 (2)取平均(3)boosting (4)bagging (5)stacking -
bagging和boosting区别
(1)bagging有放回抽样,boosting是用全部样本
(2)bagging样本权重系数相同,boosting分错的样本权重大
(3)bagging各分类器权重相同,boosting错误率低的学习器权重大
(4)bagging各分类器可以并行训练,而bagging只能串行生成
(5)bagging是减少方差,boosting是减少偏差
参考:
https://www.cnblogs.com/earendil/p/8872001.html
5 boosting,bagging,adaboost,gbdt,xgboost,随机森林介绍
随机森林的行采样是对样本采样,列采样是对特征进行采样
xgboost根据结构分数的增益情况计算出来选择哪个特征的哪个分割点,某个特征的重要性,就是它在所有树中出现的次数之和。
GBDT和XGBOOST区别:
(1)在使用CART作为基分类器时,XGBOOST显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力;
(2)GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBOOST对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数;
(3)传统的GBDT采用CART作为基分类器,XGBOOST支持多种类型的基分类器,比如线性分类器;
(4)传统的GBDT在每轮迭代时使用全部的数据,XGBOOST则采用了与随机森林相似的策略,支持对数据进行采样;
(5)传统的GBDT没有设计对缺失值进行处理,XGBOOST能够自动学习出缺失值的处理策略。
xgboost处理缺失值:https://www.jianshu.com/p/a9f49e08be86(感觉说的不清楚,大致意思是分别放到左右子树,然后取增益大的作为结果)
参考:https://blog.csdn.net/qq_34896915/article/details/73771287
-
样本不均衡解决方法:
(1)产生新数据(小样本过采样和大样本欠采样)过采样有一个smote算法(运用k近邻产生新样本)
(2)改变权值(小样本权值大,大样本权值小)
(3)组合方法(集成方法boosting,bagging)
(4)特征选择(选择区分度大的样本)
参考:
https://www.jianshu.com/p/76dce1fca85b -
LR用离散特征的原因:
(1)稀疏向量运算快
(2)对异常数据有较好的鲁棒性,增加泛化能力,不受噪声影响
(3)在激活函数作用下相当于增加了非线性,增加模型表达能力(单一变量被离散化为N个,如年龄被离散为10到20之间,20到30之间,大于30的)
业内做法:海量离散特征+LR 或者 少量连续特征+复杂模型(GBDT)
GBDT找特征组合,对特征编码,LR建模(用于CTR点击率预测)(https://blog.csdn.net/u014033218/article/details/88382259)
参考:
https://blog.csdn.net/Dby_freedom/article/details/83782000
-
神经网络权值初始化方式:
不可以全0初始化,否则所有神经元更新相同,出现对称性
(1)标准初始化(适用于tanh)
(2)Xavier初始化(要求关于0对称,适用于tanh)
(3)He初始化(适用于relu)
参考:
https://blog.csdn.net/xxy0118/article/details/84333635
https://blog.csdn.net/u012151283/article/details/78230891/ -
分类和回归的损失函数
回归:绝对值,平方损失,huber损失
分类:0-1损失,LR损失(有两种形式,交叉熵的标签为0,1;另一种形式标签为-1,1),Hinge损失(合页损失,SVM用),指数损失(adaboost用)
参考:https://www.cnblogs.com/massquantity/p/8964029.html -
batch normalization优点:
(1)加快学习速度
(2)解决梯度消失问题(可以使用sigmoid或者tanh函数了,将隐藏层输出变到非饱和区,避免梯度为0)
(3)有正则化效果(mini-batch的偏差和方差不同,引入噪音)
(4)对模型中的参数不敏感
参考:
https://www.jianshu.com/p/b38e14c1f14d -
特征选择方法:
参考:
https://www.zhihu.com/question/28641663/answer/110165221 -
梯度爆炸解决方法
(1)梯度剪切
(2)权重正则化(L1和L2正则)
梯度消失解决方法:
(1)用relu,leakrelu等激活函数(避免梯度过小趋于0)
(2)batch normalization (标准化,将隐藏层输出变到0附近,使梯度变大一些)
(3)残差ResNet
(4)LSTM
参考:
https://blog.csdn.net/qq_25737169/article/details/78847691
- 归一化和标准化
(1)归一化
改变数据分布,有量纲变成无量纲,易受异常点影响
(2)标准化
不改变数据分布,对异常点不敏感
参考:
https://blog.csdn.net/starter_____/article/details/79215684