【机器学习】一文掌握逻辑回归全部核心点(上)。

本文详细介绍了逻辑回归的基本概念、模型原理,包括sigmoid函数、线性预测值、对数损失函数、优化方法(如梯度下降)、以及L1和L2正则化的应用。通过实例演示,帮助读者全面掌握逻辑回归的核心要素。
摘要由CSDN通过智能技术生成

1、引言

小屌丝:鱼哥,你说逻辑归回需要掌握哪些技能?
小鱼:我上一篇不是写了逻辑回归的的博文嘛~
小屌丝:意犹未尽,我还想探索的更深层的。
小鱼:额… 有多深?
小屌丝:逻辑回归的核心要点有哪些?
小鱼:这个…
小屌丝:这个不可以吗?
小鱼:这个可以啊。
小屌丝:吓我一跳,我还以为不行呢。
小鱼:鉴于最近学习这么认真,我们今天就来聊一聊逻辑回归的核心要点。
在这里插入图片描述

2、逻辑回归核心点

2.1 定义与目的

  • 定义:逻辑回归是一种广义的线性模型,用于解决二分类问题。尽管名字中包含“回归”,但逻辑回归实际上是一种分类算法,它输出的是样本属于某个类别的概率。
  • 目的:逻辑回归的目的是根据给定的输入特征预测样本所属的类别。它通常用于处理二分类问题,但也可以通过一些技术扩展到多分类问题。
  • 应用场景:逻辑回归广泛应用于各种领域,如垃圾邮件检测、疾病预测、金融风险评估等

2.2 模型原理

2.2.1 定义解析

  • 线性回归部分:逻辑回归首先通过线性回归模型计算出一个得分或线性预测值。这个值是基于输入特征和相应权重的加权和,再加上一个偏置项。
  • 逻辑函数(sigmoid函数):线性预测值通过sigmoid函数转换为概率值。sigmoid函数将任何实数映射到(0, 1)区间内,使得输出可以解释为属于某个类别的概率。
  • 决策边界:根据权重和偏置项,逻辑回归模型定义了一个决策边界,用于分隔不同类别的样本。这个边界可以是线性的,也可以是非线性的,取决于特征的变换和选择。

2.2.2 公式

sigmoid函数的公式为:

[ σ ( z ) = 1 1 + e − z ] [ \sigma(z) = \frac{1}{1 + e^{-z}} ] [σ(z)=1+ez1]

2.2.3 代码示例

便于理解,代码展示

# 使用上面定义的sigmoid函数  
z = 2.0  
probability = sigmoid(z)  
print("sigmoid函数输出:", probability)

2.3 损失函数与优化

2.3.1 定义解析

  • 对数损失函数(log-loss):逻辑回归使用对数损失函数来衡量模型预测与实际标签之间的差异。对数损失函数鼓励模型对正确类别的预测概率接近1,而对错误类别的预测概率接近0。
  • 优化算法:为了最小化损失函数,逻辑回归通常使用梯度下降法或其变种(如随机梯度下降、批量梯度下降等)进行优化。这些算法通过迭代更新权重和偏置项来逐步降低损失函数的值。
  • 学习率与收敛条件:在优化过程中,学习率是一个重要的超参数,它控制权重更新的步长。此外,还需要设置收敛条件来确定优化何时停止,以避免过度拟合或过早停止训练。

2.3.2 公式

对数损失函数的公式为:

[ J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ; θ ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ; θ ) ) ] ] [ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)}; \theta)) + (1 - y^{(i)}) \log(1 - h(x^{(i)}; \theta))] ] [J(θ)=m1i=1m[y(i)log(h(x(i);θ))+(1y(i))log(1h(x(i);θ))]]

其中,

  • ( m ) 是样本数量。
  • ( y^{(i)} ) 是第 ( i ) 个样本的实际标签(0或1)。
  • ( h(x^{(i)}; \theta) ) 是第 ( i ) 个样本的预测概率。
  • ( \theta ) 是参数向量,包括权重和偏置项。

2.3.3 代码示例

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-03-02
# @Author : Carl_DJ

import numpy as np  
  
# 定义对数损失函数  
def log_loss(y_true, y_pred):  
    m = len(y_true)  
    cost = -np.sum(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) / m  
    return cost  
  
# 示例真实标签和预测概率  
y_true = np.array([0, 1, 1, 0])  
y_pred = np.array([0.1, 0.9, 0.8, 0.4])  
  
# 计算对数损失  
loss = log_loss(y_true, y_pred)  
print("对数损失:", loss)

2.4 正则化

2.4.1 分类

  • L1正则化:通过在损失函数中加入权重系数的绝对值之和,L1正则化可以产生稀疏的权重矩阵,即许多权重为0。这有助于减少模型的复杂度,并可能提高模型的泛化能力。
  • L2正则化:L2正则化通过在损失函数中加入权重系数的平方和来实现。它倾向于使权重整体偏小,但并不使它们为0。L2正则化有助于减少过拟合,提高模型的稳定性。
  • 正则化系数的选择:正则化系数 (\lambda) 是一个超参数,需要手动设置。选择合适的 (\lambda) 值对于平衡模型的复杂度和拟合能力至关重要。通常,我们可以通过交叉验证等技术来选择最优的 (\lambda) 值。

