为了账号安全,请及时绑定邮箱和手机立即绑定

机器学习算法 之 线性回归(linear regreesion)

标签:
机器学习

linear regreesion(线性回归)

我们将用来描述回归问题的标记如下:

mm代表训练集中实例的数量

nn代表特征的数量

x(i)x(i)表示第ii个训练实例,是特征矩阵的第i行,是一个向量

x(i)jxj(i)表示特征矩阵中第ii行的第jj个特征,也就是第ii个训练实例的第jj个特征

yy代表目标变量,也就是输出变量

(x,y)(x,y)代表训练集中的一个实例

(x(i),y(i))(x(i),y(i))代表第ii个观察实例

hh代表学习算法的函数,或者加假设(hypothesis)

对于多变量线性回归,假设函数可以设为

hθ(x)=θ0+θ1x1+θ2x2+...+θnxnhθ(x)=θ0+θ1x1+θ2x2+...+θnxn


为了使公式能够简化,引入x0=1x0=1,则假设函数变为

hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxnhθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn

,进行向量化后,最终结果为

hθ(x)=θTXhθ(x)=θTX


我们需要求出θθ,使得对于每一个样本,带入到假设函数中,能得到对应的一个预测值,而我们的目标,是使求出的预测值尽可能的接近真实值

通过最大似然估计来推导目标函数

由于我们实际预测的值和真实值之间肯定会有误差,对于每个样本:

y(i)=θTx(i)+ε(i)y(i)=θTx(i)+ε(i)

其中,y(i)y(i)为当前样本实际真实值,θTx(i)θTx(i)为预测结果,ε(i)ε(i)即为预测误差


对于整个数据集来说,则:

Y=θTX+εY=θTX+ε


误差ε(i)ε(i)是独立的并且具有相同的分布,并且服从均值为0,方差为θ2θ2的正态分布
正态分布

由于误差服从正态分布,所以:

p(ε(i))=12π−−√σexp⟮−(ε(i))22σ2⟯p(ε(i))=12πσexp(ε(i))22σ2


带入得:

p(y(i)x(i);θ)=12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯p(y(i)x(i);θ)=12πσexp(y(i)θTx(i))22σ2


我们希望误差越接近0越好,由于误差服从均值为0的正态分布,所以对应误差越接近分布的中心处越好。我们可以近似的用对应概率pp来表示当前正态分布的纵坐标值,则由于各个样本的误差互相独立,所以,将每个样本误差概率相乘,得总似然函数为:

L(θ)=∏i=1mp(y(i)x(i);θ)=∏i=1m12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯L(θ)=i=1mp(y(i)x(i);θ)=i=1m12πσexp(y(i)θTx(i))22σ2


我们的问题是希望找到合适的θθ,与我们的数据组合后尽可能的接近真实值
所以我们需要求解上述似然函数的针对于θθ最大值,即求解最大似然函数

由于上述似然函数中的累乘运算过于复杂,我们可以将其进行转换,变成对数似然,求加和,即:

logL(θ)=log∏i=1m12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯=∑i=1mlog(12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯)=∑i=1m[log(12π−−√σ)+log(exp⟮−(y(i)−θTx(i))22σ2⟯)]=mlog(12π−−√σ)−∑i=1m((y(i)−θTx(i))22σ2)=mlog(12π−−√σ)−12σ2∑i=1m(y(i)−θTx(i))2logL(θ)=logi=1m12πσexp(y(i)θTx(i))22σ2=i=1mlog(12πσexp(y(i)θTx(i))22σ2)=i=1m[log(12πσ)+log(exp(y(i)θTx(i))22σ2)]=mlog(12πσ)i=1m((y(i)θTx(i))22σ2)=mlog(12πσ)12σ2i=1m(y(i)θTx(i))2


上述公式中,m,σ,y(i),x(i)m,σ,y(i),x(i)都是已知的,只有θθ是未知的。
所以我们的目标是 找出一组θθ,使上述似然函数最大,即求最大似然函数。
由于只有θθ是未知的。上述问题可以转换为,求∑mi=1(y(i)−θTx(i))2i=1m(y(i)θTx(i))2的最小值

最终,得出我们的目标函数(也称为代价函数)为:

J(θ)=12∑i=1m(y(i)−θTx(i))2(此处加上1/2是为了求偏导时计算方便)J(θ)=12i=1m(y(i)θTx(i))2(1/2便)


进行向量化:

