逻辑回归

Logistic Regression

推导:

logit->sigmoid=P

:logit::S:P(y=1|x),P;1-Plogit(x)=ln(P1P)=w0+w1x1+w2x2++wmxmP(y=1|x)=P=11+ez :z=w0+w1x1+w2x2++wmxmf(z)=11+ez(,+),(0,1)

image

cost 函数

似然函数->max;-ln(似然函数)->min(v凸函数)

::,:L=iPiL(w)P(y=0)L(w)cost(w):=iNP(xi|y=1)yiP(xi|y=0)1yiargw max  L(w)argw min L(w)=1P(y=1)ln,,Loss:=yiilnP(1yi)iln(1P)=inyiz+inln(1+ez)=inyiwxi+inln(1+ewxi)argw min cost(w)(0,1)lnx;ln(1x) v,min=min


优化求解

 L(w)  w :ln(1+ewxi)wL(w)=(1+ewxi)(1+ewxi)=ewxi (wxi)(1+ewxi)=ewxi xi(1+ewxi)=11+ewxi xi=f(wxi) xi=Pi xi=inyi xi+in[ln(1+ewxi)]=in(Piyi) xi

梯度法求解:BGD,SGD

  • BGD-> python code […]
其他方法:共轭梯度法、BFGS、L-BFGS

 
 

 

python代码实现 BGD SGD

import numpy as np

def sigmoid(z):
    return 1/(1+np.exp(-z))

def gradDesc(x,y,lr=0.01,loop=402,opt='gd'):
    w=np.zeros(len(x[0]))
    b=0
    if opt'gd': #梯度下降法
        for i in range(loop):
            error=sigmoid((x.dot(w)+b))-y #P_i-y_i
            #grad_w=\sum_i^N (p_i-y_i)*x_i
            w-=lr*np.dot(error,x)
            b-=lr*(error.sum())   #grad_b,(x_i=1)即可
    elif opt'sgd': #随机梯度下降法
        for looper in range(loop):
            for i in range(len(y)):
                #  print(w.dot(x[i],w))
                error=sigmoid(w.dot(x[i])+b)-(y[i])
                w-=lr*error*(x[i])
                b-=lr*error
    elif opt'xx':
        pass
    else:
        print('Not support this optimize method')
        #raise error
    return w,b   


if __name__ '__main__':
    # x_train,y_train
    x=np.array([[0,0],[1,1],[0,1],[1,0],[2,1],[3,3],[1,2],[1,3],[0.9,0.9]])
    y=np.array([0,0,0,0,1,1,1,1,1])
    w,b=gradDesc(x,y,lr=0.001,opt='sgd',loop=10000)
    print(':',w/b,b)
    import matplotlib.pyplot as plt
    plt.scatter(x[:,0],x[:,1],c=y)
    x_plot=np.array([x.min(),x.max()],dtype='float32')
    y_plot=-(x_plot*w[0]+b)/(w[1])
    plt.plot(x_plot,y_plot)
    plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值