深度学习~向量化Logistic回归③

回顾Logistic回归

  • y^ = σ(wT x + b) , σ(z) = 1/(1+e-z) 是Logistic回归的表达式,其中y^为使用Logistic回归计算出来的预测值,而y为训练样本的真实值。
    在这里插入图片描述
    目标是想要得到一个w和b,使y^ ≈ y。
    z(i) = wTx(i) + b 可向量化为 Z = WTX + b。
    伪损失函数Loss(y^ , y) = 1/2×(y^ - y)2,而真实的损失函数为:
    在这里插入图片描述
    代价函数J(w,b) = 1/m × ∑mi=1Loss(y^(i),y(i)),即对Loss函数从1到m(m为训练样本集的容量)求和,再除以m。代价函数是基于参数w,b的总成本,因此在训练Logistic回归时,我们需要寻找合适的参数w和b以使代价函数J尽可能地小。

梯度下降法

  • 回顾Logistic回归。在这里插入图片描述
    使用梯度下降法寻找到合适的w,b使J尽可能地小。而(w,b,J)是一个三维空间内的碗形函数,因此通过梯度下降,一定会得到一个全局最优解。
    在这里插入图片描述
    梯度下降的迭代过程:
    在这里插入图片描述
    对于梯度下降中的参数更新,如下所示:
    在这里插入图片描述
    之后我们会将 dJ(w , b)/dw 记为 dw,b中的偏导项即为db。

Logistic回归中的梯度下降

  • 回顾Logistic回归:
    在这里插入图片描述
    假设此时我们只用两个训练样本x1和x2,还有w1,w2和b,那么这些参数可计算出z。使用偏导数流程图可表示为:
    在这里插入图片描述
    而Logistic回归的目的是寻找合适的参数,来使Loss函数尽可能地小。
  • 偏导数流程图:
    在这里插入图片描述

想要计算L(a,y),需要计算da,即dL(a,y)/da。再向前一步,计算出dz。
反向传播在Logistic回归中的应用:
在这里插入图片描述
即,从输出层开始,一步一步向前计算需要的偏导数。

m个参数的梯度下降

  • 代价函数J:
    J(w,b) = 1/m × Σmi=1L(a(i),y)
    其中,a(i) = y^(i) = sigmoid(z(i))
    实现m个参数的梯度下降,则需要使用向量化的方法。
  • 不使用向量化的累加过程:
    在这里插入图片描述
    做完累加之后,再对参数w和b进行更新。
  • 使用向量化,去掉了两个显示的for循环:

Python实现Logistic回归

源代码出处。

import numpy as np
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的逻辑回归模型的 Python 代码: ```python import numpy as np class LogisticRegression: def __init__(self, learning_rate=0.01, n_iters=1000): self.learning_rate = learning_rate self.n_iters = n_iters self.weights = None self.bias = None def fit(self, X, y): # Initialize parameters n_samples, n_features = X.shape self.weights = np.zeros(n_features) self.bias = 0 # Gradient descent for i in range(self.n_iters): linear_model = np.dot(X, self.weights) + self.bias y_predicted = self._sigmoid(linear_model) dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y)) db = (1 / n_samples) * np.sum(y_predicted - y) self.weights -= self.learning_rate * dw self.bias -= self.learning_rate * db def predict(self, X): linear_model = np.dot(X, self.weights) + self.bias y_predicted = self._sigmoid(linear_model) y_predicted_cls = [1 if i > 0.5 else 0 for i in y_predicted] return y_predicted_cls def _sigmoid(self, x): return 1 / (1 + np.exp(-x)) ``` 该逻辑回归模型包含以下方法: - `__init__(self, learning_rate=0.01, n_iters=1000)`: 初始化逻辑回归模型的学习率和迭代次数。 - `fit(self, X, y)`: 训练逻辑回归模型,其中 `X` 是训练数据的特征矩阵,`y` 是训练数据的标签向量。 - `predict(self, X)`: 使用训练好的逻辑回归模型进行预测,其中 `X` 是测试数据的特征矩阵。 - `_sigmoid(self, x)`: 使用 sigmoid 函数将线性模型的输出转换为概率值。 需要注意的是,在 `fit()` 方法中使用了梯度下降算法来最小化成本函数,其中计算梯度的过程需要使用矩阵乘法和转置运算,因此需要对输入数据进行转置和重塑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值