[Predicción lssvm] Basado en la predicción lssvm de la máquina de vectores de soporte de mínimos cuadrados mejorada del algoritmo de supresión de incendios de polillas [Matlab 110] [Modelo de predicción 8]

Características de LSSVM
  1) Lo mismo es resolver el problema dual original, pero resolviendo un conjunto de ecuaciones lineales (causado por las restricciones lineales en el objetivo de optimización) en lugar del problema QP en el SVM (simplificando el proceso de solución), para el espacio de entrada de alta dimensión Lo mismo se aplica a las tareas de clasificación y regresión;
  2) Esencialmente el proceso de resolución de ecuaciones matriciales lineales, combinado con la versión central de los procesos gaussianos, redes de regularización y análisis discriminante de Fisher;
  3) Utilice aproximación dispersa (para superar el inconvenientes de usar este algoritmo) y regresión robusta (estadísticas robustas);
  4) Usar inferencia bayesiana;
  5) Puede extenderse al aprendizaje no supervisado: análisis de componentes principales del kernel (kernel PCA) o agrupamiento de densidad;
  6) Puede extenderse a redes neuronales recurrentes .

LSSVM se utiliza para tareas de clasificación
  1)
  Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Las desventajas de la optimización objetivo LSSVM
  notado al resolver tareas de clasificación, en el proceso de resolución de optimización, α i = γ ei \ alpha_ {i} = \ gamma {e_ {i}} αi = γei , Dado que el multiplicador de Lagrange α i ≠ 0 \ alpha_ {i} \ neq {0} αi ̸ = 0 correspondiente a la restricción de igualdad en el método del multiplicador de Lagrange, todas las muestras de entrenamiento se tomarán como Mirando el vector de soporte, esto hará que pierda la naturaleza dispersa original de la SVM, pero el conjunto de entrenamiento también puede podarse en base al soporte para lograr el propósito de dispersión.Este paso también se puede ver Hacer es una operación aproximada dispersa.

La optimización de llama de polilla (MFO), propuesta por Seyedali Mirjalili en 2015, proporciona un nuevo paradigma de búsqueda heurística para el campo de la optimización: la búsqueda en espiral.

Las polillas tienen una forma especial de navegar de noche: orientación horizontal. Es decir, volará en cierto ángulo con la luna (fuente de luz), para mantener una trayectoria de vuelo recta, sin embargo, este método solo es efectivo cuando la fuente de luz está lejos de la polilla. Cuando hay una fuente de luz artificial, la polilla será engañada por la luz artificial y seguirá volando en el mismo ángulo que la luz artificial. Debido a que está demasiado cerca de la fuente de luz, su trayectoria de vuelo no es una línea recta, sino una camino en espiral.
Inserte la descripción de la imagen aquí
Inspirado por este fenómeno natural, Seyedali Mirjalili abstrajo el proceso de las polillas volando en espiral alrededor de la fuente de luz como un proceso óptimo. Todo el espacio en el que las polillas vuelan es el espacio de solución para el problema, y ​​una polilla es uno de los problemas. La llama (fuente de luz) es una mejor solución al problema. Cada polilla corresponde a una fuente de luz, lo que evita que el algoritmo caiga en el óptimo local; cuando hay suficientes polillas y llamas, el vuelo de la polilla puede buscar la solución. Durante el proceso de optimización, el número de llamas disminuye a medida que aumenta el número de iteraciones, de modo que las polillas pueden buscar por completo espacios de vecindad más óptimos, lo que garantiza la capacidad de utilización del algoritmo.

Con base en las características anteriores, MFO ha encontrado un equilibrio entre exploración y utilización, por lo que el algoritmo tiene un mejor efecto en los problemas de optimización.

En general, MFO también es un algoritmo de búsqueda heurística aleatoria basado en la población. La mayor diferencia entre este y PSO, GSA y otros algoritmos es que su ruta de búsqueda de partículas es en espiral, y las partículas rodean una mejor solución en forma de espiral. Muévase en su lugar de moverse en línea recta.

El proceso de MFO es el siguiente:
1. Inicializar la población de polillas
2. Realizar una evaluación de aptitud en la población de polillas
3. Repetir el siguiente proceso hasta alcanzar el criterio de detención:
3.1 Actualizar de forma adaptativa el número de llamas n, cuando el número de iteraciones es 1, el número de polillas El número es el número de llamas
3.2 Se ordena la aptitud de la población de las polillas y se seleccionan n polillas con mejor aptitud como
parámetros de búsqueda de la llama 3.3 actualizar polillas.
3.4 Actualizar la posición de la polilla según los parámetros de llama y vuelo correspondientes a cada polilla
4. Salida de la solución óptima (llama)

