[干货总结] Linear regression面试常见考点解析

原文首发于我的爱思数据科学文章(https://www.acecodeinterview.com/linear-regression/ ), 其中包含本文和我上一篇发在论坛里的的文章 资深面试官眼中的数据科学case study面试。在本文中,我给大家细致总结了Linear regression相关知识的面试常考点和推荐解答。本文内容纯手打,分享出来希望能和大家一起交流进步。由于在论坛编辑器中无法最好地呈现一些数学符号,我把文中的大部分内容截屏放在了附件中。如果小伙伴们觉得阅读起来不方便,也可以看我发表的原文:Linear Regression 面试常见考点解析

Linear regression 模型在数据科学岗位日常工作中有广泛应用, 同时它也是数据科学岗位面试的常见考点。在资深面试官眼中的数据科学案例分析面试 一文中,我多次提到面试中非常注重求职者对机器学习基础知识点的深刻理解,而 linear regression 就是最重要的基础知识考点之一。在本文中,我会结合面试例题给大家精炼梳理 linear regression 相关知识,在随后的系列文章中, 我会逐一讨论与 linear regression 有紧密联系的 logistic regression, softmax regression 等内容。

1. Linear Regression概念介绍

首先,我们用一个非常简单的例子回顾一下 linear regression 的基本概念。以下表格展示了广告 Cost (daily spend on certain ads platform) 和 Conversions (daily conversion volume from this ads platform) 之间的数据关系: (如果下面图片看不清楚的话, 可以参考这个链接中的内容:https://acecodeinterview.com/linear-regression/


Notes 1: 我们求解 linear regression 中参数的时候, 并不一定要用 Ordinary Least Squares 这个 estimator。Ordinary Least Squares 只是 Least Squares estimation 中的一种方法,除此之外我们还可以用 Weighted Least Squares (WLS),Generalized Least Squares (GLS) 等方法,我们甚至可以抛弃Least Squares, 改用 Least Absolute Deviations (LAD) 来解决 linear regression问题。因此,大家要注意,在我们选用 linear regression作为 model 之后,我们可以选择任意estimator作为 loss function 的定义方法,Ordinary Least Squares不是唯一方法。

基于上面构造出的 loss function,我们需要利用数值优化方法求出能使 loss function取最小值的参数解,相关内容我们会放在文章最后讨论。在这里我们首先需要回答一个问题:为什么 Ordinary Least Squares 是 linear regression 最常用的 loss function 构造方法?下面我们从概率论参数估计方法的角度给出一种解释。

2. 从概率角度理解OLS Linear Regression

首先,我们给出以下3个概率假设 (probabilistic assumptions) [面试常考点]:
(如果下面图片看不清楚的话, 可以参考这个链接中的内容:https://acecodeinterview.com/linear-regression/

Note 2: 在assumption 1中我们对error term的unpredictable random noise的定义也同时默认表示there is no correlation between the independent variables and the error term 。在有些资料中,no correlation这一点会被单独列出来。

Note 3: Assumption 3 中对 error term 的 normal distribution assumption 并不是OLS linear regression必需的。只不过 normally distributed error term会使得 OLS 成为 the most efficient linear regression estimator。建议大家在面试时可以直接把这个3个 assumption 都讲出来,在绝大多数情况下面试官是会满意的。 极个别情况下,如果面试官对这个答案提出质疑, 我们可以再进一步讨论第3个 assumption 是 optimal 的。在后文中,我们会默认同时使用这3个 assumptions。

下面我们利用 Maximum Likelihood Estimation 参数估计方法证明:基于上述3个 probabilistic assumptions 得到的 linear regression loss function 与 Ordinary Least Squares estimator 给出的表达式是完全等价的。以下是简化版证明过程[面试常考点]:
(如果下面图片看不清楚的话, 可以参考这个链接中的内容:https://acecodeinterview.com/linear-regression/

我们可以看到这个结果与利用 Ordinary Least Squares estimator 得到的结果完全一致。注意,这并不表示 OLS 就一定是 linear regression 构造 loss function 最好的方法。它只能说明,我们使用 OLS 构造 loss function, 等价于接受了上述三个assumptions。其中第一个 assumption 对应于 linear form, 无需多言。而接受第2, 3个 assumption,就等价于认为数据中的噪声服从normal distribution。而这个噪声分布在自然界中是最常见(大家可以思考一下, 有什么定理可以支持这个观点?),这就是为什么 OLS 是 linear regression “最常用”的estimator。当然, 如果你通过某些方法了解到你处理的数据中的噪声分布与 normal distribution 差别很大,那么在使用 linear regression 建模时,OLS可能就不是最好的构造 loss function 的方法了。

3. Loss function数值求解

前面我们主要讨论了 linear regression loss function 的构造方法及其合理性。进一步要完成建模过程,我们需要利用数值优化方法求出能使loss function取最小值的参数解,这涉及到 directional derivative, gradient descent algorithm 等相关知识。这部分内容在Data Analyst面试中几乎不会出现,在 Data Scientist 经典机器学习面试中也不是重点内容,但在涉及到 neural network model 的面试,或者 machine Learning Engineer 面试 ML theory 轮次中会作为考点出现。在本文中,我们不会细致介绍 gradient descent 的概念和公式推导过程,而是主要针对公式结论的物理意义进行一些讨论。
(如果下面图片看不清楚的话, 可以参考这个链接中的内容:https://acecodeinterview.com/linear-regression/

另外, 在上面的公式中,每一次迭代做参数更新都是使用全部的训练数据(共m行),这种方法对应于 batch gradient descent。为了加速参数求解过程,我们可以减小每次参数更新时使用的训练数据个数,这些方法对应着 min-batch gradient descent 或者 stochastic gradient descent。这部分内容在面试中有两种考法, 一种是要求写出参数递推公式,另一种是要求通过编程实现整个参数求解过程。其中编程实现的代码并不长,只需要根据递推公式写出for loop循环即可, 因此关键是对参数递推公式的理解。

4. 总结

Linear regression虽然是最简单的机器学习模型,但在数据科学岗位面试中出现的频率并不低,考点主要涉及 model assumptions 的细节以及 loss function 的相关推导和概念理解。本文从统计机器学习角度把相关常见考点进行了梳理汇总, 至于对 Linear regression 参数估计结果的 statistical hypothesis testing 等数理统计的内容,我会在后续的文章中继续讨论。 最后给大家留一个思考题:

Question: 基于本文中提到的 OLS linear regression 的3个基本假设(包含第三个assumption: the error term follows normal distribution), 我们是否可以认为:linear regression assumes the dependent variable itself follows normal distribution?

感兴趣的同学可以在原文文章末尾给我留言,也可以把你的思路写在论坛留言区,大家一起讨论。祝大家都能顺利通过面试, 实现职场进阶。