引言
深度学习系列第一篇,我们从线性回归说起。
一元线性回归
你的朋友问你,在海淀区买一套 60 平米左右的小两居需要多少钱?你该如何回答他呢。

负责任的你并没有冒然回答,而是从网上找了一些房子的数据,建立了下面的表格。

并根据表格中的数据做出了下图

图中每个点代表一条数据,如果可以找到图中红线所示拟合各个数据点的线性方程 y = wx + b, 然后把 x = 60 带进去就可以回复朋友了。
从数据中确定(w,b)从而确定线性方程的过程就是线性回归,这里我们只有一个变量 x, 所以又称为一元线性回归。
现在假设我们找到了一对(w,b)得到一个方程 y = wx + b, 那么怎么评估这个方程的效果呢?
直观来看我们希望方程尽可能符合所有的数据点,也就是对于每个 x ,我们希望方程预测的值 y^ 与真实值 y 的差异越小越好,这里有 m 个样本,我们把 m 个样本的误差平方和作为整体的误差 loss:
loss=min(21i=1∑m(y^i−yi)2)
其中 yi 表示 xi 的真实价格,而 y^i 表示 xi 在方程上预测的值,21 是为了求解方便。
多元线性回归
现在你的方程只需要输入面积就可以得到房价,朋友很满意。但他感觉你的方程太笼统了,房价不仅与面积有关,还和房子的地段、房龄、装修甚至绿化都有关系,你能不能再帮他建立一个方程,综合房子的面积、房龄、位置等因素,预测房屋的价格。
为此你又上网搜集了如下数据。

变量多了,但道理是相通的,我们需要找到一个含有 n 个变量的方程:
y=w1x1+w2x2+...+wnxn+b
矩阵形式
y=[w1…wn]⎣⎢⎡x1⋮xn⎦⎥⎤+b
因为有 m 个样本,m 个样本的矩阵形式
[y1…ym]=[w1…wn]⎣⎢⎡x1⋮xn…⋱…x1m⋮xnm⎦⎥⎤+b
也即
Y1m=W1n∗Xnm+b
其中:
-
n 表示变量维度
-
m 表示样本个数
-
xi 表示不同的变量
-
wi 表示变量的权重
- b 表示偏移量。
和一元线性回归一样,我们希望方程预测的值 y^ 与真实值 y 的差异越小越好,所以需要把 m 个样本的误差加起来作为整体的误差 loss:
loss=min(21i=1∑m(y^i−yi)2)
其中 yi 表示 xi 的真实价格,而 y^i 表示 xi 在方程上预测的值。
求解线性回归方程
接下来看看通过一组数据如何找到误差最小的 (W,b) 从而确定线性回归方程。
问题描述
求解参数 w,b,使得矩阵方程
Y1m=W1n∗Xnm+b
的 loss 最小。
loss=min(21i=1∑m(y^i−yi)2)
线性回归的求解方法通常有两种,最小二乘法和梯度下降法。
最小二乘法
最小二乘法直接求解方程的偏导数为 0 的点,因为凸函数偏导数为 0 的驻点即为最小值点。

损失函数 Loss
Loss=21i=1∑m(y^i−yi)2=21(WX+b−Y)2
求 W, b 的偏导数
∂W∂Loss=∂W∂21(WX+b−Y)2=m1(WX+b−Y)XT
∂b∂Loss=∂b∂21(WX+b−Y)2=m1(WX+b−Y)
令两个偏导数都为 0,可以得出
Wb=(Y−b)XT(XXT)−1=n1(Y−WX)
梯度下降法
梯度下降法是一个逐步逼近的过程,每次沿着导数下降的方向行走一个步长,最终到达最低点。

- 先随机生成 W,b
- 求dW, db,这一步同最小二乘法
dWdb=m1(WX+b−Y)XT=m1(WX+b−Y)
- 更新 W,b
Wb=W−αdW=b−αdb
其中 α 为每次更新的步长, 又叫做学习率。
这样经过多轮后,方程逼近最小值,W, b 逼近最优值。
后记
线性回归先聊到这里,我们注意到线性回归的预测结果是连续的值,比如房价。那么对于分类问题比如某套房子是否值得买,又应该怎样求解呢?下次我们就一起来聊聊解决二分类问题的逻辑回归。
欢迎关注本人公众号《大数据茶馆》,用大白话畅聊大数据。
来的都是客,欢迎您常来坐坐~
