当前位置: 首页 > news >正文

机械学习--线性回归

线性回归(Linear Regression)详解

一. 什么是线性回归?

线性回归是机器学习中最基础的监督学习算法之一,用于预测连续型目标变量。其核心思想是:找到自变量(特征)与因变量(目标)之间的线性关系,通过这条关系线来预测未知数据。

例如:

  • 用房屋面积(自变量)预测房价(因变量)
  • 用学习时长(自变量)预测考试分数(因变量)
  • 用多个特征(如面积、卧室数量、位置)预测房价(多元线性回归)

二. 数学原理

2.1 假设函数

线性回归假设自变量与因变量的关系可表示为:

  • 简单线性回归(单特征):
    y=wx+b
    其中,x 是自变量,y 是预测值,w 是权重(斜率),b 是偏置(截距)。

  • 多元线性回归(多特征):
    y=w1​x1​+w2​x2​+...+wn​xn​+b
    可简化为矩阵形式:y=WTX+b(W 是权重向量,X 是特征矩阵)。

2.2 损失函数

目标是找到最优的 w 和 b,使预测值与真实值的误差最小。常用均方误差(MSE) 作为损失函数:
Loss=n1​∑i=1n​(yi​−y^​i​)2
其中,yi​ 是真实值,y^​i​ 是预测值,n 是样本数量。

2.3 求解参数

通过最小化损失函数求解 w 和 b,常用方法:

  • 正规方程:直接通过数学公式求解(适用于小数据集)。
  • 梯度下降:通过迭代优化,逐步调整参数以降低损失(适用于大数据集)。

三. 线性回归的假设

线性回归的有效性依赖于以下假设:

  1. 自变量与因变量存在线性关系
  2. 误差项(y−y^​)之间相互独立;
  3. 误差项具有同方差性(方差恒定);
  4. 误差项服从正态分布。

四. 线性回归的优缺点

  • 优点
    • 原理简单,解释性强(权重可直接反映特征影响)。
    • 训练速度快,适合大规模数据。
  • 缺点
    • 只能捕捉线性关系,无法处理非线性数据(需手动特征工程,如多项式转换)。
    • 对异常值敏感,可能影响拟合效果。

五.scikit-learn的linear_model.LinearRegression方法

scikit-learn(简称 sklearn)是 Python 中最常用的机器学习库之一,其linear_model.LinearRegression类提供了高效、易用的线性回归实现。下面详细介绍其核心功能、参数、方法及使用要点。

1. LinearRegression 核心功能

LinearRegression实现了普通最小二乘法(Ordinary Least Squares, OLS) 线性回归,用于:

  • 建模特征与连续目标变量的线性关系
  • 支持单特征(简单线性回归)和多特征(多元线性回归)
  • 通过最小化预测值与真实值的残差平方和求解参数
2. 核心参数详解

初始化LinearRegression时可配置的关键参数:

参数类型默认值说明
fit_interceptboolTrue是否计算模型的偏置项(截距b)。
True:模型包含截距(推荐,除非特征已中心化)
False:假设数据已中心化,不计算截距
normalizeboolFalse是否在拟合前对特征进行归一化(已过时,建议用StandardScaler替代)。
True:对特征进行归一化(均值为 0,方差为 1)
copy_XboolTrue是否复制特征数据(避免修改原始数据)
n_jobsintNone并行计算的线程数(用于大规模数据)。
-1:使用所有可用 CPU 核心
positiveboolFalse是否强制权重系数为非负数(适用于物理意义上权重不能为负的场景,如销量预测)
3. 主要方法

LinearRegression对象的核心方法:

方法功能
fit(X, y)训练模型,求解权重coef_和截距intercept_
X:特征矩阵(形状(n_samples, n_features)
y:目标变量(形状(n_samples,)
predict(X)用训练好的模型预测新数据。
- 返回预测值(形状(n_samples,)
score(X, y)计算模型在Xy上的R2分数(决定系数),衡量模型拟合优度。
- 范围:(−∞,1],越接近 1 拟合越好
get_params(deep=True)获取模型当前参数配置
set_params(**params)修改模型参数(如model.set_params(fit_intercept=False)
4. 重要属性

训练后可访问的模型属性

属性说明
coef_特征权重数组(形状(n_features,)),对应公式中的w1​,w2​,...,wn​
intercept_截距(标量),对应公式中的b
rank_特征矩阵的秩(用于判断多重共线性)
singular_特征矩阵的奇异值(用于诊断数据问题)
5. 关键注意事项
  1. 数据预处理

    • 特征量纲差异大时,需先标准化(StandardScaler)或归一化,避免量纲影响权重
    • 缺失值需先处理(如用SimpleImputer填充),否则模型会报错
    • 异常值对线性回归影响大,可通过箱线图检测并处理
  2. 多重共线性

    • 当特征间高度相关(如 "面积" 和 "房间数"),会导致权重不稳定
    • 可通过方差膨胀因子(VIF)检测,或使用正则化方法(如 Ridge 回归)缓解
  3. 适用场景

    • 适合特征与目标存在线性关系的数据
    • 不适合非线性关系(此时需用多项式回归或树模型)
  4. 与其他线性模型的区别

    • LinearRegression(OLS)无正则化,可能过拟合
    • Ridge:加入 L2 正则化,缓解过拟合
    • Lasso:加入 L1 正则化,可实现特征选择(部分权重为 0)

http://www.dtcms.com/a/305433.html

相关文章:

  • 项目如何进行阶段性评估?核心要点
  • Java07--面向对象
  • 【收银系统开发】收银系统之数字键盘,人机交互中重复判断——仙盟创梦IDE
  • thingsboard 自定义动作JS编程
  • 1768. 交替合并字符串
  • 2025年06月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【C#学习Day13笔记】静态成员、接口、运算符重载和索引器
  • Redis 键值对操作详解:Python 实现指南
  • 【Dify】-进阶14- 用 Dify 搭建法律文档解析助手
  • 工作中使用git可能遇到的场景
  • docker docker、swarm 全流程执行
  • 抵御酒店管理系统收银终端篡改攻击 API 加密的好处及实现——仙盟创梦IDE
  • LLM中BLEU 指标、ROUGE 指标、PPL指标
  • MySQL图解索引篇
  • 7.29 Java SE(Java高级 P191-P199)
  • Linux 线程概念与控制
  • 继续打卡day6
  • SpringJDBC源码初探-DataSource类
  • 理解“无界队列”与“有界队列”及其适用场景
  • BigemapPro吸附功能 | 绘图共点共边,标绘从此无缝衔接!
  • 【Python】数据可视化之聚类图
  • 进阶向:Manus AI与多语言手写识别
  • 大模型量化004
  • 机器学习-贝叶斯函数(理解版)
  • Xmind 2025下载与保姆级安装教程
  • 数据库-索引
  • Python Day17 常用模块 和 加解密操作 及例题分析
  • window weblogic 解锁
  • Java 9 新特性解析
  • 《零基础入门AI:传统机器学习入门(从理论到Scikit-Learn实践)》