基于梯度下降的线性回归MATLAB实现

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 基于梯度下降的线性回归MATLAB实现

一、算法原理与流程

线性回归通过最小化预测值与真实值的均方误差(MSE)来求解最优参数,梯度下降通过迭代更新参数实现优化:
image.png

参数更新公式:
image.png


二、MATLAB代码实现

1. 数据生成与预处理
%% 数据生成(带噪声的线性关系)
rng(42); % 固定随机种子
m = 100; % 样本数量
X = 2 * rand(m, 1); % 特征范围[0,2]
y = 4 + 3 * X + randn(m, 1); % 真实参数θ0=4, θ1=3

%% 特征标准化(加速收敛)
mu = mean(X);
sigma = std(X);
X = (X - mu) / sigma;

%% 添加截距项
X = [ones(m, 1), X];
2. 梯度下降算法实现
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
    m = length(y); % 样本数量
    J_history = zeros(num_iters, 1); % 记录损失值

    for iter = 1:num_iters
        % 计算预测值
        h = X * theta;

        % 计算梯度
        gradient = (1/m) * X' * (h - y);

        % 参数更新
        theta = theta - alpha * gradient;

        % 记录损失
        J_history(iter) = computeCost(X, y, theta);

        % 动态调整学习率(可选)
        if iter > 1 && J_history(iter) > J_history(iter-1)
            alpha = alpha * 0.5; % 损失增加时降低学习率
        end
    end
end

function J = computeCost(X, y, theta)
    m = length(y);
    h = X * theta;
    J = (1/(2*m)) * sum((h - y).^2);
end
3. 模型训练与结果可视化
%% 参数初始化
theta = zeros(2, 1); % 初始参数[θ0; θ1]
alpha = 0.1; % 初始学习率
num_iters = 500; % 迭代次数

%% 执行梯度下降
[theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters);

%% 可视化训练过程
figure;
subplot(2,1,1);
plot(1:num_iters, J_history, 'b-o', 'LineWidth', 1.5);
xlabel('迭代次数'); ylabel('损失值'); title('损失函数收敛曲线');

subplot(2,1,2);
scatter(X(:,2), y, 'r', 'MarkerSize', 50); % 原始数据
hold on;
plot(X(:,2), X*theta, 'g', 'LineWidth', 2); % 拟合直线
xlabel('特征X'); ylabel('目标值y'); title('线性回归拟合结果');
legend('数据点', '拟合直线');

