机器学习面试题汇总与解析——回归
本章讲解知识点
-
- 什么是回归分析?
-
- 为什么要使用回归分析?
-
- 线性回归
-
- 逻辑回归
-
- 逻辑回归和 Lasso 回归
-
本专栏适合于Python已经入门的学生或人士,有一定的编程基础。
-
本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。
-
本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
-
如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
-
相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。
-
关于机器学习算法书籍,我强烈推荐一本《百面机器学习算法工程师带你面试》,这个就很类似面经,还有讲解,写得比较好。
-
关于深度学习算法书籍,我强烈推荐一本《解析神经网络——深度学习实践手册》,简称 CNN book,通俗易懂。
-
B站机器学习视频:https://space.bilibili.com/10781175/channel/detail?cid=133301
1. 什么是回归分析?
回归(Regression)是一种统计学习方法,用于预测和建立变量之间的关系。它通过建立一个数学模型来描述自变量(输入)和因变量(输出)之间的关系,以便根据已知的自变量值预测未知的因变量值。
通常将这种技术用于预测分析、时间序列建模以及发现变量间的因果关系。例如,我们要研究司机的鲁莽驾驶和其交通事故数量之间的关系,最好的方法就是回归分析。
回归分析是建模和分析数据的重要工具。其核心思想是,通过将曲线或直线拟合到数据点,以使各数据点到曲线或直线的距离差最小化。
在回归分析中,常见的回归模型包括线性回归、多项式回归、岭回归、Lasso 回归、逻辑回归等。这些模型使用不同的数学函数和参数来拟合数据并预测因变量的值。
2. 为什么要使用回归分析?
如前所述,回归分析通常用于估计两个或多个变量间的关系。比如我们前面例举的农村主卖水果的例子,农场主希望能够根据水果的大小和成熟程度预测它们的价格。那么,使用回归分析,就可以将水果卖得一个好价钱。
使用回归分析主要有以下优点:
-
它可以表明自变量和因变量之间的显著关系
-
它可以表明多个自变量对一个因变量的不同影响强度
-
回归分析还允许我们去比较用不同尺度衡量的变量之间的相互影响,如价格变化与促销活动数量之间的联系
这些优点都有助于我们排除无关变量,并评估出一组用于构建预测模型的最佳变量。
3. 线性回归
通过市场调查,我们得到一些房屋面积和价格的相关数据。我们想知道,如果给一个新的房屋面积 130m2,能否根据已知的数据来预测其对应价格是多少呢?如图:
为了解决这个问题,我们引入线性回归模型。
首先,我们画出已知数据的散点图:
其次,我们模拟出一条直线,让已知的数据点尽量落在直线上或直线周围。如图:
最后,我们求出这条直线模型对应的函数公式,然后代入 x=130,即可求得其预测价格 f(x)。
而线性模型公式在这个例子中就是一条直线: f(xi)=wxi+b。其中,w 为系数,b 为截距。
我们现在知道,线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。
那么如何得到 w 和 b 从而构造这个公式呢?估计如果让 1000 个人来画这条线就会有 1000 种画法,比如:
所以,我们需要一个评判标准,来评判哪条直线才是最好的。
由此,我们引入损失函数来作为评判标准。
接上面的图两种拟合情况。对于拟合直线 y=0.7925x+15.353,以及拟合直线 y=1.2452−25,到底哪一条直线才最“合适”呢?
由此我们引入残差,说白了就是真实值和预测值间的差值(也可以理解为差距、距离)。即算一下实际房价和根据拟合直线的预测房价之间的差距(距离)就行了。
当把所有实际房价和预测房价的差距(距离)算出来然后做个加和,我们就能量化预测房价和实际房价之间的残差。
例如下图中有很多红色小竖线,每一条就是实际房价和预测房价的差距(距离)。
残差公式:e=yi−f(xi)
其中,f(xi) 是预测房价,yi 是真实房价。
损失函数/残差平方和/均方误差(MSE)/欧氏距离之和:
J(w,b)=i=1∑m(yi−f(xi))2=i=1∑m(yi−wxi−b)2(.)
其中,J(w,b) 是损失函数,m 表示样本个数,f(xi) 是预测值,yi 是真实值。
总结,损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准。
这个函数的值越小,说明直线越能拟合我们的数据。
好了,到这里,我们通过损失函数公式,结合两条直线的参数 w=0.7925,b=15.353 和 w=1.2452,b=−25,得到第一条拟合线的损失函数 J(w,b) 要比第二条拟合线的损失函数 J(w,b) 小。所以,可以说明,第一条拟合线要比第二条拟合线更“合适”。
但是,我们不应该止步于此,我们要找的不是两者之间的更优解,而应该是所有拟合直线中的最“合适”。
由此,我们引出最小二乘法。
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。
这套路,不就是已知函数 J(w,b)=∑i=1m(yi−f(xi))2=∑i=1m(yi−wxi−b)2,它有两个自变量 w 和 b,我们要求解 w 和 b,使得这个函数的值最小。求解 w 和 b 的过程,美名其曰线性回归模型的最小二乘”参数估计“。
其求解过程无非就是微积分中,将 J(w,b)分别对 w 和 b 求导,然后令其导数为 0,便可得到 w 和 b 的最优解。此处过程略去,得到:
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−xˉ)b=m1i=1∑m(yi−wxi)(.)
将 w 和 b 代入直线公式中 f(xi)=wxi+b,就得到我们的线性回归模型了。
当然,我们也可以采用梯度下降法来求得参数:
假设 h(x) 是我们的模型函数, n 表示参数个数, m 表示训练集的样本个数,J(w) 是我们的损失函数,即待优化的目标函数。
h(x)=j=0∑nwjxjJ(w)=2m1i=1∑m(yi−hw(xi))2(.)
对 w 求偏导,可以得到每个 w 对应的梯度:
∇wj=∂wj∂J(w)=−m1i=1∑m(yi−hw(xi))xji(.)
接着按每个 w 的负梯度来更新每个 w,
wj∗=wj+η⋅∇wj(.)
η 是学习率,根据计算得到的梯度信息,按照一定的学习率(learning rate)确定参数更新的步长,然后更新模型的参数。
4. 逻辑回归
关于逻辑回归,可以用一句话来总结:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
逻辑回归就是基于 sigmoid 函数构建的模型。
前面理解了线性回归后,逻辑回归就很好理解,就是在线性回归输出结果经过 sigmoid 函数,就是逻辑回归。
sigmoid 在神经网络中用于二分类,那线性回归输出结果经过 sigmoid 函数是不是就起到了分类的作用了?所以逻辑回归的作用就是分类。
公式如下:
z=wTx+b
sigmoid函数:g(z)=1+e−z1
逻辑回归:hθ(x)=1+e−wTx−b1
损失函数推导
对于分类任务:
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y(.)
似然函数:L(θ)=∏i=1m(hθ(xi))yi(1−hθ(xi))1−yi
对数似然:logL(θ)=∑i=1m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
引入−m1,得到损失函数:Loss=−m1∑i=1m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
梯度求导
目标函数为J(θ)=−m1logL(θ),求最小值:
∂θ∂J(θ)=∂hθ(x)∂J(θ)⋅∂θ∂hθ(x)=−m1i=1∑m[yihθ(xi)1∂θ∂hθ(xi)−(1−yi)1−hθ(xi)1∂θ∂hθ(xi)]=−m1i=1∑m[hθ(xi)yi−1−hθ(xi)(1−yi)]hθ(xi)(1−hθ(xi))xi=−m1i=1∑m[yi(1−hθ(xi))−(1−yi)hθ(xi)]xi=−m1i=1∑m[hθ(xi)−yi)]xi(.)
每次梯度下降,迭代后的参数:
θj∗=θj−αm1i=1∑m[hθ(xi)−yi)]xi(.)
α为学习率
5. 岭回归和 Lasso 回归
多元线性回归:
f(w)=i=1∑m(yi−xiTw)2(.)
岭回归:
f(w)=i=1∑m(yi−xiTw)2+λi=1∑nwi2(.)
从数学表示上看我们可以看出明显的相似性,岭回归的数学表示仅仅是在多元线性回归的基础上增加了一个 L2 惩罚项。
Lasso 回归则是将 λ∑i=1nwi2 变为 λ∑i=1n∣wi∣,即在多元线性回归的基础上增加了一个 L1 惩罚项。
面试题
1. 逻辑回归 LR 详细推导⭐⭐⭐⭐⭐
参考回答
1.基本条件
线性回归:∑i=0mθixi
sigmoid函数:g(z)=1+e−z1,求导:g(z)′=g(z)(1−g(z))
逻辑回归:hθ(x)=1+e−θTx1
2.损失函数推导
对于分类任务:
P(y=1∣x;θ)=hθ(x)P(y=0∣x