使用神经网络 (ANN) 预测多元线性回归系数的任何想法?

Any Ideas for Predicting Multiple Linear Regression Coefficients by using Neural Networks (ANN)?

假设神经网络有2个输入(X1X2)和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 少。

那么,随之而来的几个问题:

  1. 是否可以使用神经网络求回归系数?
  2. 如果可能的话,什么样的人工神经网络算法可以解决这类问题以及如何手动构建它?

如果您有任何想法如何解决它,请帮助。我真的需要你的帮助!

这是我用来拟合输出估计的 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 的训练误差,但这并不像看起来那么好 - 它只是意味着神经网络找到了一个连接所有示例的复杂曲面,这可能是作为预测模型的使用有限。