Consulte el artículo para conocer la fórmula específica de actualización de la posición de la polilla: Algoritmo de optimización de llama de polilla: un paradigma heurístico novedoso inspirado en la naturaleza

%=====================================================================
%初始化
clc
close all
clear
format long
tic
%==============================================================
%%导入数据
data=xlsread('1.xlsx');
[row,col]=size(data);
x=data(:,1:col-1);
y=data(:,col);
set=1; %设置测量样本数
row1=row-set;%
train_x=x(1:row1,:);
train_y=y(1:row1,:);
test_x=x(row1+1:row,:);%预测输入
test_y=y(row1+1:row,:);%预测输出
train_x=train_x';
train_y=train_y';
test_x=test_x';
test_y=test_y';
 
%%数据归一化
[train_x,minx,maxx, train_yy,miny,maxy] =premnmx(train_x,train_y);
test_x=tramnmx(test_x,minx,maxx);
train_x=train_x';
train_yy=train_yy';
train_y=train_y';
test_x=test_x';
test_y=test_y';
%% 参数初始化
eps = 10^(-6);
%%定义lssvm相关参数
type='f';
kernel = 'RBF_kernel';
 
N=20; % Number of search agents
Max_iteration=100; % Maximum numbef of iterations
Leader_pos=zeros(1,dim);
Leader_score=inf; %change this to -inf for maximization problems
%Initialize the positions of search agents
% for i=1:SearchAgents_no
%     Positions(i,1)=ceil(rand(1)*(ub(1)-lb(1))+lb(1));
%     Positions(i,2)=ceil(rand(1)*(ub(2)-lb(2))+lb(2));
%     
end
 
%% 结果分析
plot( Convergence_curve,'LineWidth',2);
title(['飞蛾扑火优化算法适应度曲线','(参数c1=',num2str(Best_flame_pos(1)),',c2=',num2str(Best_flame_pos(2)),',终止代数=',num2str(Max_iteration),')'],'FontSize',13);
xlabel('进化代数');ylabel('误差适应度');
 
bestc = Best_flame_pos(1);
bestg = Best_flame_pos(2);
 
gam=bestc;
sig2=bestg;
model=initlssvm(train_x,train_yy,type,gam,sig2,kernel,proprecess);%原来是显示
model=trainlssvm(model);%原来是显示
%求出训练集和测试集的预测值
[train_predict_y,zt,model]=simlssvm(model,train_x);
[test_predict_y,zt,model]=simlssvm(model,test_x);
 
%预测数据反归一化
train_predict=postmnmx(train_predict_y,miny,maxy);%预测输出
test_predict=postmnmx(test_predict_y,miny,maxy);
%计算均方差
trainmse=sum((train_predict-train_y).^2)/length(train_y);
%testmse=sum((test_predict-test_y).^2)/length(test_y)
 
for i=1:set
    RD(i)=(test_predict(i)-test_y(i))/test_y(i)*100;
end
for i=1:set
    D(i)=test_predict(i)-test_y(i);
end
RD=RD'
disp(['飞蛾扑火优化算法优化svm预测误差=',num2str(D)])
figure
plot(train_predict,':og')
hold on
plot(train_y,'- *')
legend('预测输出','期望输出')
title('飞蛾扑火优化svm网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
 
toc   %计算时间
 

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Nota: código completo o escritura agregue QQ2449341593 revisión anterior
>>>>>>
basado en el programa de predicción matlab lssvm de enjambre de partículas [Matlab 103] [modelo de predicción 1]
[predicción lssvm] basado en el algoritmo de optimización de ballenas predicción de datos lssvm matlab Código fuente [Matlab 104] [Modelo de predicción 2]
[Predicción de lstm] Predicción de lstm mejorada basada en el código fuente de matlab del algoritmo de optimización de ballenas [Matlab 105] [Modelo de predicción 3]
[Predicción de SVM] Predicción de SVM basada en la mejora del algoritmo de murciélago [Matlab 106 [Modelo de predicción 4]
[Predicción de SVM] Optimización del algoritmo de lobo gris soporte de svm predicción de máquina vectorial código fuente de matlab [Matlab 107] [Modelo de predicción 5]
Predicción de red neuronal de BP [Matlab 108] [Modelo de predicción 6]
[Modelo de predicción lssvm】 Basado en el algoritmo bat mejorado mínimos cuadrados Admite predicción lssvm de máquina vectorial [Matlab 109] [Modelo de predicción 7]

Supongo que te gusta

Origin blog.csdn.net/TIQCmatlab/article/details/112907996
Recomendado
Clasificación