机器学习第五章——多变量线性回归(第三四章是线代和配置不再详细总结)

多特征的假设函数:

具有多个变量的线性回归也被称为“多元线性回归”。

$x_{j}^{(i)}$: 训练集第 i 个向量中的第 j 个元素(第 i 行第 j 列)
$x^{(i)}$: 训练集第 i 个向量(第 i 行)
$ m $: 总共 m 行
$ n $: 总共 n 列

适应这些多特征的假设函数的多变量形式如下:

$$ h_{\theta}(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} + \theta_{3}x_{3} + \cdots + \theta_{n}x_{n} $$

使用矩阵乘法的定义,我们的多变量假设函数可以简洁地表示为:

$$ h_{\theta}(x) = \begin{bmatrix} \theta_{0} & \theta_{1} & \cdots  & \theta_{n} \end{bmatrix} \begin{bmatrix} x_{0}\\  x_{1}\\   \vdots \\  x_{n} \end{bmatrix} = \theta^{T}x$$

其中 $ x_{0}^{(i)} = 1 (i\in 1,\cdots,m)$

多变量梯度下降:

代价函数:

多个变量的梯度下降,同时更新 n 个变量。

将对代价函数求导化简为:

$$ \theta_{j} := \theta_{j} - \alpha \frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_{j}$$

其中 $ j \in [0,n]$

 

梯度下降实践1-特征缩放:

特征缩放包括将输入值除以输入变量的范围(即最大值减去最小值),导致新的范围仅为1。

均值归一化包括从输入变量的值中减去输入变量的平均值,从而导致输入变量的新平均值为零。

1. 特征缩放

特征缩放让特征值取值范围都比较一致,这样在执行梯度下降的时候,“下山的路线”会更加简单,更快的收敛。通常进行特征缩放都会把特征值缩尽量缩放到 [-1,1] 之间或者这个区间附近

即 $ x_{i} = \frac{x_{i}}{s_{i}}$

2. 均值归一化

$ x_{i} = \frac{x_{i} - \mu_{i}}{s_{i}}$

其中,$\mu_{i}$ 是特征值的所有值的平均值,$s_{i}$ 是值的范围(最大 - 最小),或者 $s_{i}$ 是标准偏差

当然 $x_{0} = 1$ 就不需要经过上述的处理了,因为它永远等于1,不能有均值等于0的情况。

梯度下降法实践2- 学习率

学习率 $\alpha $ 太小:会导致收敛速度过慢的问题。

学习率 $\alpha $ 太大:代价函数可能不会在每次迭代中都下降,甚至可能不收敛,在某种情况下,学习率 $\alpha $ 过大,也有可能出现收敛缓慢。

可以通过绘制代价函数随迭代步数变化的曲线去调试这个问题。

$\alpha $ 的取值可以从 0.001,0.003,0.01,0.03,0.1,0.3,1 这几个值去尝试,选一个最优的。

 

特征与多项式回归

可以通过改造特征值,例如合并2个特征,用 $ x_{3}$ 来表示 $ x_{1} * x_{2} $