J(θ)=12(Xθ−y)T(Xθ−y)J(θ)=12(Xθy)T(Xθy)


正规方程

要求J(θ)J(θ)取得最小值时对应的θθ值,一个办法就是求偏导。由于J(θ)J(θ)为凸函数,所以在偏导等于0处取得最小值,此时的θθ即为我们所需要的,并且也是最优解
这种直接令偏导等于0,解方程得出θθ的方法称为正规方程

∇θJ(θ)=∇θ(12(Xθ−y)T(Xθ−y))=∇θ(12(θTXT−yT)(Xθ−y))=∇θ(12(θTXTXθ−θTXTy−yTXθ+yTy))=12(2XTXθ−XTy−(yTX)T)=XTXθ−XTyθJ(θ)=θ(12(Xθy)T(Xθy))=θ(12(θTXTyT)(Xθy))=θ(12(θTXTXθθTXTyyTXθ+yTy))=12(2XTXθXTy(yTX)T)=XTXθXTy


∇θJ(θ)=0θJ(θ)=0,得:

θ=(XTX)−1XTyθ=(XTX)1XTy


虽然,通过正规方程,可以求得最优解,但是,在实际项目中,我们的样本数量以及每个样本的特征
数量非常大,这个时候,采用正规方程,算法的时间复杂度太高,耗时太高,甚至由于样本呢和特征过大,或者矩阵不可逆,导致无法计算。
尤其对于矩阵求逆来说更是如此。所以,一般对于样本数量和特征数量较少时可以采用此种求解方式。

对于一般情况,我们需要采用另外一种非常经典的优化算法,即
梯度下降法

梯度下降法

对于直接求解正规方程的方式,首先,并不一定可解,另外,时间复杂度过高。
而机器学习的常规套路,都是使用梯度下降法,去求解最小值问题。

梯度下降背后的思想是:

开始时我们随机选择一组参数(θ1,θ2,θ3,......θn)θ1,θ2,θ3,......θn.计算对应代价函数,然后我们需要寻找下一组能让代价函数值下降最多的参数组合,一直迭代这个过程,直到最后代价函数值收敛,即找到一个局部最小值. 此时对应的(θ1,θ2,θ3,......θn)θ1,θ2,θ3,......θn即为我们需要求的结果.

我们并没有尝试找出所有的θθ参数组合,所以,不能确定我们得到的局部最小值是否是全局最小值。 但是,对于线性回归的代价函数来说,其实本身是个凸优化问题,所以局部最小值即为全局最小值!

换个思路来理解,比如,你现在站在山上某一点,你需要下山,到达山底(即需要找到最小值点)

批量梯度下降

批量梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,都需要对整个样本的代价函数J(θ)J(θ)求对应梯度  
他的优点是 容易得到最优解,但是由于每次都需要考虑所有样本,所以速度很慢
下面看下具体数学表示

对于某次迭代

θj:=θj−α∂∂θjJ(θ):=θj−α∂∂θj12m∑i=1m(hθ(x(i))−y(i))2:=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)jθj:=θjαθjJ(θ):=θjαθj12mi=1m(hθ(x(i))y(i))2:=θjα1mi=1m(hθ(x(i))y(i))xj(i)


其中,j=0,1,2,3,...nj=0,1,2,3,...n,即特征个数


进行向量化后,对于每次迭代

θ:=θ−α1mXT(Xθ−y)θ:=θα1mXT(Xθy)


随机梯度下降

随机梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,只需要找一个样本求对应梯度,进行更新。
他的优点是 迭代速度快,但是不一定每次都朝着收敛的方向
具体数学表示为:

θj:=θj−α(hθ(x(i))−y(i))x(i)jθj:=θjα(hθ(x(i))y(i))xj(i)


小批量梯度下降

批量梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,找一部分样本求对应梯度,进行更新。

θj:=θj−α164∑k=ii+63(hθ(x(k))−y(k))x(k)jθj:=θjα164k=ii+63(hθ(x(k))y(k))xj(k)


小批量梯度下降 其实就是上述两种方法的权衡,实际应用中,大部分也都用此算法

学习率(步长)

梯度下降法中有两个因素,一个是方向,即梯度,另外一个就是学习率αα,也就是步长。

如果学习率过小,则达到收敛(也就是近似接近于最小值)所需要的迭代次数会非常高。
学习率过大,则可能会越过局部最小值点,导致无法收敛

linear regreesion(线性回归)

