逻辑回归模型

一、逻辑回归的概念

逻辑回归(Logistic Regression)是一种用于解决二分类问题的统计学习方法,其核心思想是通过Sigmoid函数将线性回归的输出映射到概率空间(0,1),从而预测样本属于正类的概率。尽管名为“回归”,但其本质是分类模型,通过设定概率阈值(如0.5)实现二分类决策。逻辑回归广泛应用于金融风控(如贷款违约预测)、医疗诊断(如疾病预测)、广告点击率(CTR)预估等领域,因其模型简单、解释性强且计算效率高。

二、逻辑回归的原理

  1. 概率映射
    • 输入特征通过线性组合得到 z=wTx+b,其中 w 为权重向量,b 为偏置项。
    • 通过Sigmoid函数 σ(z)=1+e−z1​ 将 z 映射为概率 P(Y=1∣X),范围在 (0,1)。
  2. 决策边界
    • 当 z=0 时,P(Y=1∣X)=0.5,形成分类边界。
    • 特征与对数几率(Log Odds)呈线性关系,权重 w 反映特征对分类的影响强度。
  3. 损失函数与优化
    • 交叉熵损失:通过最大化似然函数推导,目标是最小化负对数似然 L(w,b)=−∑[yi​log(σ(zi​))+(1−yi​)log(1−σ(zi​))]。
    • 梯度上升法:通过迭代更新权重 w 和偏置 b,沿梯度方向逼近最优解。

三、代码实战:梯度上升法拟合逻辑回归模型

以下为基于Python的代码实现,使用梯度上升法找到最佳回归系数:

import numpy as np
import matplotlib.pyplot as plt
 
# 加载数据集(假设test.txt包含100个样本,每行格式为x1,x2,y)
def load_data(file_path):
    data = []
    labels = []
    with open(file_path, 'r') as f:
        for line in f:
            x1, x2, y = map(float, line.strip().split(','))
            data.append([1, x1, x2])  # 添加偏置项1
            labels.append(y)
    return np.array(data), np.array(labels)
 
# Sigmoid函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))
 
# 梯度上升法
def gradient_ascent(data, labels, alpha=0.001, max_iter=500):
    m, n = data.shape
    weights = np.ones(n)  # 初始化权重
    for _ in range(max_iter):
        h = sigmoid(np.dot(data, weights))  # 预测概率
        error = labels - h  # 计算误差
        weights += alpha * np.dot(data.T, error)  # 更新权重
    return weights
 
# 可视化决策边界
def plot_decision_boundary(weights, data, labels):
    x1_min, x1_max = data[:, 1].min() - 1, data[:, 1].max() + 1
    x2_min, x2_max = data[:, 2].min() - 1, data[:, 2].max() + 1
    xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max, 100),
                           np.linspace(x2_min, x2_max, 100))
    z = sigmoid(np.dot(np.c_[np.ones((xx1.ravel().shape[0], 1)), xx1.ravel(), xx2.ravel()], weights))
    z = z.reshape(xx1.shape)
    plt.contourf(xx1, xx2, z, alpha=0.4)
    plt.scatter(data[:, 1], data[:, 2], c=labels, edgecolors='k')
    plt.xlabel('x1')
    plt.ylabel('x2')
    plt.title('Logistic Regression Decision Boundary')
    plt.show()
 
# 主程序
if __name__ == '__main__':
    data, labels = load_data('test.txt')
    weights = gradient_ascent(data, labels)
    print("Best weights:", weights)
    plot_decision_boundary(weights, data, labels)

代码说明:
  1. 数据加载:从test.txt中读取数据,每行格式为x1,x2,y,其中y为标签(0或1)。
  2. 梯度上升法:通过迭代更新权重,最小化交叉熵损失。
  3. 可视化:绘制决策边界,展示模型对数据的分类效果。

四、总结

  1. 逻辑回归的优势
    • 模型简单,解释性强,适合特征与目标变量关系明确的场景。
    • 计算效率高,适用于大规模数据集。
  2. 梯度上升法的局限性
    • 收敛速度较慢,需调整学习率 α 和迭代次数。
    • 对特征尺度敏感,实际应用中需进行标准化处理。
  3. 改进方向
    • 引入正则化(如L1/L2)防止过拟合。
    • 使用随机梯度上升法(SGD)加速收敛。

通过本次实战,可深入理解逻辑回归的原理及实现过程,为后续处理更复杂的分类问题奠定基础。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值