How to use Artificial Neural Network to find a relationship between input and output parameters?

13 views (last 30 days)
Hello
Dear all
I came across to neural network fitting in MATLAB toolbox, but I am not sure if it fits my objective.
My objective is that, I have some parameters as inputs, (X1, X2, ... Xn) and my output parameter is Y. I want to know if there is any kind of relationship/trend between Y and X's in any form.
Since simple linear regression between individual X's and Y did not give a relationship, I need to know if I can find a relationship with a combination of my Y and X's like Y = aX1 + bX1X2 + ...
is Neural Network Fitting suitbale for such purpose? If so, how should I do that? and if not, does anybody knows how I can achieve that objective?
I do appreciate your help

Accepted Answer

Blake Van Winkle
Blake Van Winkle on 14 Jan 2020
To Ben:
NNs generally will not give an open solution for you to be able to extract meaning from how the terms relate. This is because of how the inputs are combined together repeatidly with the use of transfer functions as they progress through the layers. I woud suggest that you look at response surface models (RSM), kriging models, and genetic programming as methods that would more easily suite your desires.
If you are hard pressed to get any of those to work, you could use the NN, but it will behave more like a black box.. One of the major issues in NN-land is that there are not many tried and true ways of doing things, so most are forced into brute force techniques and use what "works". (whatever that means)
If you get it to produce a reasonable result for you, it will be difficult to extract nuggets out about how different inputs effect outputs or vise versa, I would suggest that you use a numerical partial derivative along each dimension of interest and review the resulting matrix.
y = NN(x)
dy/dx = (NN(x+dx)-NN(x-dx))/(2*dx)
This will give you a feeling for how they interact, but it will be a local answer.
If you were really going to dig into all this stuff, first you should normalize your data. Next, you should probably plot your data x(i) v Y. Then, I would suggest trying to find the primary components (primary component analysis) [warning this sometimes removes interesting attributes]. http://mres.uni-potsdam.de/index.php/2017/09/14/principal-component-analysis-in-6-steps/
Finally, try to fit the cleaned up data set based off of getting high performance with minimal input variables into a method to generate a function. (any of those above)
Good luck. As a side note, I am not going to put my personal backing behind any of these tools, so use them at your own discression.
  1 Comment
Benjamin
Benjamin on 15 Jan 2020
Thank you Blake for your explanations. Yes, after I looked up for Genetic Programming in MATLAB, it seems that it is a suitable toolbox for finding a relationship between input random variables.
P.S. As I went forward to learn how to use GP, it arouse more question that I am going to ask in a new topic. As it seems you have some experience on it, I do appreciate if you help me in this topic (How to use GM)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!