我们将用来描述回归问题的标记如下:

mm代表训练集中实例的数量

nn代表特征的数量

x(i)x(i)表示第ii个训练实例,是特征矩阵的第i行,是一个向量

x(i)jxj(i)表示特征矩阵中第ii行的第jj个特征,也就是第ii个训练实例的第jj个特征

yy代表目标变量,也就是输出变量

(x,y)(x,y)代表训练集中的一个实例

(x(i),y(i))(x(i),y(i))代表第ii个观察实例

hh代表学习算法的函数,或者加假设(hypothesis)

对于多变量线性回归,假设函数可以设为

hθ(x)=θ0+θ1x1+θ2x2+...+θnxnhθ(x)=θ0+θ1x1+θ2x2+...+θnxn


为了使公式能够简化,引入x0=1x0=1,则假设函数变为

hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxnhθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn

,进行向量化后,最终结果为

hθ(x)=θTXhθ(x)=θTX


我们需要求出θθ,使得对于每一个样本,带入到假设函数中,能得到对应的一个预测值,而我们的目标,是使求出的预测值尽可能的接近真实值

通过最大似然估计来推导目标函数

由于我们实际预测的值和真实值之间肯定会有误差,对于每个样本:

y(i)=θTx(i)+ε(i)y(i)=θTx(i)+ε(i)

其中,y(i)y(i)为当前样本实际真实值,θTx(i)θTx(i)为预测结果,ε(i)ε(i)即为预测误差


对于整个数据集来说,则:

Y=θTX+εY=θTX+ε


误差ε(i)ε(i)是独立的并且具有相同的分布,并且服从均值为0,方差为θ2θ2的正态分布
正态分布

由于误差服从正态分布,所以:

p(ε(i))=12π−−√σexp⟮−(ε(i))22σ2⟯p(ε(i))=12πσexp(ε(i))22σ2


带入得:

p(y(i)x(i);θ)=12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯p(y(i)x(i);θ)=12πσexp(y(i)θTx(i))22σ2


我们希望误差越接近0越好,由于误差服从均值为0的正态分布,所以对应误差越接近分布的中心处越好。我们可以近似的用对应概率pp来表示当前正态分布的纵坐标值,则由于各个样本的误差互相独立,所以,将每个样本误差概率相乘,得总似然函数为:

L(θ)=∏i=1mp(y(i)x(i);θ)=∏i=1m12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯L(θ)=i=1mp(y(i)x(i);θ)=i=1m12πσexp(y(i)θTx(i))22σ2


我们的问题是希望找到合适的θθ,与我们的数据组合后尽可能的接近真实值
所以我们需要求解上述似然函数的针对于θθ最大值,即求解最大似然函数

由于上述似然函数中的累乘运算过于复杂,我们可以将其进行转换,变成对数似然,求加和,即:

logL(θ)=log∏i=1m12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯=∑i=1mlog(12π−−√σexp⟮−(y(i)−θTx(i))22σ2⟯)=∑i=1m[log(12π−−√σ)+log(exp⟮−(y(i)−θTx(i))22σ2⟯)]=mlog(12π−−√σ)−∑i=1m((y(i)−θTx(i))22σ2)=mlog(12π−−√σ)−12σ2∑i=1m(y(i)−θTx(i))2logL(θ)=logi=1m12πσexp(y(i)θTx(i))22σ2=i=1mlog(12πσexp(y(i)θTx(i))22σ2)=i=1m[log(12πσ)+log(exp(y(i)θTx(i))22σ2)]=mlog(12πσ)i=1m((y(i)θTx(i))22σ2)=mlog(12πσ)12σ2i=1m(y(i)θTx(i))2


上述公式中,m,σ,y(i),x(i)m,σ,y(i),x(i)都是已知的,只有θθ是未知的。
所以我们的目标是 找出一组θθ,使上述似然函数最大,即求最大似然函数。
由于只有θθ是未知的。上述问题可以转换为,求∑mi=1(y(i)−θTx(i))2i=1m(y(i)θTx(i))2的最小值

最终,得出我们的目标函数(也称为代价函数)为:

J(θ)=12∑i=1m(y(i)−θTx(i))2(此处加上1/2是为了求偏导时计算方便)J(θ)=12i=1m(y(i)θTx(i))2(1/2便)


进行向量化:

J(θ)=12(Xθ−y)T(Xθ−y)J(θ)=12(Xθy)T(Xθy)


正规方程

