算法岗面试问题总结(二)

6 篇文章 0 订阅
4 篇文章 0 订阅

1.SVM的loss是啥?

SVM的损失函数是合页损失,合页损失函数不仅仅惩罚错误的预测,还惩罚不自信的成功预测。因此,我们在不过度关注准确性的实时决策时使用它。
在这里插入图片描述
第一项是损失函数,第二项是正则化,防止过拟合。在损失函数零区域内的都是非支持向量,并不参与最终超平面的决定,这是支持向量最大的优势。对训练样本的依赖大大减少,训练效率高。

除此之外,损失函数还可以是指数损失y=exp(-x)和对率损失y=log(1+exp(-x))

2.kmeans聚类如何选择初始点?

kmeans是一种无监督算法。聚类需要确定两个点

  • 如何选择聚类的类别数目
  • 如何选择初始聚类的位置
    (1)确定聚类数目的方法是“手肘法”,即将所有可能聚类的类别数目都列举出来,寻找它们对应的损失函数。在损失函数产生拐点的地方就是我们需要确定的类别。如有100个样本,则可能的类别是2~100类,计算每个可能类别数目下的损失函数
    在这里插入图片描述
    (2)确定初始点的位置:
  • 随机选择n个类的初始点;
  • 计算其他样本到这n个初始点的距离,将所有样本分成n类;
  • 在n类的每一个类内作平均,确定新的聚类中心;
  • 当聚类中心不再发生改变,聚类完成。

样本与聚类中心之间的距离计算
欧式距离:
在这里插入图片描述
曼哈顿距离:
在这里插入图片描述

3. RF和GBDT谁更容易过拟合,偏差和方差

偏差:是反映学习算法期望预测的结果与真实结果之间的偏差,表征模型的准确度,算法的拟合能力
方差:方差是描述针对不同的数据集模型学习性能的变化,表征模型的稳定度,反映预测的波动情况

偏差和方差通常都是互相矛盾的。

GBDT:GBDT是为了解决决策树过拟合问题的算法。具体操作是训练每一棵树学到的是上一层所有树的结论和的残差。即采用的是上一轮训练后得到的预测结果与真实结果之间的残差。因此,随着树的个数增加,它的训练偏差会一直减小,甚至会为零。但是测试的时候误差反而很大,这就是过拟合。

RF:随机森林是将数据集分成多个部分,每个部分对应一棵根节点树进行训练,每棵树内根据某一属性判断上一节点数据该进入哪个子节点。最后将所有树的结论取众数(分类)或平均(回归)。

4. xgb的分类树也是用残差吗,不是的话是什么

xgb不同于GBDT,它采取的是回归树,返回的值也是回归值。它的本质也是在每一轮之后尽可能降低损失函数,它的做法是对每一轮训练完的损失函数作泰勒展开,然后直接求取决策树的最优叶子值。所以,给定一棵树,xgb能够给出它的最优叶子值,但是很难直接找到这棵树。要采取贪心算法逐级分裂,分裂的步骤和决策树几乎没有区别,区别就在于泰勒展开那部分。

损失函数:logloss = ylogp+(1-y)log(1-p),p = 1/(1+exp(-x))

5. 讲讲数据倾斜怎么处理

数据倾斜:在大数据场景中,MapReduce程序执行时,有一个或几个reduce节点里面由于包含了太多的key,因此执行这几个reduce就会浪费更多的时间。解决的办法是如何将数据均匀分配到每一个reduce中。
MapReduce流程
在这里插入图片描述

  1. 增加jvm的值,适用于唯一值比较少,极少数值非常多的情况,硬件增加jvm内存;
  2. 增加reduce个数,适用于唯一值比较多的情况,唯一值比较多的意思是有多个相同的key会被分到同一个reduce,因此需要增加reduce的个数;
  3. 重新设计key,在map阶段给key加上一个随机数,这样key就会被分到不同的reduce中,reduce后再把随机数去掉;
  4. 使用combinner,在map和reduce之间加上一个combinner,这个combinner可以将数据中key相同的先打包在一起,再交给reduce来处理。

6. 请你说说SVM的优缺点

优点:

  1. 解决小样本下机器学习问题;
  2. 可以解决高维问题,借助核函数映射到高维特征空间;
  3. 泛化能力较强;
  4. 无需依赖整个数据;
  5. 没有局部最小值问题;
  6. 能够处理非线性特征;
  7. 最终决策函数只需要支持向量决定,计算复杂度取决于支持向量数目,降低了维数灾难;
  8. 理论基础扎实,分类问题可以从原理上解释。

缺点:

  1. 常规SVM只支持二分类;
  2. 对缺失数据敏感;
  3. 对非线性问题没有通用解决方案,有时候很难找到合适的核函数;
  4. 样本很多时,效率不是很高;
  5. 对于核函数的高维映射可解释性不强。

7.LR和SVM的联系与区别

LR作为线性回归,它是通过预测一个线性函数y=a*x+b的参数。它的优化目标是让估计值尽可能接近真实值。

LR和SVM常规下都是作为二分类的线性模型,都可以经过核函数用来做非线性的预测。LR使用的是所有样本来计算,而SVM仅仅使用支持向量来决定几何超平面;LR的回归结果是一个处于[0,1]之间的概率值,而SVM给出的是0或1。

8.请你说说RNN的原理

RNN是递归神经网络,是以序列数据作为输入,所有节点按照链式连接的。它能够挖掘数据中的时序信息和语义信息。
在这里插入图片描述
RNN的每一层权重是不变的,它的某一个隐藏层的数据不仅仅于当前时刻的输入有关,还与上一时刻的隐藏层输出有关。即它能够记住每一时刻的信息。
在这里插入图片描述 在这里插入图片描述

9. xgb的boosting如何体现,有什么特殊含义

XGboosting是将多个弱分类器集成在一起,形成一个强分类器。它是一种集成学习方法,每个弱分类器叫做基学习器,每个基学习器的学习算法可以相同,也可以不同。

XGboosting与GBDT一样,是一棵树一棵树进行学习,下一棵树的训练数据是上一棵树的残差,也就是上一轮训练的预测值和真实值之间的残差。当训练完成所有的树后,预测一个样本的分数,这个分数就是将每棵树对应的最后一个叶子节点分数相加起来即可。
它的目标函数为
在这里插入图片描述
第一项是损失函数,第二项是正则化。
它使用的树模型是CART回归模型。

10. 过拟合有哪些,你会从哪方面调节

过拟合产生的原因是数据太简单,而模型太复杂,导致训练的结果很好,但是测试的结果很差。表现差的原因是学习模型能力太强,从数据中学到了统计噪声。

改进的方法可以从数据上、模型上以及训练方式上优化:

数据上:

  • 增加数据量
  • 数据增强(mix up, fix up等方式增强)

理论上只要数据量足够大就不会出现过拟合和欠拟合,但是无疑增加了计算复杂度,并且数据获取和制作难度很大

模型上:

  • 使用小模型
  • L1和L2正则化
  • Dropout
  • BathNormalization(BN)
  • 使用残差结构(ResNet中提出)

如果数据不好增强,那么可以考虑减少模型的复杂度,如减少神经元个数,网络层数,减少网络参数等

训练方式上:

采取early stopping形式,在模型训练过程中时刻关注测试误差和训练误差,在过拟合之前停止训练。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值