在多项式回归中,针对 $ h_{\theta}(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{1}^{2} + \theta_{3}x_{1}^{3} $ ,我们可以令 $ x_{2} = x_{1}^{2} , x_{3} = x_{1}^{3} $ 降低次数。

还可以考虑用根号的式子,例如选用 $ h_{\theta}(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}\sqrt{x} $

通过上述转换以后,需要记得用特征值缩放,均值归一化,调整学习速率的方式调整一下

正规方程

正规方程法相对梯度下降法,它可以一步找到最小值。而且它也不需要进行特征值的缩放。

样本集是 $ m * n $ 的矩阵,每行样本表示为 $ \vec{x^{(i)}} $ ,第 i 行第 n 列分别表示为 $ x^{(i)}_{0} , x^{(i)}_{1} , x^{(i)}_{2} , x^{(i)}_{3} \cdots x^{(i)}_{n} $, m 行向量分别表示为 $ \vec{x^{(1)}} , \vec{x^{(2)}} , \vec{x^{(3)}} , \cdots \vec{x^{(m)}} $

$$ \vec{x^{(i)}} = \begin{bmatrix} x^{(i)}_{0}\\ x^{(i)}_{1}\\ \vdots \\ x^{(i)}_{n}\\ \end{bmatrix} $$

$ \vec{x^{(i)}} $ 是这样一个 $(n+1)*1$ 维向量。每行都对应着 i 行 0-n 个变量。

再构造几个矩阵:

$$ X = \begin{bmatrix} (\vec{x^{(1)}})^{T}\\  \vdots \\  (\vec{x^{(m)}})^{T} \end{bmatrix} \;\;\;\; \Theta = \begin{bmatrix} \theta_{0}\\ \theta_{1}\\ \vdots \\ \theta_{n}\\ \end{bmatrix} \;\;\;\; Y = \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ \vdots \\ y^{(m)}\\ \end{bmatrix}  $$

X 是一个 $ m * (n+1)$ 的矩阵,$ \Theta $ 是一个 $ (n+1) * 1$ 的向量,Y 是一个 $ m * 1$的矩阵。

对比之前代价函数中,$$ \rm{CostFunction} = \rm{F}({\theta_{0}},{\theta_{1}}) = \frac{1}{2m}\sum_{i = 1}^{m} (h_{\theta}(x^{(i)})-y^{(i)})^2 $$

$$ \begin{align*} X \cdot \Theta - Y =  \begin{bmatrix} (\vec{x^{(1)}})^{T}\\  \vdots \\  (\vec{x^{(m)}})^{T} \end{bmatrix} \cdot  \begin{bmatrix}  \theta_{0}\\  \theta_{1}\\  \vdots \\  \theta_{n}\\  \end{bmatrix} -  \begin{bmatrix}  y^{(1)}\\  y^{(2)}\\  \vdots \\  y^{(m)}\\  \end{bmatrix} =  \begin{bmatrix}  h_{\theta}(x^{(1)})-y^{(1)}\\  h_{\theta}(x^{(2)})-y^{(2)}\\  \vdots \\  h_{\theta}(x^{(m)})-y^{(m)}\\  \end{bmatrix} \end{align*}$$

代入到之前代价函数中,$$  \begin{align*} \rm{CostFunction} = \rm{F}({\theta_{0}},{\theta_{1}}) &= \frac{1}{2m}\sum_{i = 1}^{m} (h_{\theta}(x^{(i)})-y^{(i)})^2\\ & = \frac{1}{2m} (X \cdot \Theta - Y)^{T}(X \cdot \Theta - Y)\\ \end{align*} $$

正规方程是通过求解下面的方程来找出使得代价函数最小的参数的(对代价函数求各个参数的偏导令其等于0,其各个从参数的值,一下的F符号等于J):

最后利用正规方程解出向量 $$\Theta = (X^{T}X)^{-1}X^{T}Y$$

但是这里有一个前提条件是 $X^{T}X$ 是非奇异(非退化)矩阵, 即 $ \left | X^{T}X \right | \neq 0 $

其中的推导过程详见(转载自halfrost):https://blog.csdn.net/qq_36782366/article/details/89021658

梯度下降与正规方程的比较:

梯度下降

正规方程

需要选择学习率?(缺点)

不需要选择学习率?

需要多次迭代(缺点)

一次运算得出

当特征数量?大时也能较好适用(优点)

n>=10^6都可以很快的计算

需要计算(???)−1 如果特征数量?较大则运算代价大,因为矩阵逆的计算时间复杂度为?(?3),通常来说当?小于 10000 时还是可以接受的

适用于各种类型的模型

只适用于线性模型,不适合逻辑回归模型等其他模型

正规方程及其不可逆性

导致$ X^{T}X $ 不存在逆矩阵有2种情况:

  1. 多余的特征,存在冗余性。特征之间呈倍数关系,线性依赖。例如其中两个特性线性相关,x1=kx2,k为常数。
  2. 过多的特征。当 $ m \leqslant n $ 的时候,会导致过多的特征。解决办法是删除一些特征,或者进行正则化。

所以解决$ X^{T}X $ 不存在逆矩阵的办法也就是对应上面2种情况:

  1. 删掉多余的特征,线性相关的,倍数关系的。直到没有多余的特征
  2. 再删除一些不影响结果的特征,或者进行正则化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值