线性回归与逻辑回归的区别

线性回归与逻辑回归的区别

技术背景

在机器学习和数据挖掘领域,回归分析是一种重要的统计方法,用于建立自变量与因变量之间的关系。线性回归和逻辑回归是两种常见的回归分析方法,但它们适用于不同的场景。线性回归通常用于预测连续型变量,而逻辑回归则主要用于分类问题,预测离散型的类别。

实现步骤

线性回归

  1. 数据准备:收集包含自变量和因变量的数据集。
  2. 模型假设:假设因变量与自变量之间存在线性关系,即 $Y = mX + C$,其中 $Y$ 是因变量,$X$ 是自变量,$m$ 是斜率,$C$ 是截距。
  3. 参数估计:使用最小二乘法(OLS)来最小化模型预测值与实际值之间的误差平方和,从而估计出 $m$ 和 $C$ 的值。
  4. 模型评估:使用评估指标(如均方误差、决定系数等)来评估模型的性能。

逻辑回归

  1. 数据准备:收集包含自变量和分类标签的数据集。
  2. 模型假设:假设因变量是一个二元分类变量(如 0 或 1),通过逻辑函数将线性组合转换为概率值,即 $P(Y = 1) = \frac{1}{1 + e^{-(mX + C)}}$。
  3. 参数估计:使用最大似然估计法来估计模型的参数,使得模型预测的概率值与实际的分类标签之间的似然函数最大。
  4. 模型评估:使用评估指标(如准确率、召回率、F1 值等)来评估模型的性能。

核心代码

线性回归(使用 Python 和 statsmodels 库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import pandas as pd
import statsmodels.api as sm
from sklearn.model_selection import train_test_split

# 假设 q_df 是包含自变量的 DataFrame,q3_rechange_delay_df 是包含因变量的 Series
q_df = details_df
q_df = pd.get_dummies(q_df, columns=[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
])

q_1_df = q_df["1"]
q_df = q_df.drop(["2", "3", "4", "5"], axis=1)

x = sm.add_constant(q_df)
train_x, test_x, train_y, test_y = train_test_split(
x, q3_rechange_delay_df, test_size=0.2, random_state=123
)

lmod = sm.OLS(train_y, train_x).fit()
print(lmod.summary())
print(lmod.predict()[:10])
print(lmod.get_prediction().summary_frame()[:10])

import matplotlib.pyplot as plt
sm.qqplot(lmod.resid, line="q")
plt.title("Q-Q plot of Standardized Residuals")
plt.show()

逻辑回归(使用 Python 和 sklearn 库)

1
2
3
4
5
6
7
8
9
10
11
12
13
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 假设 X 是包含自变量的数组,y 是包含分类标签的数组
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)

logreg = LogisticRegression()
logreg.fit(X_train, y_train)

y_pred = logreg.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

最佳实践

  • 线性回归:适用于因变量是连续型变量的场景,如预测房价、销售额等。在使用线性回归时,需要确保自变量与因变量之间存在线性关系,并且数据中不存在严重的多重共线性。
  • 逻辑回归:适用于因变量是二元分类变量的场景,如预测邮件是否为垃圾邮件、患者是否患有某种疾病等。在使用逻辑回归时,需要注意数据的平衡性,避免出现类别不平衡的问题。

常见问题

  • 线性回归输出作为概率的问题:线性回归的输出可以是负数或大于 1 的值,而概率的取值范围是 [0, 1],因此不能直接将线性回归的输出作为概率。逻辑回归通过逻辑函数将线性组合转换为概率值,解决了这个问题。
  • 线性回归用于分类问题的局限性:线性回归对异常值比较敏感,并且在处理分类问题时可能会出现预测值超出合理范围的情况。逻辑回归使用交叉熵损失函数,对异常值不那么敏感,更适合用于分类问题。
  • 残差分布的差异:线性回归假设残差服从正态分布,而逻辑回归要求残差独立但不要求服从正态分布。

线性回归与逻辑回归的区别
https://119291.xyz/posts/2025-04-22.difference-between-linear-and-logistic-regression/
作者
ww
发布于
2025年4月22日
许可协议