☰
机器学习线性模型详解:线性回归与逻辑回归原理
2026/10/15 17:05:24 网站建设 项目流程

一、前言

线性模型是机器学习最基础、最经典的一类模型,核心思想是通过特征的线性组合来建模输出。本文详细拆解线性回归和逻辑回归两大核心线性模型,包含概念、原理、适用场景、推导思路、sklearn代码实战,最后做二者的对比总结。

二、线性回归

2.1 概念

线性回归是回归任务的基础模型,用来学习自变量(特征)和连续型因变量(标签)之间的线性映射关系,最终输出一个连续数值,比如预测房价、气温、销售额。

2.2 原理

  1. 模型表达式:

\hat{y} = w_1x_1 + w_2x_2 + … + w_nx_n + b = \boldsymbol{w}^T\boldsymbol{x}+b

\boldsymbol{w}为权重向量,b为偏置,\hat{y}是预测值。
2. 损失函数:采用均方误差MSE

Loss = \frac{1}{m}\sum_{i=1}^m (y_i-\hat{y}_i)^2

  1. 优化目标:最小化MSE,求解最优的w,b;求解方法有两种:
  • 正规方程:直接数学闭式解 \boldsymbol{w}=(XTX){-1}X^Ty
  • 梯度下降:迭代逐步更新参数,适合大数据场景

2.3 适用范围

  1. 标签是连续数值的回归问题;
  2. 特征和标签大致呈现线性相关;
  3. 数据尽量减少多重共线性、异常点干扰。

2.4 实现逻辑

  1. 数据预处理:标准化特征、处理缺失值/异常值;
  2. 构造线性表达式,定义MSE损失;
  3. 选用正规方程/梯度下降优化参数;
  4. 模型评估:用MSE、RMSE、R^2指标衡量效果。

2.5 sklearn关键代码及注释

python

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np

1.构造模拟数据:两个特征,连续标签

X = np.random.rand(500,2)
y = 3 * X[:,0] + 5 * X[:,1] + 2 + np.random.normal(0,0.1,500)

2.划分训练集、测试集

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)

3.初始化并训练线性回归(底层默认用正规方程求解)

lr = LinearRegression()
lr.fit(X_train,y_train)

4.预测与评估

y_pred = lr.predict(X_test)
print(“权重w:”,lr.coef_)
print(“偏置b:”,lr.intercept_)
print(“均方误差MSE:”,mean_squared_error(y_test,y_pred))
print(“R²决定系数:”,r2_score(y_test,y_pred))

代码理解:

  • fit() 完成参数求解;
  • coef_ 输出各特征权重,直观体现特征对结果的影响大小;
  • R^2越接近1,模型拟合效果越好。

三、逻辑回归

3.1 概念

逻辑回归虽带“回归”二字,实际是二分类模型,输入特征线性组合,再通过Sigmoid函数把输出压缩到[0,1]区间,得到样本属于正类的概率,最终判定类别。

3.2 原理

  1. 先做线性计算:z=\boldsymbol{w}^T\boldsymbol{x}+b
  2. Sigmoid激活函数:

\sigma(z)=\frac{1}{1+e^{-z}}

输出\hat{y}=\sigma(z),代表样本为正类的概率,一般以0.5为阈值:\hat{y}\ge0.5判为正类,否则负类。
3. 损失函数:交叉熵损失(不用MSE,避免梯度消失)

Loss=-\frac{1}{m}\sum_{i=1}^m \left[y_i\log(\hat{y}_i)+(1-y_i)\log(1-\hat{y}_i)\right]

  1. 优化:使用梯度下降迭代更新w,b,最小化交叉熵。

3.3 适用范围

  1. 二分类任务:比如判断是否患病、是否点击广告、文本正负情感;
  2. 特征和对数几率近似线性关系;
  3. 可输出概率,对可解释性要求较高的业务场景。

3.4 实现逻辑

  1. 数据预处理:标准化特征、标签做0/1编码;
  2. 线性计算+Sigmoid得到概率;
  3. 交叉熵损失+梯度下降优化参数;
  4. 评估指标:准确率、精确率、召回率、AUC。

3.5 sklearn关键代码及注释

python

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
import numpy as np

1.构造二分类模拟数据

X = np.random.rand(500,2)

线性规则生成0/1标签

z = 2X[:,0] - 4X[:,1] +1
y = (1/(1+np.exp(-z)) >0.5).astype(int)

2.数据集划分

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)

3.训练逻辑回归

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

4.预测类别与概率

y_pred = logit.predict(X_test) # 输出0/1类别
y_prob = logit.predict_proba(X_test)[:,1] # 输出正类概率
print(“权重w:”,logit.coef_)
print(“偏置b:”,logit.intercept_)
print(“准确率:”,accuracy_score(y_test,y_pred))
print(“AUC值:”,roc_auc_score(y_test,y_prob))

代码理解:

  • predict_proba 输出两类概率,业务中可自定义分类阈值;
  • sklearn逻辑回归默认带L2正则,防止过拟合。

四、线性回归与逻辑回归:联系与区别

4.1 联系

  1. 同属线性模型,核心底层都是\boldsymbol{w}^T\boldsymbol{x}+b的线性特征组合;
  2. 都用梯度下降作为主流参数优化手段;
  3. 都对输入特征做线性假设,特征尺度差异大时都建议标准化;
  4. 参数w都具备可解释性:权重绝对值越大,该特征影响越强。

4.2 区别

对比维度 线性回归 逻辑回归
任务类型 回归,预测连续值 分类,预测离散类别/概率
激活函数 无,直接输出线性结果 Sigmoid压缩到0~1概率区间
损失函数 均方误差MSE 交叉熵损失
输出范围 实数域 概率值
模型假设 标签服从高斯分布 标签服从伯努利分布
评估指标 MSE、RMSE、 准确率、召回率、AUC、F1

五、总结

  1. 线性回归面向回归任务,用均方误差拟合连续输出;逻辑回归面向分类任务,用Sigmoid+交叉熵建模概率;
  2. 二者共享线性内核,只是任务目标、激活方式、损失设计不同;
  3. 两个模型都是机器学习入门必学内容,工业界常用来做基线模型、业务可解释性建模。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询