三、扩展功能实现

  1. 多变量线性回归

    支持多个特征输入:

    % 生成三变量数据
    X = [ones(m,1), randn(m,1), 2*rand(m,1)];
    y = 5 + 3*X(:,2) + 4*X(:,3) + randn(m,1);
    
    % 初始化参数
    theta = zeros(3,1);
    [theta, ~] = gradientDescent(X, y, theta, 0.01, 1000);
    
  2. 正则化线性回归

    添加L2正则化防止过拟合:

    function J = computeCostReg(X, y, theta, lambda)
        m = length(y);
        h = X * theta;
        J = (1/(2*m)) * (sum((h - y).^2) + lambda*sum(theta(2:end).^2));
    end
    
  3. 交互式参数调整

    使用MATLAB App Designer创建可调参数界面:

    % 在App Designer中添加:
    - 滑动条调整学习率α(范围0.001-1- 实时显示损失曲线
    - 预测输入框(输入X值预测y)
    

参考代码 matlab线性回归计算,基于梯度下降的线性回归算法 www.youwenfan.com/contentalj/84504.html

四、工程应用

  1. 数据预处理检查

    % 检查NaN值
    if any(isnan(X)) || any(isnan(y))
        error('输入数据包含NaN值!');
    end
    
    % 检查特征相关性
    corr_matrix = corr(X(:,2:end), y);
    disp('特征相关性分析:');
    disp(corr_matrix);
    
  2. 交叉验证

    使用k-fold交叉验证评估模型泛化能力:

    cv = cvpartition(m, 'KFold', 5);
    cv_error = zeros(cv.NumTestSets,1);
    
    for i = 1:cv.NumTestSets
        train_idx = training(cv,i);
        test_idx = test(cv,i);
    
        theta = gradientDescent(X(train_idx,:), y(train_idx), zeros(2,1), 0.1, 500);
        cv_error(i) = mean((X(test_idx,:)*theta - y(test_idx)).^2);
    end
    
    disp(['平均交叉验证误差:', num2str(mean(cv_error))]);
    
相关文章
|
28天前
|
API
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态。
205 26
|
28天前
|
人工智能 缓存 弹性计算
阿里云服务器2核4G5M199元解析:独享型u1实例,性能、适用场景、购买和续费规则介绍
阿里云通用算力型u1实例(ecs.u1-c1m2.large)2核4G、5M带宽、80G ESSD Entry云盘,活动特惠价仅199元/年(官网价3498.36元),企业新老用户同享,续费同价至2027年3月31日,每人限购1台。该实例采用独享型架构,搭载Intel至强可扩展处理器,内网带宽1Gbit/s、收发包30万PPS、云盘IOPS 1万,性能稳定,适合企业官网、中小Web应用、轻量数据库及开发测试等场景。
|
2月前
|
人工智能 弹性计算 API
阿里云轻量应用服务器低成本部署OpenClaw方案:2核2G38元,2核4G199元,全球多地域可选
2026年阿里云轻量应用服务器低成本部署OpenClaw AI助理的方案:用户可通过每天10:00和15:00的限量抢购活动,以38元/年(2核2G/40G云盘)或9.9元/月、199元/年(2核4G/50G云盘)的价格入手服务器,预装OpenClaw镜像实现分钟级一键部署,免代码上手。部署后可通过Web UI或飞书、钉钉、QQ、企业微信等IM工具与AI智能体交互,并支持扩展Skill和自定义RPA流程。方案覆盖个人博客、AI应用开发等场景,大幅降低了AI Agent的技术与资金门槛,是低成本拥抱AI智能体的实用路径。
|
28天前
|
机器学习/深度学习 自然语言处理 数据可视化
可计算元认知文本分析:癌症社会科学研究语义基线的构建与边界信号检测
本研究首次为癌症社会科学提供了可计算的语义基线,揭示该领域以不平等、社会决定因素与健康素养为核心的政策导向特征,并量化了不平等、歧视、健康素养等边界信号的学术覆盖率。相较于传统综述,本工作从“学科如何说话”的元认知视角提供结构化、可复现、跨学科对齐的计量基准,为健康公平监测、政策评估与跨领域协同提供了实证工具。 关键词:可计算元认知;语义基线;边界信号;癌症社会科学;健康不平等;文本分析
|
28天前
|
传感器 数据采集 安全
App Inventor 2 向心力实验App - 探究向心力F与角速度ω、半径r、质量m的关系
高中物理新课标要求学生通过实验探究向心力F=m·r·ω²,但现有实验器材操作不便、精度低。本文介绍如何使用App Inventor 2开发向心力实验App,利用手机内置加速度计和陀螺仪传感器,实现低成本、高精度的向心力探究实验,支持F-ω、F-r、F-m三组关系探究及理论曲线对比。
204 4
|
2月前
|
监控 算法 API
【剪映小助手】时间线计算接口
时间线计算接口是CapCut Mate的核心模块,提供`/timelines`(固定时长分割)和`/audio_timelines`(音频驱动适配)两大API,支持平均/随机分配、自动下载检测音频、累积时间线生成等功能,具备高可用、易扩展、强容错特性。(239字)
|
2月前
|
存储 自然语言处理 安全
节日场景下慈善钓鱼与宠物诈骗机理及闭环防御研究
本文基于波士顿警方预警,系统剖析节日期间高发的慈善钓鱼与宠物诈骗攻击链路,揭示其情感诱导、域名仿冒、支付劫持等核心特征及传统防御失效根源;创新提出“内容识别—链接溯源—支付风控—终端防护”四位一体闭环模型,并提供可工程化部署的代码示例,助力公共安全部门、平台与用户协同提升节日期间反诈能力。(239字)
105 3
|
2月前
|
安全 Linux 网络安全
云服务器上线后必须完成的安全设置清单
云服务器上线前,务必完成基础安全配置:关闭非必要服务、使用强密码或SSH密钥、修改默认远程端口、限制登录IP、禁用root直连、及时更新补丁、精细配置防火墙、监控关键日志、定期备份并验证恢复。安全无小事,基础防护是稳定运营的第一道防线。(239字)
297 0
云服务器上线后必须完成的安全设置清单
|
2月前
|
数据采集 机器学习/深度学习 传感器
基于支持向量回归(SVR)的预测模型MATLAB实现
基于支持向量回归(SVR)的预测模型MATLAB实现
|
3月前
|
机器学习/深度学习 并行计算 数据可视化
基于MATLAB实现eFAST全局敏感性分析
基于MATLAB实现eFAST全局敏感性分析