线性回归是统计学习中最为基础的模型,简单有效且具有很好的拓展性。这篇文章是我学习笔记的提炼,简单总结在python语言和R语言上如何实现线性回归,没有涉及模型的数学背景。例如,使用什么参数去评估模型的准确性、样本是否能够反映群体的特征等,建议阅读ISLR原书,书中有非常详细且精彩的解释。
简单且可拓展
线性回归模型假设输出和输入之间是简单的线性关系,根据输入的变量的多少可以分为Simple Linear Regression(只有一个自变量) 和Multiple Linear Regression(存在多个自变量)两种模型。用数学表达式能有更加直观的表达。
simple linear regression.
以及,
multiple linear regression.
但是,线性回归模型有两个非常重要的前提假设:
(1)第一点假设是非常明显的,即假设输入和输出之间是线性关系(linear),也就是公式中X每增加或减少一个单位,输出的变化是等量的。然而,输入和输出之间真正的关系可能不是线性而是曲线的。那么,我们再使用线性回归模型就存在很大的偏见(bias)。
(2)第二点假设就不那么明显。从第二式子中,我们可以看出任何一个x输入特征量变化对于y的影响是和其他任何一个特征量的值没有关系的,即不同x之间是没有相互依存的关系(interdenpendence),变量之间没有附加(additive)的影响。
线性回归模型的可拓展性也就体现在这两个基础假设之上。通过引入更加高阶项或者交叉项来拓展线性模型成为曲线,使其更加的接近输入和输出的正是模型,更好地实现预测和推理的目的。
流程图
请收下这份工作流程图,以清晰的逻辑来完成一次模型的搭建:
流程从左到右是数据获取(data acquisition)-> 数据清理(data cleaning),然后将清理后的数据分成训练数据用于模型的训练和搭建(model training & building),以及测试数据(test data)用于后面的模型的测试(model testing),到最后更多的模型开发(model development)。
那么,如何使用python语言和R语言实现模型的搭建呢?又有那么常用的工具包呢?让我们从python开始吧。
三头六臂的python
python是一门非常容易上手的编程语言,并且配合很多不同的工具包能实现各种各样的功能。我自己是使用的Anaconda包管理器和jupyter notebook 来进行学习的。网上有很多指导如何下载和使用这两个工具的教程,向大家推荐猴子的知乎教程,非常详细:
https://www.zhihu.com/question/58033789/answer/254673663?utm_source=wechat_session&utm_medium=social(初学python者自学anaconda的正确姿势是什么?)
https://www.zhihu.com/question/46309360/answer/254638807(jupyter notebook可以做哪些事情?)
当你下载好这两个工具之后,就要下载很多能够帮助我们搭建模型的工具包 -- numpy(python的线性代数工具包)、pandas(这个工具包厉害了,一秒拓展python成为R)、matplotlib(借鉴matlab的绘图工具包)、seaborn(功能更丰富的绘图包)、plotly(实现交互式绘图的工具包)以及scikit-learn(数据分析和机器学习工具包)。在电脑的终端里使用conda install package_name(工具包的名称)或者使用pip install package_name就能下载相应的工具包。值得注意的是,对于plotly,只能使用pip install。一切准备好了,就跟着流程图来做一些代码的总结吧。
前面四行是将要用的工具包引入到jupyter notebook中。最后一行是为了能够在jupyter notebook 中看到绘制的图。
建立任何模型之前,我们都要了解我们的数据:
df是dataframe(数据帧)的缩写,pandas中的一种数据类型。
也可以用画图的方式,更加直观的了解你的数据:
当你充分了解你的数据之后,就可以将数据分成训练集和测试集来进行线性回归模型的训练和检验。
搭建线性回归模型:
以上是一个简单线性回归模型在python中实现的过程。并没有加入高阶项和交叉项。如果要加入交叉项来拓展线性模型就需要使用另外的函数来进行一些处理:
之后在R中,我们可以看到这一步能够更加简单自动的实现。
轻松与愉快的R
相对于python而言,使用R语言我们需要做的准备工作很少。下载RStudio desktop和R编程语言后,就可以开始编写代码了。RStudio中使用install.packages("package_name")就可以下载我们需要使用的工具包。例如,ggplot2(绘图工具)、dplyr(整理数据)、caTools(分离数据)等等很多不同功能的工具包。线性回归模型在RStudio中直接使用lm()函数就行,非常的轻松愉快。
我们同样从了解数据开始:
同样可以用绘图的方式,查看数据:
了解数据后,同样进行数据的分割:
然后就是训练模型和测试模型了:
从中可以看到在R中拓展线性回归模型,要简单一些。当进入逻辑回归(logistic regresstion)之后,我们会发现R在创造虚拟变量(dummy variable)上也比python更加轻松。有点自动档的R和手动档的python的感觉。
以上就是线性回归部分的简单总结。下一次,我们使用逻辑回归(logistic regression)来做定性分析。
领取专属 10元无门槛券
私享最新 技术干货