逻辑回归的实现步骤

本博客是学习大师Andrew Ng的视频课程进行的总结。

1.逻辑回归函数

        先说明一下,逻辑回归实际上是一种分类方法,主要用于二分类问题,它的输出在0` 1,代表了属于某一类的概率,如下式为输入X属于第1类的概率,记为,一般在概率大于0.5时,将输出结果判为1,否则为0.

            (1)

逻辑回归的函数形式为:

        (2)

Z是线性变换,线性变换经过某种转换关系可以更加接近真实值Y的预测值,这里的转换关系为

            (3)

称为sigmoid函数,就长这个样子:


2.代价函数

        假设训练样本共有 m 个 ,则上标 i 表示第i个样本,对于训练样本,我们希望预测的输出结果尽可能的接近真实的结果,即使

逻辑回归的损失函数为:

        (4)


定义代价函数为 m 个训练样本损失函数的平均值:

        (5)

它衡量了预测结果与真实结果之间的平均错误代价,优化的目标是最小化代价函数J(w,b)。

那么如果选择w,b 能使代价函数最小化呢?这里介绍梯度下降法求使代价函数最小化时的权重w,和偏移b。

3. 梯度下降

梯度下降是神经网络中训练模型最常用的一种优化方法,很多博客都对此有很详细的解释,比如返回主页

刘建平Pinard-梯度下降小节一文看懂常用的梯度下降算法等。

梯度下降中,w,b 的更新方式为:

        (6)

alpha为学习率learning-rate表示移动步长,梯度(dw,db,即当前点的斜率)指定了移动方向,梯度下降法是为了寻找极小值,因此是朝梯度的负方向移动,用图像表示即:

(来自网络)

图中曲线为代价函数(J),横坐标为w 或 b ,当梯度(斜率)为正时-(梯度指向右前方),经过式(6)的运算,w朝左更新,靠近曲线的最低点(梯度为0);当梯度(斜率)为负时-(梯度指向左前方),经过式(6)的运算,w朝右更新,靠近曲线的最低点,直到梯度为0 时,到达最小值,得到最优参数w,b 使 J 有最小值。 


4. 实现步骤

        有了以上的基础,我们来看一下逻辑回归的基本实现步骤。

        初始化W,b:W随机初始化为接近0的数,b则初始化为0

     (1) 计算预测的输出结果: 的计算方式如下,X,Z,A是 m 个样本的向量化矩阵,下标为矩阵维度,nx是每个样本的特征数量,因此X为(nx*m)的矩阵,W为(nx*1)的矩阵,b是一个常数,因为所有的样本只有一个b。A就是预测结果,

         (7)

    (2)计算损失函数:根据式(5)计算损失函数 J(w,b)


     (3)计算梯度:

       复合函数求导,结果如下:


    (4)根据公式(6)更新 w 和 b

    这里的alpha是超参数,可以根据模型进行调整以得到最优化的结果。

    更新w,b 后,在迭代次数内,再重复步骤(1)~(4),直到导数得到最小化的代价函数J(w,b)。

整个过程用paython伪代码表示为:

X = x_trian   # 训练样本
Y = y_trian
W = np.random.rand(X.shape[0],1)*0.01   #初始权重为很小的随机数
b = np.zeros((1,1))     # 初始b为0
learning_rate = 0.1    #步长
m = X.shape[1]          #样本数量
#迭代iter次后输出最终的优化参数 w ,b
for iter in range(1000):          #迭代iter次
    Z = np.dot(w.T,X) + b         #计算线性模型Z
    A = sigmoid(Z)               #进行sigmoid变换
    cost = -sum(np.dot(np.log(A),Y.T) + np.dot(np.log(1-A),1-Y.T)) / m   #代价函数
    dw = np.dot(X,(A-Y).T) / m       #权重方向的梯度
    db = np.sum(A - Y) / m           #偏置方向的梯度
    assert(dw.shape == w.shape)       #assert保证矩阵的维度正确
    assert(db.dtype == float)
    cost = np.squeeze(cost)
    assert(cost.shape == ())
    w = w - learning_rate * dw       #参数更新
    b = b - learning_rate * db
      迭代完成后,会得到一个优化的参数w,b,即逻辑回归模型的最终参数。这个参数可以通过改变迭代次数和步长进行选择,直达选择到合适的w,b






  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值