使用神经网络 (ANN) 预测多元线性回归系数的任何想法?
Any Ideas for Predicting Multiple Linear Regression Coefficients by using Neural Networks (ANN)?
假设神经网络有2个输入(X1
和X2
)和1个目标输出(t
)(每个节点有6个样本):
X1 = [2.765405915 2.403146899 1.843932529 1.321474515 0.916837222 1.251301467];
X2 = [84870 363024 983062 1352580 804723 845200];
t = [-0.12685144347197 -0.19172223428950 -0.29330584684934 -0.35078062276141 0.03826908777226 0.06633047875487];
我试图通过手动使用多元线性回归(普通最小二乘法或 OLS)找到 t
预测的最佳拟合,结果非常好。
我打算从这个等式中找到 a、b、c(回归系数):
t = a + b*X1 + c*X2
既然方程是有两个回归变量的多元线性回归方程的基本形式,我当然可以通过OLS求出a、b、c的值。
问题是:我试图通过使用神经网络(使用 MATLAB nftool
并通过 Levenberg-Marquardt 反向传播或 lmtrain
对其进行训练)找到回归系数 但是 不知道如何找到它们,尽管结果显示的错误比 OLS 少。
那么,随之而来的几个问题:
- 是否可以使用神经网络求回归系数?
- 如果可能的话,什么样的人工神经网络算法可以解决这类问题以及如何手动构建它?
如果您有任何想法如何解决它,请帮助。我真的需要你的帮助!
这是我用来拟合输出估计的 MATLAB nftool
生成的脚本:
% Solve an Input-Output Fitting problem with a Neural Network
% Script generated by NFTOOL
% Created Fri Jun 05 06:26:36 ICT 2015
%
% This script assumes these variables are defined:
%
% x - input data.
% t - target data.
x = [2.765405915 2.403146899 1.843932529 1.321474515 0.916837222 1.251301467; 84870 363024 983062 1352580 804723 845200];
t = [-0.12685144347197 -0.19172223428950 -0.29330584684934 -0.35078062276141 0.03826908777226 0.06633047875487];
inputs = x;
targets = t;
% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 90/100;
net.divideParam.valRatio = 5/100;
net.divideParam.testRatio = 5/100;
% Train the Network
[net,tr] = train(net,inputs,targets);
% Test the Network
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotfit(net,inputs,targets)
%figure, plotregression(targets,outputs)
%figure, ploterrhist(errors)
神经网络通常不会找到或编码像 t = a + b*X1 + c*X2
这样的公式,除非您构建了一个非常简单的没有隐藏层和线性输出的公式。如果你这样做了,那么你可以从附加到偏差、输入 1 和输入 2 的权重中读取值 [a,b,c]
。但是,这样的网络与线性回归相比没有任何优势(本质上它 是 线性回归使用 NN 工具构建它,并使用相对较慢的梯度下降来找到最低的最小二乘误差,当它可以在 OLS 中单次通过时完成)。
您构建的是一个更复杂的非线性函数。很可能误差很低,因为你过度拟合了你的数据,这对于神经网络来说很容易做到。使用如图所示的输入数据,应该可以获得 0 的训练误差,但这并不像看起来那么好 - 它只是意味着神经网络找到了一个连接所有示例的复杂曲面,这可能是作为预测模型的使用有限。
假设神经网络有2个输入(X1
和X2
)和1个目标输出(t
)(每个节点有6个样本):
X1 = [2.765405915 2.403146899 1.843932529 1.321474515 0.916837222 1.251301467];
X2 = [84870 363024 983062 1352580 804723 845200];
t = [-0.12685144347197 -0.19172223428950 -0.29330584684934 -0.35078062276141 0.03826908777226 0.06633047875487];
我试图通过手动使用多元线性回归(普通最小二乘法或 OLS)找到 t
预测的最佳拟合,结果非常好。
我打算从这个等式中找到 a、b、c(回归系数):
t = a + b*X1 + c*X2
既然方程是有两个回归变量的多元线性回归方程的基本形式,我当然可以通过OLS求出a、b、c的值。
问题是:我试图通过使用神经网络(使用 MATLAB nftool
并通过 Levenberg-Marquardt 反向传播或 lmtrain
对其进行训练)找到回归系数 但是 不知道如何找到它们,尽管结果显示的错误比 OLS 少。
那么,随之而来的几个问题:
- 是否可以使用神经网络求回归系数?
- 如果可能的话,什么样的人工神经网络算法可以解决这类问题以及如何手动构建它?
如果您有任何想法如何解决它,请帮助。我真的需要你的帮助!
这是我用来拟合输出估计的 MATLAB nftool
生成的脚本:
% Solve an Input-Output Fitting problem with a Neural Network
% Script generated by NFTOOL
% Created Fri Jun 05 06:26:36 ICT 2015
%
% This script assumes these variables are defined:
%
% x - input data.
% t - target data.
x = [2.765405915 2.403146899 1.843932529 1.321474515 0.916837222 1.251301467; 84870 363024 983062 1352580 804723 845200];
t = [-0.12685144347197 -0.19172223428950 -0.29330584684934 -0.35078062276141 0.03826908777226 0.06633047875487];
inputs = x;
targets = t;
% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 90/100;
net.divideParam.valRatio = 5/100;
net.divideParam.testRatio = 5/100;
% Train the Network
[net,tr] = train(net,inputs,targets);
% Test the Network
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotfit(net,inputs,targets)
%figure, plotregression(targets,outputs)
%figure, ploterrhist(errors)
神经网络通常不会找到或编码像 t = a + b*X1 + c*X2
这样的公式,除非您构建了一个非常简单的没有隐藏层和线性输出的公式。如果你这样做了,那么你可以从附加到偏差、输入 1 和输入 2 的权重中读取值 [a,b,c]
。但是,这样的网络与线性回归相比没有任何优势(本质上它 是 线性回归使用 NN 工具构建它,并使用相对较慢的梯度下降来找到最低的最小二乘误差,当它可以在 OLS 中单次通过时完成)。
您构建的是一个更复杂的非线性函数。很可能误差很低,因为你过度拟合了你的数据,这对于神经网络来说很容易做到。使用如图所示的输入数据,应该可以获得 0 的训练误差,但这并不像看起来那么好 - 它只是意味着神经网络找到了一个连接所有示例的复杂曲面,这可能是作为预测模型的使用有限。