数据结构与算法之逻辑回归 与线性回归 分类 vs 回归 本质区别

数据结构与算法阿木 发布于 2025-07-11 12 次阅读


摘要:

逻辑回归和线性回归是机器学习中常用的两种回归模型,它们在本质上有很大的区别。本文将深入探讨逻辑回归与线性回归的本质区别,并通过代码实现来展示它们在处理分类和回归问题时的不同。

一、

在机器学习中,回归分析是一种常用的预测方法,用于预测连续值或分类标签。线性回归和逻辑回归是两种常见的回归模型,它们在处理问题时有着不同的应用场景和原理。本文将围绕逻辑回归与线性回归的本质区别,通过代码实现来展示它们在分类和回归问题中的应用。

二、线性回归

线性回归是一种用于预测连续值的回归模型,其基本原理是通过线性关系来拟合数据。线性回归模型的公式如下:

y = β0 + β1 x1 + β2 x2 + ... + βn xn

其中,y 是预测值,x1, x2, ..., xn 是输入特征,β0, β1, ..., βn 是模型的参数。

三、逻辑回归

逻辑回归是一种用于预测分类标签的回归模型,其基本原理是通过逻辑函数(通常是Sigmoid函数)将线性回归模型的输出转换为概率值。逻辑回归模型的公式如下:

P(y=1) = σ(β0 + β1 x1 + β2 x2 + ... + βn xn)

其中,σ 是Sigmoid函数,P(y=1) 是预测标签为1的概率。

四、本质区别

1. 目标变量类型

线性回归的目标变量是连续的,而逻辑回归的目标变量是离散的(通常是二分类)。

2. 损失函数

线性回归通常使用均方误差(MSE)作为损失函数,而逻辑回归使用交叉熵损失函数。

3. 模型输出

线性回归直接输出预测值,而逻辑回归输出的是概率值。

五、代码实现

以下是一个简单的逻辑回归模型的Python代码实现,使用梯度下降法来优化模型参数。

python

import numpy as np

Sigmoid函数


def sigmoid(z):


return 1 / (1 + np.exp(-z))

逻辑回归模型


class LogisticRegression:


def __init__(self, learning_rate=0.01, num_iterations=1000):


self.learning_rate = learning_rate


self.num_iterations = num_iterations


self.weights = None


self.bias = None

def fit(self, X, y):


num_samples, num_features = X.shape


self.weights = np.zeros(num_features)


self.bias = 0

for _ in range(self.num_iterations):


model = np.dot(X, self.weights) + self.bias


predictions = sigmoid(model)

dw = (1 / num_samples) np.dot(X.T, (predictions - y))


db = (1 / num_samples) np.sum(predictions - y)

self.weights -= self.learning_rate dw


self.bias -= self.learning_rate db

def predict(self, X):


model = np.dot(X, self.weights) + self.bias


predictions = sigmoid(model)


return [1 if i > 0.5 else 0 for i in predictions]

示例数据


X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])


y = np.array([0, 0, 1, 1, 1])

创建逻辑回归模型并训练


model = LogisticRegression()


model.fit(X, y)

预测


predictions = model.predict(X)


print(predictions)


六、结论

本文通过深入探讨逻辑回归与线性回归的本质区别,并通过代码实现展示了它们在处理分类和回归问题时的不同。逻辑回归适用于二分类问题,而线性回归适用于连续值预测。在实际应用中,根据问题的具体需求选择合适的模型至关重要。

(注:本文代码实现仅供参考,实际应用中可能需要根据具体情况进行调整和优化。)