8.20的斗鱼算法岗笔试,涵盖的知识点挺多的,不能截屏,凭回忆记一下吧,当做学习笔记了:
题型:单选12道,多选24道,简答2道,编程3道
1、共轭梯度法相比最速下降法和牛顿法的特点是?
答案:克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点.
2、dropout和bagging boosting stacking中哪一个原理最接近
答案:bagging,李宏毅课程里讲过,训练一次时drop一部分节点,相当于训练一个分类器,然后多次训练多次drop不同的节点,相当于训练了多个分类器,然后共同voting决定最终的输出结果,和bagging思想类似。
3、lasso回归与岭回归的区别?
答案:岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项(平方项),Lasso回归引入的是L1范数惩罚项(绝对值)
4、K-means聚类无法聚类以下哪种形状的样本?
答案:螺旋分布。 K-means算法是基于距离测量的,无法聚类非凸形状的样本。
附:凸和非凸定义,
5、已知输入尺寸n,卷积核大小f和个数,stride ,padding,求输出特征图的大小
output = (n+2p-f)/s + 1 ,注意,如果这里是个分数,记得向下取整。pooling是向上取整。
6、使用线性回归模型(y=wx+b)来拟合数据。那么使用留一法(Leave-One Out)交叉验证得到的均方误差是多少?
答案:这一题表格都没给,缺内容,原题因该如下
7、kNN在什么情况下效果较好?
答案:样本较少并且典型性好
8、下列方法中可用于降维的是?
答案:PCA,AutoEncoder,LDA,SVD
9、极大似然估计一定存在吗? 如果存在唯一吗?
答案:本质是求导数解似然方程的过程,解联立后的方程组,方程组不一定有解,如果有解也可能有多个解,比如同时扩大K倍,我暂时这么理解的,估计不准确。
10、lasso回归来拟合某个数据集,数据集特征有100个(X1,X2,...,X100),现在把X1特征值扩大10倍,然后用相同的正则化参数对Lasso回归进行修正,那么特征X1是被保留了还是被去掉了?
答案: 大特征值=⇒小相关系数=⇒更少lasso penalty =⇒更可能被保留
简答题:
1、xgboost为什么要用泰勒展开,优势在哪里?
因此,只要损失函数二阶可导,那么就可以根据需要来选择,来作为xgboost的损失函数,xgboost既可以做回归也可以做分类,扩展了xgboost的使用范围。
2、决策树包括分类树和回归树,他们有什么区别?
答案:分类树使用信息增益或增益比率来划分节点;每个节点样本的类别情况投票决定测试样本的类别.
回归树使用最大均方差划分节点;每个节点样本的均值作为测试样本的回归预测值.
编程题:
斗鱼超管去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是超管现在只想购买恰好n个苹果,超管想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,超管将不会购买。
输入:苹果数
输出:最少的袋子数
#include<iostream>
using namespace std;
int main() {
int n, i;
cin >> n;
int* dp = new int[n + 1];
dp[0] = 0;
dp[1] = -1;
for (i = 2; i < n + 1; i++) {
if (i - 8 >= 0 && dp[i - 8] != -1)
dp[i] = dp[i - 8] + 1;
else if (i - 6 >= 0 && dp[i - 6] != -1)
dp[i] = dp[i - 6] + 1;
else
dp[i] = -1;
}
cout << dp[n] << endl;
for (int j = 0; j < n + 1; j++) {
cout << dp[j]<<endl;
}
}