基于风驱动算法优化的lssvm回归预测-附代码

news/2024/7/7 19:40:45

基于风驱动算法优化的lssvm回归预测 - 附代码

文章目录

  • 基于风驱动算法优化的lssvm回归预测 - 附代码
    • 1.数据集
    • 2.lssvm模型
    • 3.基于风驱动算法优化的LSSVM
    • 4.测试结果
    • 5.Matlab代码

摘要:为了提高最小二乘支持向量机(lssvm)的回归预测准确率,对lssvm中的惩罚参数和核惩罚参数利用风驱动算法进行优化。

1.数据集

数据信息如下:

data.mat 的中包含input数据和output数据

其中input数据维度为:2000*2

其中output数据维度为2000*1

所以RF模型的数据输入维度为2;输出维度为1。

2.lssvm模型

lssvm请自行参考相关机器学习书籍。

3.基于风驱动算法优化的LSSVM

风驱动算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108676626

风驱动算法的优化参数为惩罚参数和核惩罚参数。适应度函数为RF对训练集和测试集的均方误差(MSE),均方误差MSE越低越好。
f i n t e n e s s = M S E [ p r e d i c t ( t r a i n ) ] + M S E [ p r e d i c t ( t e s t ) ] finteness = MSE[predict(train)] + MSE[predict(test)] finteness=MSE[predict(train)]+MSE[predict(test)]

4.测试结果

数据划分信息如下: 训练集数量为1900组,测试集数量为100组

风驱动参数设置如下:

%% 利用风驱动算法选择回归预测分析最佳的lssSVM参数c&g
%%  风驱动参数设置
% 定义优化参数的个数,在该场景中,优化参数的个数dim为2 。
% 定义优化参数的上下限,如c的范围是[0.01, 1], g的范围是[2^-5, 2^5],那么参数的下限lb=[0.01, 2^-5];参数的上限ub=[1, 2^5]。
%目标函数
fobj = @(x) fun(x,Pn_train,Tn_train,Pn_test,Tn_test); 
% 优化参数的个数 (c、g)
dim = 2;
% 优化参数的取值下限
lb = [0.01,0.01];
ub = [5,5];
%  参数设置
pop =20; %风驱动数量
Max_iteration=5;%最大迭代次数             

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

wdo-LSSVM优化得到的最优参数为:
wdo-LSSVM优化得到的gama为:4.8808
wdo-LSSVM优化得到的sig2为:0.60377

wdo-LSSVM结果:
wdo-LSSVM训练集MSE:0.055929
wdo-LSSVM测试集MSE:0.026357
LSSVM结果:
LSSVM训练集MSE:0.16558
LSSVM测试集MSE:0.072999

从MSE结果来看,经过改进后的风驱动-LSSVM明显优于未改进前的结果。

5.Matlab代码


http://lihuaxi.xjx100.cn/news/348120.html

相关文章

欢迎报名Rust China Hackathon 2022 达坦科技组

12月4日下午,DatenLord就2022Rust China Hackathon大赛活动企业组(达坦科技组)的赛题进行了空中宣讲会。不仅对赛事流程进行了全面的讲解,同时对赛题背景以及完赛标准和要点进行了深入的剖析。会后更是设置问答环节,细…

Java高级特性 - IO流

第1关:什么是IO流 任务描述 本关任务:完成选择题。 相关知识 为了完成本关任务,你需要掌握: 1.什么是字节、字符; 2.什么是输入流、什么是输出流。 什么是字节 字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参…

力扣 leetcode 39. 组合总和

问题描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数…

Java操作ElasticSearch(四、排序、高亮、分页、Filter过滤、source筛选)

排序 通过 SearchSourceBuilder 的 sort(String, SortOrder) 方法用来实现排序条件的封装@Test public void test18() throws IOException {SearchRequest request = new SearchRequest("user");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(…

Java流程控制学习

P33 用户交互Scanner Scanner对象之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户的输入。基本语法: Scanner s = new Scanner(Syste…

当前的数字化,CIO 们到底需要什么?

“做数字化,没人、没钱、没资源,但还要做效果,该怎么办?” 这是很多 CIO 当下都面临的困境。 那么,对于不同企业来说,到底该如何有效探索数字化转型之路呢? 数字化转型的三个阶段 Gartner 把…

Git入门级常用命令(1)

话不多说,直接上干货~ Git命令 入门 下载 https://git-scm.com/downloads查看版本 $ git --version git version 2.30.0.windows.1常用命令 mkdir oa-parent cd oa-parent vim .gitignore git init // 添加文件到暂存区 git add --all(或 gi…

MPLS协议介绍

MPLS介绍 1.MPLS协议概述 MPLS根据自己的标签交换,需要给数据包先写上自己的标签,然后设备才能查看标签之后就转发,此标签是需要在原有的数据包的基础上加进去的,并没有将以前的包头删除,MPLS的标签加在了第二层帧的…