机器学习基础算法:线性回归,从案例到公式推演深度解析

前言

什么是线性回归?线性回归是一种预测模型,基于现有的数据构建参数模型,对未来的数据做出预测。

之所以叫线性,是因为他专门为符合一定线性规则模式的数据设计的,回归(regression)二字,可以理解为拟合的过程,通过一些数学技巧,构建参数模型。回归在英文里本意里有“衰退”的意思,高尔顿当时拟合了父母平均身高 x 和 子女平均身高 y 的经验方程,发现即使父母的身高都极端高,其子女不见得会比父母高,而是有“衰退”(regression)(也称作“回归)至平均身高的倾向。
$$
\begin{equation}
y=3.78+0.516 x
\end{equation}
$$
为了纪念高尔顿这位伟大的统计学家,“线性回归”这一名称就保留了下来。[1]

在这篇文章中,我将先为您介绍简单的一元线性回归,然后推导公式,再用代码实现;接着将会为您介绍多元的情况。

在这篇文章中,我们所有的代码如未说明,均是在 jupyter notebook 中运行的。

简单线性回归

简单线性回归应用于只有一个特征的样本,在实验中,先根据一个已知的直线,生成一些点,再用这些点来构造出二元线性方程的系数截距,求出一个拟合的直线:

上图所示,是一个离散的点集,其可能具有一定线性关系,是由以下规则生成的:

# 引入需要的库
import numpy as np
import matplotlib.pyplot as plt
# 创建10个0-10的随机数x
x = 10 * np.random.random_sample(10)
y_real = 0.4 * x + 1.5
# 附上正态分布的干扰
y = y_real + np.random.normal(scale=0.2, size=10)
# 绘制散点图
plt.scatter(x, y)
# 绘制直线
plt.plot(x, y_real, color='r')
plt.show()

在执行到 plt.show()时,就会生成上图所示的点线图。

在平面图中,这条红色直线的方程$\eqref{y=ax+b}$就是:
$$
\begin{equation}
y=a x+b \label{y=ax+b} \tag{1.2}
\end{equation}
$$
其中 $ a = 0.4 $ ,$b=1.5$,$y$ 代表真值。

直线方程所代表的就是
$$
\hat{y}^{(i)}=a x^{(i)}+b
$$

AT V AP RH PE
count 9568.000000 9568.000000 9568.000000 9568.000000 9568.000000
mean 19.651231 54.305804 1013.259078 73.308978 454.365009
std 7.452473 12.707893 5.938784 14.600269 17.066995
min 1.810000 25.360000 992.890000 25.560000 420.260000
25% 13.510000 41.740000 1009.100000 63.327500 439.750000
50% 20.345000 52.080000 1012.940000 74.975000 451.550000
75% 25.720000 66.540000 1017.260000 84.830000 468.430000
max 37.110000 81.560000 1033.300000 100.160000 495.760000

参考文献


  1. 你好·世界. "为什么线性回归叫做「回归」?" - 知乎[EB/OL]. (2017-05-15)[2019-08-18]. https://www.zhihu.com/question/47455422.

   转载规则


《机器学习基础算法:线性回归,从案例到公式推演深度解析》 Harbor Zeng 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Spark2.x:dataframe的join方法详解 Spark2.x:dataframe的join方法详解
Spark join在Spark生态里,join分为Spark SQL的join和基于dataframe的join,这次我们来谈谈最常用的基于dataframe的join方法详解示例。 Spark支持所有类型的Join[1],包括: inner join left outer join right outer join full outer join left semi join left a
下一篇 
spark关联规则分析:从经典的购物篮app看数据内在的联系 spark关联规则分析:从经典的购物篮app看数据内在的联系
前言在 中英双语论文解析:Mining Frequent Patterns without Candidate Generation(挖掘没有候选者生成的频繁模式) 和 Spark大数据第一步:关联规则挖掘须知,什么是支持度、置信度 两篇文章的加持下,我想,现在对于深入理解经典的购物篮关联规则分析的原理已经不再是一件困难的事情。 代码分析数据准备设 mb 为 market basket (超市购物
  目录