机器学习面试笔试求职必背!八股文(1/5)

算法工程师,技术软件类求职机器学习必背八股文

更多算法/业务/HR面等笔试题面试题 —— > 个性签名自取!


1. 特征工程:

1.1 为什么要对特征做归一化处理:

Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术。特征间的单位(尺度)可能不同,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[ 1000 , 10000 ] [1000, 10000][1000,10000],另一个特征的变化范围可能是[ − 0.1 , 0.2 ] [-0.1, 0.2][−0.1,0.2],在进行距离有关的计算时,单位的不同会导致计算结果的不同,尺度大的特征会起决定性作用,而尺度小的特征其作用可能会被忽略,为了消除特征间单位和尺度差异的影响,以对每维特征同等看待,需要对特征进行归一化

1.2 什么是组合特征?如何处理高维组合特征?

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组 合,构成高阶组合特征。可以采取降维,矩阵分解或者特征筛选的方法得到具备绝大部分信息的几个特征进行训练。

1.3 比较欧氏距离和曼哈顿距离。

欧氏距离:欧几里得距离,就是平方和开根号。我们最常用的。欧氏距离越小,两个向量的相似度越大;欧氏距离越大,两个向量的相似度越小。

曼哈顿距离:|x1 - x2| + |y1 - y2|, 曼哈顿距离也称为城市街区距离。可以看出在曼哈顿距离中,考虑了更多的实际 因素。总之,在曼哈顿距离的世界中,规则是我们只能沿着线画出的格子行进。

切比雪夫距离:max(|x1 - x2|,|y1 - y2|)

1.4 什么是余弦相似度?为什么有些场景使用余弦相似度而不使用欧氏距离?

对于两个向量A和B,其余弦相似度定义为cos(A,B)= A*B / |A|*|B| 即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,余弦相似度依然符合“相同为1,正交为0,相反为-1”的性质,其取值范围是[-1,1]。欧式距离衡量空间点的直线距离,余弦距离衡量点在空间的方向差异。欧式距离体现的数值上的绝对差异,而余弦距离体现方向上的相对差异。

1.5 one-hot的作用是什么?为什么不能直接用数字来表示?

One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。https://cloud.tencent.com/developer/article/1688022,直接使用数字会给将人工误差而导致的假设引入到类别特征中,比如类别之间的大小关系,以及差异关系等等

2. 模型评估:

2.1 过拟合和欠拟合是啥?具体表现是啥?

训练集上表现很好,测试集上表现很差。欠拟合:训练集上表现很差。欠拟合会导致高 Bias ,过拟合会导致高 Variance ,所以模型需要在 Bias 与 Variance 之间做出一个权衡。

2.2 降低过拟合和欠拟合的方法

(1)解决欠拟合的方法:

1、增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间;

2、尝试非线性模型,比如核SVM 、决策树、DNN等模型;

3、如果有正则项可以较小正则项参数 $\lambda$;

4、Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等.

(2)解决过拟合的方法:

1、交叉检验,通过交叉检验得到较优的模型参数;

2.X 什么是正则化?用来干什么的?

正则化就是为了防止过拟合的。

我们从【过拟合】的图形可以看出f(x)的涉及到的特征项一定很多吧,即等等很多吧?显而易见,N很大的时候,是等数量增长的吧?显而易见,w系数都是学习来的吧?

现在知道这些信息之后,如何去防止过拟合,我们首先想到的就是控制N的数量吧,即让N最小化吧,而让N最小化,其实就是让W向量中项的个数最小化吧?其中,W=(W1+W2+W3+......+Wn)

0范数,向量中非零元素的个数。(向量中0元素,对应的x样本中的0Xi项我们是不需要考虑的,可以砍掉。)

1范数,为绝对值之和。2范数,就是通常意义上的模。

什么时候用?------ 损失函数中用:J0是原来损失函数,后面一项使我们的正则化损失,alpha使我们的正则化系数(自己定义的)

2.3 L1 和 L2 正则先验分别服从什么分布?

L1是拉普拉斯分布,L2是高斯分布。范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度大小

L1范数:当p=1时,是L1范数,其表示某个向量中所有元素绝对值的和

L2范数:当p=2时,是L2范数, 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式。

2.4 对于树形结构为什么不用归一化?

因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。树型结构不关心变量的值,只关心变量分布以及变量之间的条件概率

2.5 什么是数据不平衡?如何解决?

在机器学习中我们经常会遇到数据不平衡问题。数据不平衡主要存在于有监督机器学习任务中。当遇到数据不平衡时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数样本的分类性能下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。

2.6 bias,variance,error

Error = Bias + Variance + Noise,Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。

3. 线性回归与逻辑回归

3.1 logistic回归公式是什么?

普通线性分类器,WT+b就是一条直线,上方是一类,下方是一类,二分类问题。Logistic 回归要找到分类概率 P(Y=1) 与输入向量 x 的直接关系,然后通过比较概率值来判断类别。因此逻辑回归是找类别的概率连续来判断类别。

