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

【机器学习笔记Ⅰ】2 线性回归模型

线性回归(Linear Regression)是机器学习中最基础、最常用的监督学习模型之一,用于解决回归问题(预测连续数值输出)。它的核心思想是通过拟合一条直线(或超平面)来描述输入特征(自变量)与目标变量(因变量)之间的线性关系。

核心概念

  1. 模型形式

    • 简单线性回归(单特征):
      [
      y = w_1 x + b
      ]

      • ( y ):预测值(目标变量)。
      • ( x ):输入特征。
      • ( w_1 ):权重(斜率),表示特征的重要性。
      • ( b ):偏置(截距),表示基线值。
    • 多元线性回归(多特征):
      [
      y = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b
      ]

      • ( x_1, x_2, \dots, x_n ):多个特征。
      • ( w_1, w_2, \dots, w_n ):每个特征的权重。
  2. 目标
    找到最优的权重 ( w ) 和偏置 ( b ),使得预测值 ( y ) 与真实值 ( y_{\text{true}} ) 的误差最小。


如何训练?

  1. 损失函数(Loss Function)
    衡量预测值与真实值的差距,常用均方误差(MSE)
    [
    \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_{\text{true}}^{(i)} - y{(i)})2
    ]

    • ( N ):样本数量。
    • 目标是最小化MSE。
  2. 优化方法

    • 最小二乘法:通过数学推导直接求解最优解(适用于小规模数据)。
    • 梯度下降(Gradient Descent):迭代调整参数,逐步降低损失(适用于大规模数据)。

代码示例(Python)

from sklearn.linear_model import LinearRegression
import numpy as np# 示例数据:X是特征,y是目标值
X = np.array([[1], [2], [3], [4]])  # 单特征
y = np.array([2, 4, 6, 8])          # y = 2x# 创建模型并训练
model = LinearRegression()
model.fit(X, y)# 预测
print(model.predict([[5]]))  # 输出: [10.] (符合 y=2x)
print("权重 w:", model.coef_)   # 输出: [2.]
print("截距 b:", model.intercept_)  # 输出: 0.0

特点

  • 优点
    • 简单、易解释(权重直接表示特征影响)。
    • 计算效率高,适合小规模数据。
  • 缺点
    • 假设数据是线性的,对复杂关系拟合不足。
    • 对异常值和噪声敏感。

应用场景

  • 房价预测(特征:面积、地段 → 目标:房价)。
  • 销售额预测(特征:广告投入、季节 → 目标:销量)。
  • 任何需要量化特征与目标之间线性关系的场景。

注意事项

  1. 数据预处理
    • 特征需归一化(尤其梯度下降时)。
    • 处理多重共线性(特征间高度相关)。
  2. 模型评估
    • 使用R²分数、MSE等指标衡量性能。
  3. 非线性扩展
    • 可通过多项式回归(如 ( y = w_1 x + w_2 x^2 ))拟合非线性关系。
http://www.dtcms.com/a/268312.html

相关文章:

  • 图灵完备之路(数电学习三分钟)----逻辑与计算架构
  • 在phpstudy环境下配置搭建XDEBUG配合PHPSTORM的调试环境
  • ESMFold 安装教程
  • 手动使用 Docker 启动 MinIO 分布式集群(推荐生产环境)
  • list和list中的注意事项
  • 三位一体:Ovis-U1如何以30亿参数重构多模态AI格局?
  • K8s系列之:Kubernetes 的 RBAC (Role-Based Access Control)
  • 定时器怎么玩?做个LED渐变灯练手
  • 【面板数据】全球贸易救济立案案件(1995-2024年)
  • xyctf2025第三届京麒CTF
  • STM32之继电器模块
  • 11.6 ChatGPT训练第一步:深度解析SFT监督微调核心技术与实战全指南
  • C++ 基于广度优先搜索(BFS)的拓扑排序算法
  • 20250706-9-Docker快速入门(下)-Docker在线答疑_笔记
  • Linux 内存分配理论与水位机制全解
  • Mybatis--动态SQL
  • 前端防抖Debounce如何实现
  • Kafka “假死“现象深度解析与解决方案
  • JavaScript 中导入模块时,确实不需要显式地写 node_modules 路径。
  • week2
  • 基于 Rust 的前端工具基本实现
  • 【它加上100是一个完全平方数,再加上168又是一个完全平方数】2022-7-17
  • 第十六节:第三部分:多线程:线程安全问题、取钱问题的模拟
  • 浅谈漏洞扫描与工具
  • 计算机网络实验——互联网安全实验
  • 10046 解决 Oracle error
  • NLP文本预处理
  • Chunking-free RAG
  • 拼好题(各个平台的零散题目)
  • vue什么时候可以用index作为:key的索引