腾讯机器学习复试
gbtd和xgboost区别和优缺点? XGBoost是GBDT一个工程化的实现。
第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶;
使用泰勒展开到二阶的原因:第三,xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。
- 统一损失函数求导的形式以支持自定义损失函数
- 二阶信息本身就能让梯度收敛更快更准确
第四,xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。
第五:XGBoost采用了Shrinkage 和Column Subsampling方法,这两种方法都能在一定程度上防止过拟合。
Shrinkage方法就是每次迭代中对树的每个叶子节点的分数乘上一个缩减权重n,可以使得每个树的影响力不会太大,留下更多的空间给后面的树去优化。第六:同级的节点可以并行化训练
Column Subsampling,一种按层随机采样,在在对同一层内每个节点分裂之前,先随机选择一部分特征,然后遍历这部分特征来寻找最优切分点。(近似算法,分桶也能降低过拟合风险)
L1和L2正则化区别,为什么防止过拟合? L1 正则化 增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏( L2 因为其导数也趋 0, 奔向零的速度不如 L1 给力了)。我们对稀疏规则趋之若鹜的一个关键原因在于它能实现特征的自动选择。
L2 正则化 增加所有权重 w 参数的平方之和,逼迫所有 w 尽可能趋向零但不为零(L2 的导数趋于零)。因为在未加入 L2 正则化发生过拟合时,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大,在某些很小的区间里,函数值的变化很剧烈,也就是某些 w 值非常大。为此,L2 正则化的加入就惩罚了权重变大的趋势。
类别不平衡怎么解决? 1、数据
过采样、欠采样、人工合成样本SMOTH
2、模型
决策树往往在类别不均衡数据上表现不错。它使用基于类变量的划分规则去创建分类树,因此可以强制地将不同类别的样本分开。
从重构分类器的角度出发:使用One Class分类器(将小类作为异常点);使用集成方式,训练多个分类器,然后联合这些分类器进行分类;将二分类问题改成多分类问题;将你的大类压缩成小类。
3、loss
OHEM
Focal Loss
F L ( p t ) = ? α t ( 1 ? p t ) γ l o g ( p t ) FL(pt) = - \alpha _t (1-p_t)^\gamma log(p_t) FL(pt)=?αt?(1?pt?)γlog(pt?)
其中,通过α \alpha α 来解决正负样本不平衡,通过γ \gamma γ 来解决easy和hard examples的不平衡。
4、评价指标
从模型评价指标的角度,重新审视训练好的模型性能
Bagging和boosting?随机森林? 1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
判别学习和生成学习分别有那些? 生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能;生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;当存在隐变量的时候,仍然可以用生成方法学习,此时判别方法就不能用。
生成模型有:朴素贝叶斯或隐马尔可夫。
判别方法直接学习的是条件概率P(Y|X)或者决策函数f(X),直接面对预测,往往学习的准确率更高;由于直接学习P(Y|X)或f(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
判别模型有:k近邻法、感知机、决策树、逻辑回归、最大熵模型、支持向量机、提升方法或条件随机场。
优化方法?Adam和sgd 遇到过拟合怎么办? 怎么调参? SVM核函数选择? 如果 Feature 的数量很大,跟样本数量差不多,这时候选用 LR 或者是 Linear Kernel 的 SVM。因为往往是线性可分的,可以采用线性的。
如果 Feature 的数量比较小,样本数量一般,不算大也不算小,选用 SVM+Gaussian Kernel。 特征数理少的话,求内积的时候需要消耗很多计算。
如果 Feature 的数量比较小,而样本数量很多,需要手工添加一些 feature 变成第一种情 况。
腾讯机器学习面经
算法题:
快排,面试官要求只能c++,问选择pivot的时候有没有加速的手段?
有序数组找第K大元素
二分查找翻转数组指定元素
一个大文件,对里面的内容进行排序;
一个大文件,里面的内容是有序的,如何打乱;
一维数组,最大连续序列和;
二维数组,最大矩形区域和;
- 人工特征工程和lighgbm模型特征处理的区别;
- 你的特征为什么要这样构造;
- 样本不平衡处理手段(重点聊了小样本只有一个的时候),为什么要这样处理;
- 过拟合处理的手段,神经网络利用dropout和多项式回归利用正则项减轻过拟合的本质是什么(为什么就能减轻过拟合了);
- 我项目有用到lightgbm和xgboost模型融合,lightgbm是xgboost的改进,那你为什么还要融合呢;
面试体验很好,就两个人互相聊天,感觉蛮亲切。
- stacking,blending;
- 神经网络和树模型的融合方式,神经网络处理过拟合的方式;
- BN的细节,dropout的细节;
- 项目:特征怎么构建的,效果怎么样?时序特征怎么处理的?为什么这样构造数据集?
- AUC的细节,会不会代码实现
- 多进程和多线程的区别
- 在浏览器输入网址后的一个过程,能说多详细就说多详细
- 机器学习的一些问题:过拟合处理,模型融合,lightgbm处理分类问题的目标函数
- 项目的一些细节
二面结束没多久,官网状态变为HR面,结果过几天直接灰了…哭泣。
- 决策树(ID3,C4.5,CART,GBDT,xgboost,lightgbm);
- boosting和bagging的区别,重点是方差和偏差(整体和单棵树两个角度);
- stacking和blending的细节;
- 项目的一些细节;
- 论文的一些细节;
- 问了线性代数的内容(汗,本科学的忘的差不多了…)
- 最后问了下深度学习的内容了解吗?也没问…
1.介绍项目。
2.minibach SGD的minibatch怎么选择,如果给1000万的数据,mimibach应该选多少。
3.Adadeta比Adagrad好在哪。
4.有没有打开tensorflow框架看源码。
5.给一个均匀生成1-7随机数的生成器,怎样均匀生成一个1-10随机数的生成器。
6.用C写个单类进程。
7.用C写给一个数组和一个数s,返回两个和为s的元素索引。
腾讯机器学习面经
敲代码:翻转二叉树
数据处理,特征工程
K折交叉验证与留出法对比,精度提升情况
比赛评分标准,准确度情况
Stacking
l1,l2对比
线性回归,SVM背后原理,还问了最小二乘法的公式
XGBoost如何给出重要特征
还问了python,set背后实现原理 set的去重是通过两个函数__hash__和__eq__结合实现的。
1、当两个变量的哈希值不相同时,就认为这两个变量是不同的
2、当两个变量哈希值一样时,调用__eq__方法,当返回值为True时认为这两个变量是同一个,应该去除一个。返回FALSE时,不去重
自我介绍
数据处理,特征工程
Stacking原理,还有怎么调优?
随机森林和GBDT,XGBoost对比
XGBoost怎么调参?用了多少棵树?
神经网络、深度学习了解吗?
卷积层、池化层
Dropout为什么能防止过拟合?具体实现
阿里腾讯虎牙机器学习算法面经
问了一下word2vector和glove的区别
问了word2vector的实现细节
讲一下层次softmax和负采样
我说负采样好像一般采取10-20个负样本(问为啥不清楚)
层次softmax为啥用哈夫曼树
层次softmax与直接softmax在原理上等价不(不太懂这个)
谈一下论文
说一下AUC含义以及如何计算
AUC和PRC的异同点,适用场景
了解AutoML不,自动调参的问题
xgboost与gbdt的区别
介绍一下文本分类的几种算法,模型网络架构参数细节都问了一下
说一下同时使用word2vector和glove的原因
谈一下attention
了解bert嘛,说一下
腾讯应用研究-机器学习一面跪,给大家参考一下问题
1、SVM的作用,基本实现原理;
2、SVM的硬间隔,软间隔表达式;
3、SVM使用对偶计算的目的是什么,如何推出来的,手写推导;
4,、SVM的物理意义是什么;
5、线性回归的表达式,损失函数;
6、做过哪些项目介绍;
7、如果给你一些数据集,你会如何分类(我是分情况答的,从数据的大小,特征,是否有缺失,分情况分别答的);
8、如果数据有问题,怎么处理;
9、手撕代码,根据前序,中序创建二叉树。
腾讯暑期实习机器学习岗位
1.项目,竞赛(穿插着问深度学习知识)
2.BN的实现,有哪些缺陷,怎么改进,了解其他的归一化算法吗?
3.传统机器学习算法,SVM,LR,GBDT, XGboost线性回归等等,好像被问了好多
4.防止过拟合的方法,具体怎么实现的?
5.C++知识(多态,虚函数,引用和指针的区别,stl容器)
6.深度学习框架之间的差别?
【腾讯面经|腾讯面经 集合】6.算法题:topK