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

线性回归学习笔记

线性回归概述

线性回归是一种基本的监督学习算法,用于解决回归问题。它通过拟合数据点,找出特征与目标变量之间的线性关系。其目标是预测连续数值输出。

模型公式

线性回归模型的数学表达式为:

\[
y = \mathbf{w}^\top \mathbf{x} + b
\]

或展开为:

\[
y = w_1x_1 + w_2x_2 + \cdots + w_nx_n + b
\]

其中:  
- \( y \):预测值  
- \( \mathbf{x} = [x_1, x_2, \ldots, x_n] \):输入特征向量  
- \( \mathbf{w} = [w_1, w_2, \ldots, w_n] \):权重参数  
- \( b \):偏置项  

模型训练过程
 目标函数

线性回归的目标是最小化预测值 \( \hat{y} \) 与真实值 \( y \) 的误差,采用均方误差(MSE)作为损失函数:

\[
\text{MSE} = \frac{1}{m} \sum_{i=1}^m (\hat{y}_i - y_i)^2
\]

其中:  
- \( m \):样本总数  
- \( \hat{y}_i = \mathbf{w}^\top \mathbf{x}_i + b \):预测值  
- \( y_i \):真实值  

梯度下降法

通过梯度下降法优化模型参数:

  1. 计算梯度


   - 对权重 \( \mathbf{w} \) 的偏导数:  
     \[
     \frac{\partial \text{MSE}}{\partial \mathbf{w}} = \frac{2}{m} \sum_{i=1}^m (\hat{y}_i - y_i) \mathbf{x}_i
     \]
   - 对偏置 \( b \) 的偏导数:  
     \[
     \frac{\partial \text{MSE}}{\partial b} = \frac{2}{m} \sum_{i=1}^m (\hat{y}_i - y_i)
     \]

  2.更新参数  
   - 更新公式:  
     \[
     \mathbf{w} := \mathbf{w} - \eta \frac{\partial \text{MSE}}{\partial \mathbf{w}}
     \]
     \[
     b := b - \eta \frac{\partial \text{MSE}}{\partial b}
     \]
   - \( \eta \) 是学习率。

线性回归的假设
  1. 线性关系假设:特征与目标值之间存在线性关系。
  2. 独立性假设:残差互相独立。
  3. 正态性假设:残差服从正态分布。
  4. 方差齐性假设:残差的方差保持一致。
模型性能评价
  • 使用 R^2 或均方误差(MSE)评价模型效果:

\[
R^2 = 1 - \frac{\sum_{i=1}^m (y_i - \hat{y}_i)^2}{\sum_{i=1}^m (y_i - \bar{y})^2}
\]

线性回归的优缺点
优点
  • 简单、易理解,具有良好的可解释性。
  • 计算效率高,适合大规模数据集。
  • 易于扩展(通过多项式特征扩展线性模型)。
缺点
  • 仅能拟合线性关系,无法解决非线性问题。
  • 对异常值敏感,容易受噪声干扰。
  • 当特征间存在多重共线性时,可能导致不稳定。
改进方法
  1. 岭回归(Ridge Regression)
    在损失函数中加入 L2L_2L2​ 正则化项,减小模型对多重共线性的敏感度:


   \[
   \text{MSE} + \lambda \|\mathbf{w}\|_2^2
   \]

2. Lasso 回归 
   引入 \( L_1 \) 正则化项,实现特征选择:  
   \[
   \text{MSE} + \lambda \|\mathbf{w}\|_1
   \]

3. 多项式回归
   将原始特征扩展为多项式特征,利用线性回归拟合非线性关系。

应用场景

- 金融分析:预测股票价格或市场趋势。  
-
房地产估价:基于房屋面积、位置等预测房价。  
-
广告效果分析:根据广告投入金额预测销售额。


http://www.kler.cn/a/405680.html

相关文章:

  • 如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
  • shell编程(8) until循环以及函数基本创建调用
  • 【Apache Paimon】-- 6 -- 清理过期数据
  • AspectJ 对于 AOP 的实现
  • ss 命令的基本用法
  • 游戏行业趋势:“AI、出海、IP”大热下,如何提升竞争力?
  • 【prism】遇到一个坑,分享!
  • Java编程,配置mongoUri连接mongodb时,需对特殊字符进行转义
  • 基于AOA算术优化的KNN数据聚类算法matlab仿真
  • 【网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析3
  • 麒麟部署一套mysql集群,使用ansible批量部署可以提高工作效率
  • OS 的运行和结构
  • el-table-column自动生成序号在序号前插入图标
  • 利用c语言详细介绍下希尔排序
  • springboot基于java语言的医疗设备管理系统
  • pytorch 的交叉熵函数,多分类,二分类
  • 经济增长初步
  • 初见哈希表容器,及哈希表模拟
  • NLP论文速读(CVPR 2024)|使用DPO进行diffusion模型对齐
  • 昨天刚发布的新机,把前置镜头彻底干没了
  • coe文件转mif(c语言)
  • Gooxi受邀参加海通证券AI+应用生态大会,助力数智金融高质量发展
  • DrugLLM——利用大规模语言模型通过 Few-Shot 生成生物制药小分子
  • 简易安卓句分器实现
  • 论文 | Learning to Transfer Prompts for Text Generation
  • 实现金蝶云星空与钉钉数据无缝集成的技术方法