机器学习算法之一 线性回归

1.线性预测函数定义

y^{(i)} = \theta ^{T}x^{(i))} + \varepsilon ^{(i)}

左侧为真实值,右侧为预测值与误差的和,其中\theta为权重矩阵。

2.目标函数的推导

2.1 高斯分布函数

误差\varepsilon ^{(i)}符合独立同分布假设,服从均值为0的高斯分布:

p(\varepsilon ^{(i)}) = \frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(\varepsilon ^{(i)})^{2}}{2\sigma ^{2}})

将线性函数带入,得:

p(y^{(i)}|x^{(i)};\theta ) = \frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})

2.2 最大似然函数

联合概率密度分布等于边缘概率密度分布的乘积,得似然函数:

L(\theta ) = \prod_{m}^{i=1} p(y^{(i)}|x^{(i)};\theta ) = \prod_{m}^{i=1} \frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})

取对数似然,得:

L(\theta ) = log \prod_{m}^{i=1} \frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}}) = \sum_{m}^{i=1}log \frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})

简化后得:

mlog\frac{1}{\sqrt{2\pi }\sigma }-\frac{1}{^{\sigma ^{2}}}\cdot \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta ^{T}x^{(i)})^{2}

2.3 定义目标函数

由于目标是尽量减少预测值和真实值之间的误差,所以希望对数似然函数越大越好,可知希望减号后的部分越小越好,得:

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

希望它越小越好,这就是最小二乘法。

3.最佳模型求解

3.1 最佳模型求解思路

由第2节目标函数的推导,可知线性回归的目的是求得最优权重矩阵\theta,使得目标函数值最小。一般情况下,我们会想到对目标函数对于\theta求导,得到使其值为0的解,即为最优\theta。直接求解方法如下:

目标函数的矩阵表示方法如下:

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

 U = X\theta - y

J(\theta) = \frac{1}{2} U^T U

关于U\theta求导,得:

\frac{\partial U}{\partial \theta} = X

J(\theta)关于U求导,得:

\frac{\partial J}{\partial U} = U = X\theta - y

根据链式法则,得:

\frac{\partial J}{\partial \theta} = \frac{\partial J}{\partial U} \frac{\partial U}{\partial \theta} = (X\theta - y)^T X

令其为0,得:

(X\theta - y)^T X = \theta^T X^T X - y^T X = 0

假设X^T X可逆,求解,得:

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

但是该方法存在一个前提,即

1.函数必须是可导的;

2.可以找到一阶导数等于零的点;

3.通过二阶导数判断该点为局部极小值点;

4.该点的函数值为定义域内的最小值

所以,求导并不一定可解。由此,需要一个新的方法进行求解。即梯度下降方法。

3.2 梯度下降

即然无法直接求得函数最值点,即最优\theta,那么就需要从随机点开始,沿指定方向不断移动,逼近最值点,从而求得最优解。由于特征可能存在多个,需要独立对不同的权重进行求偏导。该方法就像从山顶下山寻找最优路径一样。梯度下降的方法常用的有以下几种:

1.批量梯度下降

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

2.随机梯度下降

\frac{\partial(J(\theta)) }{\partial \theta_{j}^{}} =-(y^{(i)}-h_{\theta }(x^{(i)})x_{j}^{i}

3.小批量梯度下降

\frac{\partial(J(\theta)) }{\partial \theta_{j}^{}} =-\frac{1}{10}\sum_{k=i}^{i+9}(y^{(i)}-h_{\theta }(x^{(k)})x_{j}^{k}

3.3 参数更新

在确定梯度下降方向后,需要对权重进行更新:

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

其中\alpha为学习率。

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值