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

【机器学习笔记Ⅰ】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.xdnf.cn/news/15032.html

相关文章:

  • 百度文心大模型 4.5 开源深度测评:技术架构、部署实战与生态协同全解析
  • 编程语言艺术:C语言中的属性attribute笔记总结
  • bro code笔记 inheritance
  • 从前端转nest.js开发的学习路线
  • 【Guava】1.0.设计虚拟机的方向
  • java学习——guava并发编程练习
  • Redis ①⑤-集群
  • Vue+Openlayers加载OSM、加载天地图
  • 周任务自动化升级:N8N与多维表格无缝联动全解析
  • 2025年03月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【架构艺术】IC(个人贡献者)视角下产品研发规划的实战Tips
  • 一次内存“卡顿”全流程实战分析:从制造问题到优化解决
  • java中,stream的filter和list的removeIf筛选速度比较
  • JMM--数据原子操作
  • SpringAI与智能体入门
  • 解决kali Linux在VMware中的全局缩放问题
  • 量化可复用的UI评审标准(试验稿)
  • Python PyJWT详解:从入门到实战
  • 3dmax烘焙插件3dmax法线贴图烘焙教程glb和gltf元宇宙灯光效果图烘焙烘焙光影贴图支持VR渲染器
  • 针对工业触摸屏维修的系统指南和资源获取途径
  • NumPy-核心函数np.matmul()深入解析
  • CppCon 2018 学习:Surprises In Object Lifetime
  • 设计模式之访问者模式
  • 使用Langchain访问个人数据
  • SpringBoot系列—入门
  • PostgreSQL表操作
  • 深度学习5(深层神经网络 + 参数和超参数)
  • C++ 网络编程(15) 利用asio协程搭建异步服务器
  • 从数据洞察到设计创新:UI前端如何利用数字孪生提升用户体验?
  • 浏览器与服务器的交互