这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
机器学习基础,然后今天咱们主要聊一聊是线性回归,最简单的一个模型。
咱们先从概念上说一说线性归回,线性回归是由 2 个词组成的,第一个是线性,然后是回归。
线性
线性我们这个可能早在初中的时候就接触了,比如说 y 等于 ax 加 b。可以在 y x 形成平面中,绘制一条直线来表示 y = a x + b y= ax + b y = a x + b 。然后给每一次在这个方程内输入一个 x,就会得到一个 y。
这里 a 表示斜率而 b 表示截距,也叫做偏置。这个方程表示 y 和 x 之间线性关系,在几何意义上是一条直线。
回归
那么什么是回归呢?听起来比较高大尚。去分析 x 和 y 这对这个自变量和因变量,他们俩之间关系。我们可以用散点图将 x 和 y 绘制在一个平面内,这些点散落在平面内,分布呈一定规律的。这时我们可以用一条直线。这条线呢很可以很好的去描述这些散落的点。也就是拟合这些点,这就是回归,比如说这个身高和体重啊。然后房子的面积与房价啊,他们都是呈一种线性关系的,比如胆固醇与年龄之间关系都是可以通过回归进行预测。
数据
我们用数学语言来描述问题。
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ ( x i , y i ) } N D = \{ (x_1,y_1),(x_2,y_2),\cdots (x_i,y_i)\}_N D = {( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ ( x i , y i ) } N
假设我们数据集用大 D 来表示,每一个样本是一个 m 为向量x i ∈ R m x_i \in \mathbb{R}^m x i ∈ R m 而为 y i y_i y i 为一个实数 y i ∈ R y_i \in \mathbb{R} y i ∈ R
数据集可能服从一个概率分布,但实际上,我们是只能观察到样本也是只是全部数据一部分,数据真实服从概率分布我们是不知道的。只能通过观察到样本来推测真实的分布。
好假设这里有 X 和 Y 分别表示 x 和 y 集合,因为 x 是一个列向量所以 X = ( x 1 , x 2 , ⋯ , x N ) T X = (x_1,x_2,\cdots, x_N)^T X = ( x 1 , x 2 , ⋯ , x N ) T 这样不难看出 X 每一行是一个样本 x i x_i x i ,也就是,Y 是一个 ( y 1 , y 2 , ⋯ , y N ) T (y_1, y_2,\cdots,y_N)^T ( y 1 , y 2 , ⋯ , y N ) T
[ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋯ ⋮ x n 1 x n 2 ⋯ x n m ] N × m \begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1m}\\
x_{21} & x_{22} & \cdots & x_{2m}\\
\vdots & \vdots & \cdots & \vdots\\
x_{n1} & x_{n2} & \cdots & x_{nm}\\
\end{bmatrix}_{N \times m} ⎣ ⎡ x 11 x 21 ⋮ x n 1 x 12 x 22 ⋮ x n 2 ⋯ ⋯ ⋯ ⋯ x 1 m x 2 m ⋮ x nm ⎦ ⎤ N × m
损失函数
计算损失函数这里我们 y ^ = w T x i \hat{y} = w^Tx_i y ^ = w T x i 然后计算 w T x i − y i w^Tx_i - y_i w T x i − y i 之间的距离,也就是找到这么一条直线,直线点到预估点距离
L ( w ) = ∑ i = 1 N ∣ ∣ w T x i − y i ∣ ∣ 2 L(w) = \sum_{i=1}^N ||w^Tx_i - y_i||^2 L ( w ) = i = 1 ∑ N ∣∣ w T x i − y i ∣ ∣ 2
然后我们把 ∣ ∣ w T x i − y i ∣ ∣ 2 ||w^Tx_i - y_i||^2 ∣∣ w T x i − y i ∣ ∣ 2 这部分尝试用矩阵形式表示,首先将其展开为如下
( w T x 1 − y 1 , w T x 2 − y 2 , ⋯ , w T x N − y N ) ( w T x 1 − y 1 w T x 2 − y 2 ⋮ w T x N − y N ) (w^Tx_1 - y_1,w^Tx_2 - y_2, \cdots, w^Tx_N - y_N ) \left( \begin{matrix}
w^Tx_1 - y_1\\
w^Tx_2 - y_2\\
\vdots\\
w^Tx_N - y_N\\
\end{matrix} \right) ( w T x 1 − y 1 , w T x 2 − y 2 , ⋯ , w T x N − y N ) ⎝ ⎛ w T x 1 − y 1 w T x 2 − y 2 ⋮ w T x N − y N ⎠ ⎞
然后将其进行进一步进行化简,然后转换为 将( x 1 , x 2 , ⋯ , x N ) (x_1,x_2,\cdots,x_N) ( x 1 , x 2 , ⋯ , x N ) 转换为 X T X^T X T 并将 ( y 1 , y 2 , ⋯ , y N ) (y_1,y_2, \cdots, y_N) ( y 1 , y 2 , ⋯ , y N ) 为 Y T Y^T Y T
( w T X T − Y T ) (w^TX^T - Y^T) ( w T X T − Y T )
( w T x 1 − y 1 , w T x 2 − y 2 , ⋯ , w T x N − y N ) = w T ( x 1 , x 2 , ⋯ , x N ) − ( y 1 , y 2 , ⋯ , y N ) = ( w T X T − Y T ) (w^Tx_1 - y_1,w^Tx_2 - y_2, \cdots, w^Tx_N - y_N ) = w^T(x_1,x_2,\cdots,x_N) - (y_1,y_2,\cdots,y_N)= (w^TX^T - Y^T) ( w T x 1 − y 1 , w T x 2 − y 2 , ⋯ , w T x N − y N ) = w T ( x 1 , x 2 , ⋯ , x N ) − ( y 1 , y 2 , ⋯ , y N ) = ( w T X T − Y T )
( w T X T − Y T ) ( X w − Y ) w T X T X w − w T X T Y + Y T X w − Y w T X T X w − 2 w T X T Y + Y T Y (w^TX^T - Y^T)(Xw - Y)\\
w^TX^TXw - w^TX^TY + Y^TXw - Y\\
w^TX^TXw - 2w^TX^TY + Y^TY ( w T X T − Y T ) ( Xw − Y ) w T X T Xw − w T X T Y + Y T Xw − Y w T X T Xw − 2 w T X T Y + Y T Y
w T X T Y w^TX^TY w T X T Y 这两项 Y T X w Y^TXw Y T Xw 其实都是实数,因为 w T w^T w T 表示 1 × m 1 \times m 1 × m X T X^T X T 的维度为 m × N m \times N m × N 所以得出 1 × N 1 \times N 1 × N 维度,加和 N × 1 N \times 1 N × 1 维度 Y Y Y 矩阵相乘得到一个数,因为 Y T X w Y^TXw Y T Xw 也是一个数,所以这两项可以合并为一个项。
接下来就是矩阵求导
∂ L ( w ) ∂ w = 2 X T X w − 2 X T Y = 0 w = ( X T X ) − 1 X T Y \frac{\partial L(w)}{\partial w} = 2X^TXw - 2 X^TY = 0\\
w = (X^TX)^{-1}X^TY ∂ w ∂ L ( w ) = 2 X T Xw − 2 X T Y = 0 w = ( X T X ) − 1 X T Y