Logistic回归

来源:互联网 发布:小智淘宝店叫什么 编辑:程序博客网 时间:2024/06/15 19:58

逻辑回归

逻辑回归可以用来进行回归与分类,两者仅有略微不同,主体算法是一样的,本文以分类进行讲解。如下图二分类问题,我们希望找到一个直线(高维空间为超平面)来将数据划分开。 
这里写图片描述 
这样的线性边界可以表示为:θ0x1+θ1x2+...+θmxm=θTx 
上式右边x为向量。 
我们取预测函数为Sigmoid函数,Sigmoid函数有一个很棒的特点是它的导数f(x)=f(x)(1f(x)) 
则预测函数可表示为: 

P(y=1|x;θ)=hθ(x)
P(y=0|x;θ)=1hθ(x)

将这两个式子合并一下: 
P(y|x;θ)=(hθ(x))y(1hθ(x))1y

显然: 
当y=0的时候上式等价于P(y=0|x;θ)=1hθ(x) 
当y=1的时候上式等价于P(y=1|x;θ)=hθ(x)

取似然函数L(θ)=mi=1(hθ(x(i)))yi(1hθ(x(i)))1yi 
我们的目的就是求解似然函数的最大值,为了方便求解,我们取对数似然函数如下: 

logL(θ)=i=1m(yiloghθ(x(i))+(1yi)log(1hθ(x(i))))

如此,我们就可以使用如下的式子进行梯度上升算法迭代更新θ的取值: 

θj=θj+αlogL(θ))θj

下面求解logL(θ))θ 
logL(θ))θj=i=1m(yi1hθ(x(i))+(1yi)11hθ(x(i)))hθ(x(i))θj
=i=1m(yi1g(θTx(i))+(1yi)11g(θTx(i)))g(θTx(i))(1g(θTx(i)))x(i)
=i=1m(yi(1g(θTx(i)))(1yi)g(θTx(i)))x(i)
=i=1m(yig(θTx(i)))x(i)
=i=1m(yihθ(x(i)))x(i)

所以权重的迭代更新式为(最后一项xi应加上下标j): 
θj=θj+αi=1m(yihθ(x(i)))x(i)

其中α为更新率

梯度上升

有了以上的逻辑回归的理论基础,下面我们编程实现这一步骤。就以第一张图的样本为例进行,样本维数为2维,采用梯度上升算法进行迭代。 
迭代步数自己选择

批量梯度上升 
批量梯度上升每进行一次迭代更新就会计算所有样本,因此得到的模型正确率比较高,但同时计算复杂度高,算法耗时。计算过程如下: 
1.首先根据权重和训练样本计算估计值 

h=x(1)1x(2)1...x(m)1x(1)2x(2)2...x(m)2x(1)3x(2)3...x(m)3θ1θ2θ3=y1^y2^...ym^

2.计算误差 
error=yy^=y1y2...ymy1^y2^...ym^=e1e2...em

3.迭代更新 
w=w+x(1)1x(1)2x(1)3x(2)1x(2)2x(2)3.........x(m)1x(m)2x(m)3e1e2...emΔθ1Δθ2Δθ3

随机梯度上升 
根据样本数量进行迭代,每计算一个样本就进行一次更新,过程如下: 
1.计算x(i)样本对应的估计值 

h=(x(i)1x(i)2x(i)3)θ1θ2θ3

2.计算误差 
error=yih(number)

注意,此处的误差是个数,不再是个向量 
3.迭代更新 
w=w+αx(i)1x(i)2x(i)3error

以上步骤更新m次。
原创粉丝点击