要求J(θ)J(θ)取得最小值时对应的θθ值,一个办法就是求偏导。由于J(θ)J(θ)为凸函数,所以在偏导等于0处取得最小值,此时的θθ即为我们所需要的,并且也是最优解
这种直接令偏导等于0,解方程得出θθ的方法称为正规方程

∇θJ(θ)=∇θ(12(Xθ−y)T(Xθ−y))=∇θ(12(θTXT−yT)(Xθ−y))=∇θ(12(θTXTXθ−θTXTy−yTXθ+yTy))=12(2XTXθ−XTy−(yTX)T)=XTXθ−XTyθJ(θ)=θ(12(Xθy)T(Xθy))=θ(12(θTXTyT)(Xθy))=θ(12(θTXTXθθTXTyyTXθ+yTy))=12(2XTXθXTy(yTX)T)=XTXθXTy


∇θJ(θ)=0θJ(θ)=0,得:

θ=(XTX)−1XTyθ=(XTX)1XTy


虽然,通过正规方程,可以求得最优解,但是,在实际项目中,我们的样本数量以及每个样本的特征
数量非常大,这个时候,采用正规方程,算法的时间复杂度太高,耗时太高,甚至由于样本呢和特征过大,或者矩阵不可逆,导致无法计算。
尤其对于矩阵求逆来说更是如此。所以,一般对于样本数量和特征数量较少时可以采用此种求解方式。

对于一般情况,我们需要采用另外一种非常经典的优化算法,即
梯度下降法

梯度下降法

对于直接求解正规方程的方式,首先,并不一定可解,另外,时间复杂度过高。
而机器学习的常规套路,都是使用梯度下降法,去求解最小值问题。

梯度下降背后的思想是:

开始时我们随机选择一组参数(θ1,θ2,θ3,......θn)θ1,θ2,θ3,......θn.计算对应代价函数,然后我们需要寻找下一组能让代价函数值下降最多的参数组合,一直迭代这个过程,直到最后代价函数值收敛,即找到一个局部最小值. 此时对应的(θ1,θ2,θ3,......θn)θ1,θ2,θ3,......θn即为我们需要求的结果.

我们并没有尝试找出所有的θθ参数组合,所以,不能确定我们得到的局部最小值是否是全局最小值。 但是,对于线性回归的代价函数来说,其实本身是个凸优化问题,所以局部最小值即为全局最小值!

换个思路来理解,比如,你现在站在山上某一点,你需要下山,到达山底(即需要找到最小值点)

批量梯度下降

批量梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,都需要对整个样本的代价函数J(θ)J(θ)求对应梯度  
他的优点是 容易得到最优解,但是由于每次都需要考虑所有样本,所以速度很慢
下面看下具体数学表示

对于某次迭代

θj:=θj−α∂∂θjJ(θ):=θj−α∂∂θj12m∑i=1m(hθ(x(i))−y(i))2:=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)jθj:=θjαθjJ(θ):=θjαθj12mi=1m(hθ(x(i))y(i))2:=θjα1mi=1m(hθ(x(i))y(i))xj(i)


其中,j=0,1,2,3,...nj=0,1,2,3,...n,即特征个数


进行向量化后,对于每次迭代

θ:=θ−α1mXT(Xθ−y)θ:=θα1mXT(Xθy)


随机梯度下降

随机梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,只需要找一个样本求对应梯度,进行更新。
他的优点是 迭代速度快,但是不一定每次都朝着收敛的方向
具体数学表示为:

θj:=θj−α(hθ(x(i))−y(i))x(i)jθj:=θjα(hθ(x(i))y(i))xj(i)


小批量梯度下降

批量梯度下降,其实就是在每次迭代中,在更新一组参数θ(θ1,θ2,θ3,......θn)θθ1,θ2,θ3,......θn中的任意一个时,找一部分样本求对应梯度,进行更新。

θj:=θj−α164∑k=ii+63(hθ(x(k))−y(k))x(k)jθj:=θjα164k=ii+63(hθ(x(k))y(k))xj(k)


小批量梯度下降 其实就是上述两种方法的权衡,实际应用中,大部分也都用此算法

学习率(步长)

梯度下降法中有两个因素,一个是方向,即梯度,另外一个就是学习率αα,也就是步长。

如果学习率过小,则达到收敛(也就是近似接近于最小值)所需要的迭代次数会非常高。
学习率过大,则可能会越过局部最小值点,导致无法收敛

原文出处

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消