《机器学习基础:线性回归与逻辑回归的原理及Sklearn实现对比》

发布时间:2026/10/22 2:27:46
《机器学习基础:线性回归与逻辑回归的原理及Sklearn实现对比》
正文前言线性模型是机器学习算法体系中的基石。在近期的课程学习中我系统接触了线性回归Linear Regression与逻辑回归Logistic Regression。尽管两者的名称中均包含“回归”但它们在实际应用中所解决的任务类型截然不同。本篇博客旨在梳理这两种算法的核心概念、数学原理、适用场景及基于sklearn的实现逻辑并对二者进行系统的对比分析作为阶段性的学习总结。一、 线性回归 (Linear Regression)概念与原理线性回归是一种监督学习算法旨在建立一个或多个自变量特征与因变量连续目标值之间的线性映射关系。其目标是寻找一条最优的直线或在多维空间中的超平面使得预测值与真实值之间的误差最小化。从数学角度而言其假设函数为hθ(x)θ0θ1x1θ2x2...θnxnθTxh_\theta(x) \theta_0 \theta_1x_1 \theta_2x_2 ... \theta_nx_n \theta^T xhθ​(x)θ0​θ1​x1​θ2​x2​...θn​xn​θTx为了评估模型拟合的优劣我们通常采用均方误差MSE作为损失函数J(θ)12m∑i1m(hθ(x(i))−y(i))2J(\theta) \frac{1}{2m} \sum_{i1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2J(θ)2m1​∑i1m​(hθ​(x(i))−y(i))2在参数优化方面可以采用最小二乘法直接求得解析解或者在特征维度较高时采用梯度下降法进行迭代求解。适用范围· 目标变量为连续型数值的场景如预测房价、气温变化、销售额等。· 特征与目标之间存在较强的线性相关性或可通过特征工程转化为线性关系。· 注意事项该算法对异常值十分敏感在建模前需进行严格的数据清洗。实现逻辑数据准备与划分训练集与测试集。定义线性假设模型。确定损失函数MSE。通过梯度下降或正规方程求解权重参数 \theta。利用求得的参数对测试集进行预测并采用 R^2、RMSE 等指标进行评估。sklearn实现的关键代码及理解fromsklearn.linear_modelimportLinearRegressionfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportmean_squared_error,r2_score# 1. 数据准备与划分 (X为特征矩阵y为连续目标变量)X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 2. 模型实例化 (fit_intercept默认为True即计算截距)lrLinearRegression()# 3. 模型训练lr.fit(X_train,y_train)# 4. 预测y_predlr.predict(X_test)# 5. 评估模型性能print(均方误差 (MSE):,mean_squared_error(y_test,y_pred))print(R2得分:,r2_score(y_test,y_pred))# 理解lr.coef_ 存储特征权重lr.intercept_ 存储截距个人理解在sklearn中coef_ 反映了特征对预测结果的影响程度正负号代表影响的方向。如果数据特征量纲差异较大虽然线性回归本身对特征缩放不敏感但为了结果的可解释性通常建议进行标准化处理。二、 逻辑回归 (Logistic Regression)概念与原理需要明确的是虽然名为“逻辑回归”但它本质上是一种分类算法主要用于解决二分类问题也可扩展至多分类。它通过引入Sigmoid函数将线性回归的实数输出映射至 (0, 1) 区间从而赋予其概率意义。其假设函数为hθ(x)g(θTx)11e−θTxh_\theta(x) g(\theta^T x) \frac{1}{1 e^{-\theta^T x}}hθ​(x)g(θTx)1e−θTx1​其中 g(z) 即为Sigmoid函数。输出值代表样本属于正类1的概率。由于输出是概率若继续使用MSE会导致损失函数非凸易陷入局部最优。因此逻辑回归采用对数损失函数Log Loss / 交叉熵损失J(θ)−1m∑i1m[y(i)log⁡(hθ(x(i)))(1−y(i))log⁡(1−hθ(x(i)))]J(\theta) -\frac{1}{m} \sum_{i1}^{m} [y^{(i)}\log(h_\theta(x^{(i)})) (1-y^{(i)})\log(1-h_\theta(x^{(i)}))]J(θ)−m1​∑i1m​[y(i)log(hθ​(x(i)))(1−y(i))log(1−hθ​(x(i)))]通常采用极大似然估计结合梯度下降法进行参数优化。适用范围· 目标变量为离散类别的场景如垃圾邮件判定、用户流失预测、疾病阳性诊断等。· 需要输出分类置信度概率值的场景。· 要求特征空间近似线性可分。实现逻辑数据准备与预处理逻辑回归对特征缩放非常敏感必须进行标准化。初始化权重参数。计算线性组合 z代入Sigmoid函数得到预测概率。计算交叉熵损失。利用梯度下降更新权重。设定分类阈值默认为0.5大于阈值判为正类反之判为负类。sklearn实现的关键代码及理解fromsklearn.linear_modelimportLogisticRegressionfromsklearn.preprocessingimportStandardScalerfromsklearn.metricsimportaccuracy_score,classification_report# 1. 特征标准化 (关键步骤提升梯度下降收敛速度)scalerStandardScaler()X_train_scaledscaler.fit_transform(X_train)X_test_scaledscaler.transform(X_test)# 2. 模型实例化# penalty: 正则化方式C: 正则化强度的倒数solver: 优化算法max_iter: 最大迭代次数clfLogisticRegression(penaltyl2,C1.0,solverlbfgs,max_iter1000)# 3. 模型训练clf.fit(X_train_scaled,y_train)# 4. 预测 (两种输出形式)y_predclf.predict(X_test_scaled)# 输出离散类别 (0或1)y_probclf.predict_proba(X_test_scaled)[:,1]# 输出属于类别1的概率# 5. 评估print(准确率:,accuracy_score(y_test,y_pred))print(classification_report(y_test,y_pred))个人理解在实际编码中若未进行标准化模型很容易报出“未收敛”的警告。C 值的大小决定了正则化力度C 越小正则化越强模型越不容易过拟合但可能欠拟合。predict_proba 在风控等需要评估风险的业务中比单纯的 predict 更具应用价值。三、 线性回归与逻辑回归的对比分析经过理论学习和代码实践我发现二者既有深厚的渊源又在任务目标上存在显著差异。联系 (Connections)· 广义线性模型 (GLM)两者均属于广义线性模型。线性回归假设目标变量服从正态分布而逻辑回归假设服从伯努利分布。· 底层结构逻辑回归可视为线性回归的扩展。两者均先对特征进行线性组合z θTx\theta^T xθTx区别在于逻辑回归在此之后引入了Sigmoid非线性映射。· 优化方法两者均可使用梯度下降法进行参数迭代更新。· 数据敏感性两者对多重共线性均较为敏感通常需要结合正则化L1/L2来提升模型泛化能力。区别 (Differences)对比维度线性回归 (Linear Regression)逻辑回归 (Logistic Regression)任务类型回归问题 (Regression)分类问题 (Classification)目标变量连续型数值 (Continuous)离散型类别 (Discrete/Categorical)假设函数线性方程(hθ(x)θTxh_\theta(x) \theta^T xhθ​(x)θTx)复合函数(hθ(x)11e−θTxh_\theta(x) \frac{1}{1 e^{-\theta^T x}}hθ​(x)1e−θTx1​)输出范围((-\infty, \infty)) 实数集((0, 1)) 概率值损失函数均方误差 (MSE)对数损失 (Log Loss / 交叉熵)评估指标MSE, RMSE, MAE, (R^2)准确率, 精确率, 召回率, F1值, ROC-AUC异常值影响极其敏感异常点会极大改变拟合直线相对稳健Sigmoid函数能压缩极值的影响总结线性回归侧重于预测“多少”如房价估值逻辑回归侧重于判断“是不是”如是否为垃圾邮件。深入理解两者的数学本质与适用边界是掌握机器学习分类与回归思想的重要基础。在后续的学习中还需进一步探索正则化对两者的影响以及在多分类问题中的扩展应用。