携程秋招算法二面面试题

1、Jieba分词的原理是什么

    1.首先用正则表达式将中文段落粗略的分成一个个句子。

    2.将每个句子构造成有向无环图,之后寻找最佳切分方案。

    3.最后对于连续的单字,采用HMM模型将其再次划分。

2、特征工程的常用方法

    对时间戳处理

    对离散型变量进行独热编码

    对连续型变量进行分箱/分区

    特征缩放

    特征选择

    特征衍生(特征交叉)

3、随机森林和GBDT区别

    随机森林采用的bagging思想,而GBDT采用的boosting思想。这两种方法都是Bootstrap思想的应用,Bootstrap是一种有放回的抽样方法思想。虽然都是有放回的抽样,但二者的区别在于:Bagging采用有放回的均匀取样,而Boosting根据错误率来取样(Boosting初始化时对每一个训练样例赋相等的权重1/n,然后用该算法对训练集训练t轮,每次训练后,对训练失败的样例赋以较大的权重),因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各训练集之间相互独立,弱分类器可并行,而Boosting的训练集的选择与前一轮的学习结果有关,是串行的。

    组成随机森林的树可以是分类树,也可以是回归树;而GBDT只能由回归树组成。

    组成随机森林的树可以并行生成;而GBDT只能是串行生成。

    对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来。

    随机森林对异常值不敏感;GBDT对异常值非常敏感。

    随机森林对训练集一视同仁;GBDT是基于权值的弱分类器的集成。

    随机森林是通过减少模型方差提高性能;GBDT是通过减少模型偏差提高性能。

4、xgboost和lightgbm区别

    1、内存更小

    XGBoost 使用预排序后需要记录特征值及其对应样本的统计值的索引,而 LightGBM 使用了直方图算法将特征值转变为 bin 值,且不需要记录特征到样本的索引,将空间复杂度大大降低,极大的减少了内存消耗;LightGBM 采用了直方图算法将存储特征值转变为存储 bin 值,降低了内存消耗;LightGBM 在训练过程中采用互斥特征捆绑算法减少了特征数量,降低了内存消耗。

    2、速度更快

    LightGBM 采用了直方图算法将遍历样本转变为遍历直方图,极大的降低了时间复杂度;LightGBM 在训练过程中采用单边梯度算法过滤掉梯度小的样本,减少了大量的计算;LightGBM 采用了基于 Leaf-wise 算法的增长策略构建树,减少了很多不必要的计算量;LightGBM 采用优化后的特征并行、数据并行方法加速计算,当数据量非常大的时候还可以采用投票并行的策略;LightGBM 对缓存也进行了优化,增加了 Cache hit 的命中率。

5、LSTM的结构

    包括遗忘门,输入门和输出门三种。

    GRU与LSTM区别

    (1)LSTM和GRU的性能在很多任务上不分伯仲;

    (2)GRU参数更少,因此更容易收敛,但是在大数据集的情况下,LSTM性能表现更好;

    (3)GRU 只有两个门(update和reset),LSTM 有三个门(forget,input,output),GRU 直接将hidden state 传给下一个单元,而 LSTM 用memory cell 把hidden state 包装起来。

    遗忘门

6、RNN BPTT的机制

    BPTT(back-propagation through time)算法是常用的训练RNN的方法,其实本质还是BP算法,只不过RNN处理时间序列数据,所以要基于时间反向传播,故叫随时间反向传播。BPTT的中心思想和BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。综上所述,BPTT算法本质还是BP算法,BP算法本质还是梯度下降法。

7、RNN为什么会出现梯度消失或者梯度爆炸

    在RNN中经常遇到梯度消失和爆炸现象的原因:很难捕捉到长期的依赖关系,因为乘法梯度可以随着层的数量呈指数递减/递增。

8、sigmoid和softmax的区别

    Softmax函数是二分类函数Sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。最大的区别在于softmax的计算的是一个比重,而sigmoid只是对每一个输出值进行非线性化。

9、描述下DeepFM模型

    在处理CTR预估问题中,传统的方法有一个共同的缺点:对于低阶的组合特征,学习到的比较少;但是低阶特征对于CTR也非常重要,于是Google为了同时学习低阶和高阶组合特征,提出了 Wide&Deep 模型:混合了一个 线性模型(Wide part)和 Deep 模型 (Deep part);这两部分模型需要不同的输入,其中Wide part部分的输入仍然依赖人工特征工程;

    此时模型存在两个问题:

    DeepFM 在 Wide&Deep 的基础上进行改进,成功解决了上述这两个问题,并做了一些优化;

    优点如下:

    FM模块和Deep 模块共享 Feature Embedding 部分,可以更快、更精确的训练;

10、训练集、测试集和验证集的作用,训练的时候为什么要进行shuffle

    首先用训练集训练出模型,然后用验证集验证模型(注意:这是一个中间过程,此时最好的模型还未选定),根据情况不断调整模型,选出其中最好的模型(验证误差用于指导我们选择哪个模型),记录最好的模型的各项设置,然后据此再用(训练集+验证集)数据训练出一个新模型,作为最终的模型,最后用测试集评估最终的模型。

    进行shuffle:打乱数据之间的顺序,让数据随机化,避免过拟合

  • 偏向于提取低阶或者高阶的组合特征,不能同时提取这两种类型的特征;
  • 需要专业的领域知识来做特征工程;
  • 不需要预训练FM得到隐向量;
  • 不需要人工特征工程;
  • 能同时学习低阶和高阶的组合特征;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月在线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值