深度学习之逻辑回归

目录

前言:

原理:

损失函数:

对数损失函数:

梯度下降求解和b:

   代码实现:


前言:

     逻辑回归一般时解决分类问题某和估计某事发生的的可能,事实上它是被逻辑回归方程归一化的线性回归。

原理:

损失函数:

    首先要求出逻辑回归方程,它是由一元线性回归方程经过Singmoid函数的处理得到。逻辑回归求出的结果是0,1 的概率值,显然一元线性回归无法办到,这里引用了一个Singmoid函数:y=\frac{1}{1+e^{-z}}  (1),一元线性回归方程为:z=\theta *x+b (2),逻辑回归方程为:y=\frac{1}{1+e^{-\theta *x+b}}  (3),逻辑回归方程 的结果为0和1,当为零的方程为:

y=\frac{1}{1+e^{-\theta *x+b}}(4),当结果为1时的方程为:y=\frac{e^{-\theta *x+b}}{1+e^{-\theta *x+b}} (5),故将两者合起来损失函数为:p\left ( Y=y|x \right )=y*\frac{1}{1+e^{-(\theta x+b)}}+(1-y)*\frac{e^{-(\theta x+b)}}{1+e^{-(\theta x+b)}}(6)(这里当Y=1 时(6)式子为(4)当Y=0时,式子为(5))

对数损失函数:

       将(4)式和(5)式分别取对数,代入到(6)式中得:L(Y=y|x)=-y*ln\frac{1}{1+e^{-(\theta *x+b)}}-(1-y)*(1-ln\frac{1}{1+e^{-(\theta *x+b)}})   (7)

经过化简得:

 L(Y=y|x)=ln[1+e^{-(\theta x+b)}]+(y-1)*(\theta *x+b)    ( 8 )

N个数据的损失函数为:

Loss L(\theta ,b)=\sum_{1}^{n}ln[1+e^{-(\theta x+b)}]+(y-1)*(\theta *x+b)

梯度下降求解\theta和b:

  \frac{\partial }{\partial \theta_{i} }L(\theta ,b)=2(y-1)*x_{i}(     其中y是(3)式   )

\frac{\partial }{\partial b_{i} }L(\theta ,b)=2(y-1)

\theta _{i}new=\theta_{i} old-\alpha \frac{\partial }{\partial \theta }L(\theta ,b)=\theta _{i}old-2\alpha (y-1)*x_{i}

b_{i} new=b_{i}\, old-\alpha \frac{\partial }{\partial b }L(\theta ,b)=b_{i}\, old-2\alpha (y-1)

不断迭代,求出合适的\theta和b,最终得出逻辑回归方程。

   代码实现:

    初学,代码还不会写。

  • 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、付费专栏及课程。

余额充值