距离上次挖坑已经一个月了,,,好好好,我写还不行嘛,Machine Learning 走起!
目录:
机器学习常见面试问题汇总
问题汇总(1):逻辑回归
问题汇总(2):支持向量机
问题汇总(3):树模型
问题汇总(4):聚类
问题汇总(5):神经网络
问题汇总(6):EM算法
问题汇总(7):朴素贝叶斯
先来几个引用:
这些面试问题你一定要知道
各种面试问题:数据结构、算法、概率题、智商题、大数据题......
milter的简书(里面机器学习部分)
L1正则和L2正则的异同
- L1范数也称最小绝对误差(least absolute errors),是最小化目标值yi和估计值f(xi)绝对差值的求和,L2范数也称为最小均方(least squares),它是最小化目标值yi和估计值f(xi)平方和。
- LI-norm鲁棒性比L2-norm要好些。如L2-norm,由于是均方误差,如果误差>1的话,那么平方后,相比L1-norm而言,误差就会被放大很多。因此模型会对样例更敏感。如果样例是一个异常值,模型会调整最小化异常值的情况,以牺牲其它更一般样例为代价,因为相比单个异常样例,那些一般的样例会得到更小的损失误差。
- L1 有内置的特征选择(Built-in feature selection)。其实就是因为L1 具有稀疏性。 因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵。此时会有很多系数变为0,从而使很多特征0贡献。而L2只会让系数趋近于0,但很少为0。
- L1 倾向于特征选择,而L2倾向于处理过拟合。
从中引发的小问题:
实现参数的稀疏有什么好处?
1.参数的稀疏,在一定程度上实现了特征的选择。
2.参数稀疏,计算速度会快。
如何解决 L1 求导困难问题?
1.找一个近似公式取代|w|。
2.坐标轴下降法。
3.最小角回归法。
梯度消失和梯度爆炸
(这个问题应该属于神经网络或者说深度学习了把?等我回头再挖一坑,再开一篇,然后把这个内容搬过去)
梯度消失:这玩意就是链式求导,然后连乘导致的,尤其是激活函数用sigmoid的时候,毕竟求导完毕最大也只有1/4,当然tanh也好不到哪里去,求导最大值也就是1。RNN也很容易出现这种问题,不过LSTM可以帮助避免(RNN在做乘法,LSTM在做加法)。
sigmoid公式及其导数如下:
tanh公式及其导数如下:
梯度爆炸:连乘也会导致梯度爆炸,不过 Boom!的概率小一点。但是当求导时遇到“悬崖”,也就是梯度变化很大时,也会引起梯度爆炸。
解决办法:
- 预训练加微调
- 梯度剪切(主要针对梯度爆炸,计算出的梯度大于某个值,就让其等于该值,也就是设置了上限)
- 权重正则化(weithts regularization)比较常见的是 L1 和 L2 正则。
- 使用relu、leakyrelu、elu等激活函数。
- Batch Normalization(这玩意是个好东西)
- 残差结构 ResNet。
- LSTM(针对RNN,主要解决梯度消失,但好像,爆炸问题不能完全解决掉?)
防止过拟合的方法
- 手动删除多余的特征(带来负面影响的)
- 发掘新特征
- Early Stopping
- 数据集扩充(Data Augmentation)
- 正则化法(L1、L2)
- Dropout
- 多任务学习(硬共享和软共享)
- 常见集成学习方法,随机森林等
- 深度学习里面可以通过调整模型,如深度、宽度、filter数量等
- 树模型处理过拟合还有剪枝方法(预剪枝:会带来欠拟合风险、后剪枝:训练时间开销大)
防止欠拟合方法:
- 从数据层面上考虑:可以增加新特征,例如,组合、泛化、相关性、高次特征,来增大假设空间等;
- 从模型层面上考虑:增加模型的复杂度,例如SVM的核函数,决策树不进行剪枝、DNN等更复杂的模型,去掉正则化项或者减小正则化参数,加深训练迭代数等。
网友评论