面试题

XGBOOST

gbdt和lightgbm,xgboost的区别

GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶

GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)

xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。

xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。

XGBoost采用了Shrinkage 和Column Subsampling方法,这两种方法都能在一定程度上防止过拟合

 

XGBoost为什么要二阶泰勒展开、叶子节点的权重怎么确定的?怎么分裂节点?

统一损失函数求导的形式以支持自定义损失函数,二阶信息本身就能让梯度收敛更快更准确

当前叶子上所有样本的一阶梯度和二阶梯度计算当前叶子的权重。$w_{i}$ 是当前数的第i个叶子节点,$g_{i}$ 是落在第j个叶子节点的第i个样本的一阶梯度,$h_{i}$ 是落在第j个叶子节点的第i个样本的二阶梯度, $\lambda $ 是正则项

遍历所有的特征,从每个特征中找出最优的分裂点,最优分裂点是选按照此点分裂后,计算 (左树叶子节点得分 + 右树叶子节点得分 - 不分裂的叶子节点得分),取能得到最大值的点(也就是损失函数减少最多的)。

 

LGB和XGBoost的损失函数相同吗?LGB有什么特点?

(1)采用goss算法减少样本(单边梯度采样,对梯度小的样本采样,并按照比例在补回样本分布,减少了数据量,加快了速度),(2)采用互斥特征捆绑较少特征,以便于计算(一些特征很少同时出现非0值,将这些特征合并成一个新特征,代替原来的几个特征,减少了特征数,加快了速度),(3)先是树的生长策略level/leaf wise;(4)然后节点分裂的算法-直方图算法/预排序算法; 工程上的优化:(1)支持类别特征(2)高效并行:特征并行 、数据并行、投票并行(3)cache命中率优化

20道XGBoost面试题

https://mp.weixin.qq.com/s/a4v9n_hUgxNyKSQ3RgDMLA

 

特征工程和评价指标

项目特征工程选取显著变量。显著的评判依据是什么

auc,f1,recall,precision对正负样本比例是否敏感?如果有两个模型,一个随机预测,一个全预测为负,这些指标有什么变化?那你觉得现在他们还对正负样本敏感吗?

 

神经网络

为什么用Resnet,为什么残差连接有效,怎么避免过拟合

CNN比全连接有什么好处

梯度爆炸、梯度消失怎么办

  • 梯度剪切:对梯度设定阈值
  • 权重正则化
  • 选择relu等梯度大部分落在常数上的激活函数
  • batch normalization
  • 残差网络
  • LSTM

优化器sgd和adam,我从反向介绍公式,然后面试官让我从正向思考 已经有了sgd,为什么要设计adam?然后我又正向介绍为什么会改进出这么一个优化器。

 

过拟合怎么解决

1、增加数据量
2、加入正则项
3、dropout随机忽略掉一些神经元
4、网络结构(Architecture):减少隐藏层,神经元个数
5、训练时间
6、限制权值(正则)
7、增加噪声
8、多种模型组合
 
word2vec

skip_gram 在处理少量数据集的时候效果很好,能很好的表示低频词,而CBOW地学习速度更快,能够很好地表示高频词

Word2vec 有两种加速方法,第一种是采用分层softmax ,第二种采用负采样形式

https://zhuanlan.zhihu.com/p/114538417

Word2vec 的缺点

  • 未考虑词序
  • 对于中文依赖分词结果
  • 对新出现的词效果不好
  • 无正则化处理

介绍下Hierarchical Softmax的计算过程,怎么把 Huffman 放到网络中的?参数是如何更新的?对词频低的和词频高的单词有什么影响?为什么?

Hierarchical Softmax利用了Huffman树依据词频建树,词频大的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多,在训练的过程中,低频词的路径上的参数能够得到更多的训练,所以效果会更好。

 

 

逻辑回归

lr的参数初始化为全0有什么问题?

没有问题,正常更新。逻辑回归的用的是sigmoid激活(relu也一样),交叉熵做损失。沿着梯度下降最快的地方更新w时,可以推到出更新w是依赖于x的,也就是w会更新成不同的值

反过来,神经网络的反向传播,会更新中间层,如果w都为0,会把中间层都更新为同样的值,神经网络不能设置w初始都为0.

 

逻辑回归怎么推导的,其和极大似然的关系,它的损失函数是什么,为什么用这个损失函数? 

 

 

 
 
 

手撕:最大乘积子数组
手撕:三树之和
手撕:环形房屋偷窃
最长递增子序列
最长公共序列
反转链表
从字符串中构建二叉树(带括号)
二分最大值加判断
双端队列BFS,cpp可以用deque实现
给一个数组看能否分割成两个等和数组
计算iou
斜向打印数组
寻找谷值(寻找峰值的变体,二分法
一个数组,对每个数可以给+ 或者-号,问有多少种情况可以和为target
一个无序数组,然后把它变成a <= b >= c <= d >= e这种情况,简单例子:【1,2,3,4,5】=> 【1,5,2,4,3】
手撕:括号生成
手撕:二叉树bfs相关的一个题
1.八皇后(寄)2.排序数组中找到所有等于target的两数下标
未出现的最小整数

leetcode 150. 逆波兰表达式求值

梯度下降求平方根,力扣只有二分和拟牛顿写法,写了好久靠面试官提示写出来了。。

def sqrt(y):
    xt=0.0001
    l=0.001
    thresh=0.001
    while abs(xt*xt-y)>=thresh:
        loss=1.0/2*(xt*xt-y)**2
        dx=(xt*xt-y)*2*xt
        xt=xt-l*dx
    return xt

股票冷冻期

有一个数组和target,你可以对每个数组设置正负,求有多少种设置组合使数组和为target

code 环形打家劫舍

 

二叉树深度 包含二叉树定义

求第一次在字符串里只出现一次的字母

数组转为树结构

查找出现最多的字符以及出现字数+

不规则六面骰子连续掷n次 求得到的序列中不存在相邻两项之和等于m的概率

无序数组插入一个数 返回topk个与它最接近的数 

 


1.二叉树展开为链表
2.括号生成

posted @ 2023-10-08 09:36  女贞路4号  阅读(19)  评论(0编辑  收藏  举报