不同模型代价函数的梯度下降算法

梯度下降

reprat:θj=θjαJ(θ0,θ1θn)θjforj=0,1,n

多维情况

对于多维特征的时候,不同特征对应的取值范围可能会相差很大,这个时候对每个特征最好是进行变换,使得各个维度上的取值范围很相似。这时候的梯度下降速度才能得到保证,要不然很能会迭代很多次才能实现收敛。

可视化收敛判断

可以画出代价函数与迭代次数的函数图形
不同模型代价函数的梯度下降算法

简单线性回归

模型形式:

hθ(x)=θ0+θ1x

代价函数:
J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2

梯度下降算法:
repeatj:θ0=θ0α1mi=1m(hθ(x(i))y(i))θ1=θ1αi=1m(hθ(x(i))y(i))x(i)forj=0,1

多元回归

模型形式:

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

代价函数:
J(θ0,θ1θn)=12mi=1m(hθ(x(i))y(i))2

梯度下降算法:
repeatj:θj=θjα1mi=1m(hθ(x(i))y(i))x(i)forj=0,1,n

多元回归参数求解的正则实现

θ=(XTX)1XTY

逻辑回归

模型形式:

hθ(x)=g(θTx)=11+eθTx

其中函数g(z)是sigmoid函数,函数形式:

g(z)=11+ez

这样不论z的取值如何,函数都会被映射到[0,1]这个区间上。
不同模型代价函数的梯度下降算法
代价函数和前面线性回归模型的代价函数形式一样吗?
逻辑回归的代价函数如果定义为如下的形式:
J(θ)=12mi=1m(hθ(x(i))y(i))2

这对于一般线性模型可行的,但是对于逻辑回归却不行,原因是逻辑回归模型hθ(x)关于θ非凸函数,直接导致了代价函数也是非凸函数,直接求解参数的时候得到的是局部最优解,不是全局最优。所以要重新定义逻辑回归的代价函数。

逻辑回归代价函数:
重新定义逻辑回归的代价函数要从逻辑回归的本质来进行定义。首先是逻辑回归解决的是二分类的问题,采用模型预测的结果hθ(x)很像是归为1类的概率。当hθ(x(i))越接近于1的时候,我们就认为样本i归为1类的可能性就会越大。样本归为0类的可能性【也就是概率】是1hθ(x(i)),到这里的时候我们就很容易的可以看出这就像是概率论上的伯努利分布。每个样本的分布函数如下:

P=hθ(x(i))y(i)(1hθ(x(i)))1y(i)

下面要做的就是找到这样的参数θ,使得P最接近于真实分布。这时就把逻辑回归的代价函数转化成了伯努利分布的极大似然估计问题
逻辑回归的代价函数:
J(θ)=1mi=1m[y(i)log(hθ(x(i))+(1y(i))(1hθ(x(i)))]

并且此时的代价函数是凸函数,不会得到局部最优解。
梯度下降算法:
reprat:θj=θjαJ(θ0,θ1θn)θjforj=0,1,n

下面的任务就是计算J(θ0,θ1θn)θj,计算过程如下:
不同模型代价函数的梯度下降算法
计算过程中用到了sigmod函数的导数和sigmod函数之间的关系:
g(z)=g(z)(1g(z))

最终的逻辑回归梯度下降算法如下:

reprat:θj=θjα1mi=1m(hθ(x(i))y(i))xj(i)forj=0,1,n

可以看到最终的形式和线性回归的形式是相同的,虽然过程是完全不同的。