逻辑回归虽然名字里面有回归,但是主要用来解决分类问题。logistic-regression就是一个线性回归经过阶跃函数的处理,变成一个二项分类器,输出结果只能是0,1的条件概率的大小,其实是一种概率模型。

回归模型就是预测一个连续变量(如降水量,价格等)。在分类问题中,预测属于某类的概率,可以看成回归问题(分类是离散的,但是类别的概率是连续的,因此回归模型用于分类,变成逻辑回归)。这可以说是使用回归算法的分类方法。

用已知的数据集和训练样本Xi来训练这个模型,从而做到对未知的测试样本进行准确的估计和预测。所以需要对上述公式进行参数估计,求出的W值

对于逻辑回归而言,其实际就是一个sigmoid函数套上一个回归模型,对于输入X有输出Y属于(0,1),所以只需要对其中的参数进行估计即可,对于参数估计问题,涉及到代价函数,而逻辑回归的代价函数可以用最大似然估计得到。

也就是说,输出 Y=1 的对数几率是由输入 x 的线性函数表示的模型,这就是逻辑回归模型。当 WT+b 的值越接近正无穷, P(Y=1|x) 概率值也就越接近 1。因此逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。

在这我们思考个问题,我们使用对数几率的意义在哪?通过上述推导我们可以看到 Logistic 回归实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数几率

3.2 逻辑回归相比线性回归,有何异同?

逻辑回归与线性回归都属于广义线性回归模型, 逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者最本质的区别。线性回归中使用的是最小化平方误差损失函数(线性回归就是y=WT+b,损失函数用MSE)

3.3 逻辑回归的损失函数

极大似然估计法: 就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!那么既然事情已经发生了,为什么不让这个出现的结果的可能性最大呢?这也就是最大似然估计的核心。白球黑球不知道有多少,取100次有放回,70是白,30黑,那么采取的方法是让这个样本结果出现的可能性最大,也就是使得p^70(1-p)^30值最大,那么我们就可以看成是p的方程,求导即可!50,50。20,80等无数种组合都可以,为什么要70和30呢?因为是已经发生的事情了,就让他作为可能性最大的结果。

3.4 逻辑回归处理多分类标签问题时,一般怎么做?

如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归( Softmax Regression ) 来进行分类。当存在样本可能居于多个标签的情况时,我们可以训练 k个二分类的逻辑回归分类器。第l个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第 i 类标签” 与“非第i类标签”两类。 遇过这样的办法,我们就解决了每个样本可能拥有多个标签的情况。

4. 朴素贝叶斯模型

4.1 写出全概率公式 & 贝叶斯公式

条件概率:P(A|B)= P(A,B)/ P(B)

P(B|A)= P(A,B)/ P(A)

P(A,B)= P(A|B)*P(B) = P(B|A)*P(A)

贝叶斯公式:P(A|B) = P(B|A)*P(A)/P(B)

全概率公式:

4.2 朴素贝叶斯为什么“朴素naive”?

因为分母对于所有类别为常数,我们只要将分子最大化即可。又因为各特征属性是条件独立的(朴素贝叶斯为什么“朴素”的原因),

4.3 朴素贝叶斯有没有超参可以调?

4.4 朴素贝叶斯的工作流程是怎样的?

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。

4.5 朴素贝叶斯对异常值敏感不敏感?

  • 26
    点赞
  • 260
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python面试八股文是一种常见的面试准备方法,可以帮助你系统地复习Python的基础知识和常见问题。以下是一个简单的Python面试八股文的框架: 1. Python基础知识: - Python的特点和优势 - Python的数据类型和变量命名规则 - Python的运算符和表达式 - Python的条件语句和循环语句 - Python的函数和模块 - Python的面向对象编程 2. 常用的Python库和框架: - NumPy:用于科学计算和数据分析 - Pandas:用于数据处理和分析 - Matplotlib:用于数据可视化 - Django:用于Web开发 - Flask:用于Web开发和API构建 - TensorFlow或PyTorch:用于机器学习和深度学习 3. Python的异常处理: - Python中常见的异常类型及其处理方法 - try-except语句的使用及注意事项 - finally语句的作用和使用场景 4. 数据库操作: - Python连接数据库的方式和常用的库(如MySQL、SQLite) - SQL语句在Python中的执行方法 - 数据库事务处理和连接池的概念 5. 多线程和多进程: - 多线程和多进程的概念和区别 - Python中实现多线程和多进程的方式(如threading和multiprocessing库) - 多线程和多进程的应用场景和注意事项 6. Web开发相关: - HTTP协议的基本原理和常见请求方法 - Python的Web框架(如Django和Flask)的使用和特点 - RESTful API的设计和实现 7. 测试和调试: - 单元测试和集成测试的概念和区别 - Python中常用的测试框架(如unittest和pytest) - Python中的调试方法和工具(如pdb和print语句) 8. 代码优化和性能调优: - Python中常见的代码优化技巧(如避免不必要的循环、使用生成器等) - Python中常用的性能调优工具和技术(如时间复杂度分析、使用C扩展库等) 以上是一个简单的Python面试八股文的框架,你可以根据自己的情况进行适当的调整和扩展。希望对你的面试准备有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值