logistic回归模型定义
考虑具有n个独立变量的向量 x=(x1,x2,...,xn) ,设条件概率 p(a=1|x)=p 为根据测量为相对于某件事发生的概率,则logistic回归模型为: p(a=1|x)=π(x)=11+e−z 。这里的 a=11+e−z 称为logistic函数。其中 z=w0+w1x1+...+wnxn 。
损失函数
L(a,y)=−(yloga+(1−y)log(1−a)) 。其中 a=11+e−z 。a是逻辑回归模型的输出,y是样本的基本真值标签值。损失函数是衡量的是单个样本,越小越好。
成本函数
J(w,b)=1m∑mi=1L(ai,yi)=−1m∑mi=1[yilogai+(1−yi)log(1−ai)] 。成本函数衡量的是在全体训练样本上的体现,越小越好。
导数计算
根据
L(a,y)=−(yloga+(1−y)log(1−a))
公式计算a变量的偏导,有
da=dL(a,y)da=−ya+1−y1−a
。
根据
a=11+e−z
可以求出z的导数,有
dadz=(11+e−z)′=−e−z∗(−1)(1+e−z)2=a∗(1−a)
。
根据链式法则,
dz=dLdz=dLda∗dadz=a(1−a)∗(−ya+1−y1−a)=a−y
。
dw1=dLda∗dzdw1=x1dz
dw2=dLda∗dzdw2=x2dz
db=dz
梯度下降法
w1=w1−αdw1
w2=w2−αdw2
b=b−αdb
dw1、dw2、db
在上面的导数计算中已经计算出。
在m个样本中的逻辑回归
在m个样本中的逻辑回归的伪代码如下。
J=0;dw1=0;dw2=0;db=0;
fori=1−−to−−m
z(i)=wTx(i)+b
a(i)=δ(z(i))
J+=−[y(i)loga(i)+(1−y(i)log(1−a(i)))]
dz(i)=a(i)−y(i)
dw1+=x(i)1dz(i)
dw2+=x(i)2dz(i)
db+=dz(i)
J/=m
dw1/=m
dw2/=m
db/=m
使用梯度下降法进行迭代:
w1=w1−αdw1
w2=w2−αdw2
b=b−αdb
利用上面这种方法我们使用了两个循环,一个是在计算m个样本的时候,两一个是在便利所有的特征的时候(n个dw值),这样就会大大降低程序的效率,而使用向量化能大大加快运算速度。