传统机器学习-线性回归(吴恩达机器学习笔记)

目录

模型的定义

损失函数

参数的求解

梯度法

正规方程解


模型的定义

将m个样本,n个特征的训练集表示为:(x_{1}^{(1)},x_{2}^{(1)},\cdots,x_{n}^{(1)},y{_{1}}), (x_{1}^{(2)},x_{2}^{(2)},\cdots,x_{n}^{(2)},y{_{2}}),\cdots ,(x_{1}^{(m)},x_{2}^{(m)},\cdots,x_{n}^{(m)},y{_{m}})

对于线性回归,我们假设(为了方便起见,我们令x_{0}=1

h_{\theta }(x) = \theta _{0} x_{0}+ \theta _{1}x_{1} + \theta _{2}x _{2} + \cdots + \theta _{n}x_{n} = \theta^{T}x

其中\theta_{i}(i=0,1,\cdots,n)是待学习的参数,x_{I}(i=1,2,\cdot\cdot\cdot,n)即是我们取的n个特征,其中第一项x_{0}=1,即是\theta_{0}表示截距。

损失函数

J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}) - y^{(i)})^{2}=\frac{1}{2m}(X\theta - y)^{T}(X\theta - y)

其中

X = \begin{bmatrix} 1 & x_{1}^{(1)} &x_{2}^{(1)} &\cdots &x_{n}^{(1)} \\ 1 & x_{1}^{(2)} & x_{2}^{(2)} &\cdots\ &x_{n}^{(2)} \\ \vdots & \vdots& \vdots &\ddots &\vdots \\ 1 & x_{1}^{(m)} & x_{2}^{(m)} &\cdots& x_{n}^{(m)} \end{bmatrix}y=\begin{bmatrix} y^{(1)}\\ y^{(2)}\\ \vdots\\ y^{(m)} \end{bmatrix}h_{\theta}(X) = X\theta = \begin{bmatrix} 1 & x_{1}^{(1)} &x_{2}^{(1)} &\cdots &x_{n}^{(1)} \\ 1 & x_{1}^{(2)} & x_{2}^{(2)} &\cdots\ &x_{n}^{(2)} \\ \vdots & \vdots& \vdots &\ddots &\vdots \\ 1 & x_{1}^{(m)} & x_{2}^{(m)} &\cdots& x_{n}^{(m)} \end{bmatrix} \begin{bmatrix} \theta _{0}\\\theta _{1}\\ \vdots\\ \theta _{n} \end{bmatrix}

目标是找到一组参数,使得预测值和真实值之间的差距最小,即要求一组参数使得损失函数最小。

\min_{\theta_{0},\theta_{1},\dots,\theta_{n}}(J(\theta))

参数的求解

梯度法

偏导数

\frac{\partial J(\theta)}{\theta_{0}} = \frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot1,  \frac{\partial J(\theta)}{\theta_{j}} = \frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{j}^{(i)}

参数的更新

\theta_{j} = \theta_{j} - \alpha \frac{\partial }{\partial \theta_{j}}(J(\theta_{0},\theta_{1},\cdots,\theta_{n}))

梯度下降法的执行过程

Gradient descent

   Repeat{

   \theta_{j} = \theta_{j} - \alpha\frac{1}{m}\sum_{i=0}^{m}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{j}^{(i)}

   }(同时更新j = 0, 1, \cdots, n )

用矩阵形式表示为

J(\theta)=\frac{1}{2m}(X\theta - y)^{T}(X\theta - y) \\ = \frac{1}{2m}(\theta^{T}X^{T}X\theta -y^{T}X\theta - \theta^{T}X^{T}y - y^{T}y) \\ = \frac{1}{2m}(\theta^{T}X^{T}X\theta -2y^{T}X\theta - y^{T}y)

其中,括号中的三项均为标量,求\theta的导数,按\theta的形状来求解比较容易。

梯度

Grad_{\theta}J = \frac{2}{m}(2X^{T}X\theta - 2X^{T}y) = \frac{1}{m}(X^{T}X\theta - X^{T}y)=\frac{1}{m}X^{T}(X\theta-y)

\triangledown J(\theta)=\begin{bmatrix} \partial J / \partial \theta_1 \\ \partial J / \partial \theta_2 \\ \partial J / \partial \theta_3 \\ \vdots \\ \partial J / \partial \theta_n \end{bmatrix} =\frac{1}{m}\begin{bmatrix} \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_1 \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_2 \\ \vdots \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_n \\ \end{bmatrix}

批量梯度下降

\frac{1}{m}\left.\begin{matrix} \begin{bmatrix} \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_0 \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_1 \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_2 \\ \vdots \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_n \\ \end{bmatrix} \end{matrix}\right| \\ \frac{1}{m} \cdot (X^{(1)}\theta - y^{(1)},X^{(2)}\theta - y^{(2)},X^{(3)}\theta - y^{(3)}, \cdots, X^{(m)}\theta - y^{(m)}) \cdot \\ \begin{bmatrix} X^{(1)}_0 & X^{(1)}_1 & X^{(1)}_2 & \cdots &X^{(1)}_n \\ X^{(2)}_0 & X^{(2)}_1 & X^{(2)}_2 & \cdots & X^{(2)}_n\\ X^{(3)}_0 & X^{(3)}_1& X^{(3)}_2& \cdots & X^{(3)}_n\\ \cdots&\cdots & \cdots &\cdots &\cdots\\ X^{(m)}_0& X^{(m)}_1& X^{(m)}_2&\cdots & X^{(4)}_n \end{bmatrix} =\frac{1}{m}\cdot(X\theta - y)^T\cdot X

随机梯度下降

\left.\begin{matrix} \frac{1}{m}\begin{bmatrix} \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_1 \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_2 \\ \vdots \\ \sum_{i=1}^m(X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_n \\ \end{bmatrix} \end{matrix}\right| \\ \begin{bmatrix} (X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_0\\ (X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_1 \\ (X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_2 \\ \vdots \\ (X^{(i)}\theta - y^{(i)}) \cdot X^{(i)}_n \\ \end{bmatrix} = ( X^{(i)})^T(X^{(i)}\theta - y^{(i)})

更新

\theta = \theta - \frac{\alpha}{m}X^{T}(X\theta-y)

小trick

1、当所有的特征取值范围相近时,梯度下降法更容易收敛,可以通过特征缩放做到,例如归一化处理。

2、绘制J(theta)随步数变化的曲线,或许有助于帮助学习率的调试,有助于发现损失函数是否真的在变小,通常这样取学习率,(0.001,0.01,...,1,10,...)。

正规方程解

Grad_{\theta}J =0

即是

X^{T}X\theta - X^{T}y=0\\ \Rightarrow X^{T}X\theta=X^{T}y\\ \Rightarrow \theta = (X^{T}X)^{-1}Xy

X^{T}X不可逆,可能的原因:

1.列向量线性相关,即训练集中存在冗余特征,此时应该剔除掉多余特征;

2.特征过多(例如:当样本总数 m 小于等于特征数 n 时,  则一定不可逆),此时应该去掉影响较小的特征,或使用“正则化”。

 

 

你可能感兴趣的:(机器学习,机器学习)