美团营销算法实习面试题9道|含解析

共 2777字,需浏览 6分钟

 ·

2024-04-11 02:41


12本七月在线内部电子书在文末,自取~


公众号福利


👉回复【100题】领取《名企AI面试100题》PDF


👉回复【干货资料】领取NLP、CV、ML等AI方向干货资料


fe0256f2eda6223c9cdef3ae1d6ff30f.webp
89d8f60aa6928f0d4d525936cc8f0f0a.webp
fe0256f2eda6223c9cdef3ae1d6ff30f.webp 问题1 、如何解决过拟合和欠拟合。

过拟 合(Overfitting):



  • 增加数据量:通过增加训练数据来减少模型对特定数据的过度拟合。

  • 简化模型:减少模型的复杂度,可以通过减少特征数量、降低多项式次数等方式。

  • 正则化:引入正则化项,如L1或L2正则化,以惩罚模型复杂度。

欠拟合(Underfitting):

  • 增加特征:添加更多有意义的特征,提高模型的表达能力。

  • 增加模型复杂度:选择更复杂的模型,如增加层数、节点数等。

  • 减小正则化:减小正则化的程度,以允许模型更好地适应数据。

 问题 2、L1正则化和L2正则化的区别。 L1正则化:

  • 增加的正则化项为权重向量的绝对值之和。

  • 促使模型参数变得稀疏,即某些权重变为零,从而实现特征选择的效果。

L2正则化:

  • 增加的正则化项为权重向量的平方和。

  • 通过减小权重的同时保持它们都非零,对权重进行平滑调整。

区别:

  • L1正则化倾向于产生稀疏权重,对于特征选择有利;

  • L2正则化则更倾向于在所有特征上产生较小但非零的权重。

 问题 3、什么是交叉验证。 一种评估模型性能的统计学方法,通常用于训练样本有限的情况。将数据集划分为多个子集,多次训练模型,并在每次训练中使用不同的子集作为验证集,其余作为训练集。常见的交叉验证方法包括k折交叉验证和留一法。  问题 4、随机森林的原理和它的作用。

原理:



  • 由多个决策树组成,每个决策树基于随机抽取的数据和特征进行训练。

  • 通过投票或平均等方式,集成多个树的结果来提高模型的泛化能力。

作用:

  • 防止过拟合,提高模型的鲁棒性。

  • 在处理大规模数据时,随机森林能够有效地进行并行化处理。

  • 对于高维数据,具有较好的特征选择能力。

  问题 5、三种决策树的信息划分准则。 ID3(信息增益):使用信息熵来度量不确定性,选择能够最大程度减少不确定性的特征进行划分。 C4.5(信息增益比):在ID3的基础上,引入对特征取值数目的惩罚,避免选择取值较多的特征。 CART(基尼系数):使用基尼系数来度量数据的纯度,选择能够最小化基尼系数的特征进行划分。  问题 6、集成学习中的bagging和boosting算法以及两种的区别。 Bagging(Bootstrap Aggregating):

  • 并行训练多个弱学习器,每个学习器使用随机抽样得到的数据集。

  • 最终结果通过投票或平均等方式融合。

Boosting:

  • 串行训练多个弱学习器,每个学习器尝试修正前一个学习器的错误。

  • 每个学习器的权重与其表现相关,错误越大权重越大。

区别:Bagging的每个模型权重相等,Boosting的每个模型权重不同,取决于其性能。  问题 7、统计学中的P值是什么含义,如何通俗地解释? 含义:P值是在原假设为真的情况下,观察到统计量或更极端情况的概率。 通俗解释:P值表示了观察到的数据在假设成立的情况下产生的可能性大小。较小的P值表明数据与假设的不一致性较大。  问题8、GBDT的原理。 梯度提升决策树(Gradient Boosting Decision Trees):通过迭代训练弱学习器(一般是决策树),每次训练调整之前学习器的残差,以逐步改进模型性能。通过梯度下降优化损失函数。可以使用回归损失函数或分类损失函数,如均方误差或对数损失函数。  问题 9、编程题:有1元、4元、5元的硬币,找到满足15元的最少硬币数量。

思路:动态规划


代码:


    

        

def min_coins(amount):



coins = [1, 4, 5]


dp = [float('inf')] * (amount + 1)


dp[0] = 0


for coin in coins:


for i in range(coin, amount + 1):


dp[i] = min(dp[i], dp[i - coin] + 1)


return dp[amount]



# 测试



amount = 15


result = min_coins(amount)


print(f"找零 {amount} 元的最少硬币数量为:{result}")


dp[i]表示找零i元所需的最少硬币数量。通过遍历硬币面额,不断更新dp数组,最终得到找零15元的最少硬币数量。


免费送



↓以下12本书电子版免费领,直接送↓
053d3faa27e53adf7d46d2b18c41ed05.webp


6dec06c08c3886b8884ada3f894f327d.webp

以上8本+2022年Q4面试题-69道》、2022年Q3面试题-83道》、2023年Q1面试题-65道》、2023年Q2面试题-103道共12本, 免费送



扫码回复【999】免费领12本电子书


      


(或 找七月在线其他老师领取


点击 阅读原文 ”抢宠粉 福利 ~




浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报