2.4.2 L1正则化

L1正则化的损失函数为:

[ J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ; θ ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ; θ ) ) ] + λ ∑ j = 1 n ∣ θ j ∣ ] [ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)}; \theta)) + (1 - y^{(i)}) \log(1 - h(x^{(i)}; \theta))] + \lambda \sum_{j=1}^{n} |\theta_j| ] [J(θ)=m1i=1m[y(i)log(h(x(i);θ))+(1y(i))log(1h(x(i);θ))]+λj=1nθj]

2.4.3 L2正则化

L2正则化的损失函数为:

[ J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ; θ ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ; θ ) ) ] + λ 2 ∑ j = 1 n θ j 2 ] [ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)}; \theta)) + (1 - y^{(i)}) \log(1 - h(x^{(i)}; \theta))] + \frac{\lambda}{2} \sum_{j=1}^{n} \theta_j^2 ] [J(θ)=m1i=1m[y(i)log(h(x(i);θ))+(1y(i))log(1h(x(i);θ))]+2λj=1nθj2]

2.4.4 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-03-02
# @Author : Carl_DJ

import numpy as np  
  
# 定义sigmoid函数  
def sigmoid(z):  
    return 1 / (1 + np.exp(-z))  
  
# 定义L2正则化逻辑回归的损失函数  
def logistic_regression_loss(w, b, X, y, lambda_val):  
    m = len(y)  
    A = sigmoid(np.dot(X, w) + b)  
    cost = (-1 / m) * np.sum(y * np.log(A) + (1 - y) * np.log(1 - A))  
    regularization = (lambda_val / (2 * m)) * np.sum(w**2)  
    return cost + regularization  
  
# 定义梯度下降优化函数  
def gradient_descent(w, b, X, y, learning_rate, lambda_val, num_iterations):  
    m = len(y)  
    J_history = []  
      
    for i in range(num_iterations):  
        A = sigmoid(np.dot(X, w) + b)  
        dw = (1 / m) * np.dot(X.T, (A - y)) + (lambda_val / m) * w  
        db = (1 / m) * np.sum(A - y)  
          
        w = w - learning_rate * dw  
        b = b - learning_rate * db  
          
        J = logistic_regression_loss(w, b, X, y, lambda_val)  
        J_history.append(J)  
          
    return w, b, J_history  
  
# 示例数据  
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])  
y = np.array([0, 0, 1, 1])  
  
# 初始化参数  
w = np.zeros(X.shape[1])  
b = 0  
  
# 设置超参数  
learning_rate = 0.1  
lambda_val = 0.1  
num_iterations = 1000  
  
# 运行梯度下降  
w, b, J_history = gradient_descent(w, b, X, y, learning_rate, lambda_val, num_iterations)  
  
# 输出训练过程中的损失值  
print("训练过程中的损失值:", J_history)

3、总结

为了让大家更容易的理解与吸收这些知识,小鱼分两篇来分享。

关注小鱼,学习机器学习领域的知识。

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
机器学习中的二分类逻辑回归是一种用于解决二分类问题的算法。它的基本思路是通过构建一个逻辑回归模型,将输入的特征映射到一个概率值,然后根据这个概率值进行分类。 逻辑回归使用sigmoid函数来处理hθ(x),这是因为sigmoid函数的取值范围在0到1之间,可以将线性回归的输出转化为一个概率值。通过sigmoid函数处理后,我们可以将概率值大于等于0.5的样本划分为正类,概率值小于0.5的样本划分为负类。这使得逻辑回归可以用于二分类问题。 代价函数的推导和偏导数的推导是为了求解逻辑回归模型中的参数θ。通过最小化代价函数,我们可以得到最优的参数θ,使得模型的预测结果与真实标签最接近。 在正则化逻辑回归中,我们引入正则化项的目的是为了避免过拟合。正则化项可以惩罚模型中的参数,使得参数的值趋向于较小的数值,从而降低模型的复杂度。在正则化逻辑回归中,一般不对θ1进行正则化,这是因为θ1对应的是截距项,它影响模型在原点的位置,不参与特征的权重调整。 综上所述,机器学习中的二分类逻辑回归是一种通过构建逻辑回归模型,利用sigmoid函数将线性回归的输出转化为概率值,并通过最小化代价函数求解参数θ的算法。正则化逻辑回归则是在逻辑回归的基础上引入正则化项,避免过拟合问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [吴恩达机器学习逻辑回归(二分类)](https://blog.csdn.net/q642634743/article/details/118831665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [机器学习笔记——逻辑回归之二分类](https://blog.csdn.net/dzc_go/article/details/108855689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值