Answers.Body: <p>My suggestion is not to use an ANN, but instead to use a simpler regression algorithm. The main reason for this is that ANNs take a long time to train, and work better when a lot of data is used. They also require a lot of expertise in parameter tuning to apply well. Since you say you don't have a lot of data, and also don't have a lot of experience using them, I think you will be better off applying something else first. If the other techniques don't work at all, then you might think about using ANNs, but again, they tend to want a lot of data.</p>
  
  <p>If you have tried <a href="https://en.wikipedia.org/wiki/Least_squares" rel="nofollow noreferrer">ordinary least squares regression</a>, and found it does not work well, my next choice would be a <a href="https://en.wikipedia.org/wiki/Decision_tree_learning" rel="nofollow noreferrer">Classification And Regression Tree</a>. These models can make good decisions with small amounts of data, and do not require a lot of time to train. They can handle real-valued outputs like the height and width of a tree. Weka's <a href="http://weka.sourceforge.net/doc.dev/weka/classifiers/trees/REPTree.html" rel="nofollow noreferrer">REPTree</a> might be a good starting place.</p>
  
  <p>If Trees don't work out, my next suggestion would be to try regression using a Support Vector Machine. SciKitLearn's <a href="http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html" rel="nofollow noreferrer">SVR</a> is a good choice for this. SVRs can sometimes be very effective when data is limited, because they make assumptions about how to handle data-poor regions that seem to be generally applicable. An SVM can also report low confidence when estimating in those regions. They also train fairly fast when using small amounts of data, and can learn non-linear functions from the data.</p>
  
  <p>If you really want to use an ANN, I would start with a simple <a href="http://scikit-learn.org/stable/modules/neural_networks_supervised.html" rel="nofollow noreferrer">Multi-layer perceptron</a>. This model has few parameters to play with, and can probably fit well to your regression. It may make strange decisions in regions with less data however. </p>
  
  <p>Hope this helps!</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-28T19:22:41.510Z
Answers.Text: Hi John, thanks a lot for taking time providing detailed comments. One thing I want to make it clear is that I don't have a lot of data for each plot, but the ~4000 plots together provide a lot of data for 6 dominant species.
Answers.UserDisplayName: JChen
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-28T19:23:56.820Z
Answers.Text: And I'll follow your suggestions to see whether 1 or more options you provided will work. Again, appreciate all your help.
Answers.UserDisplayName: JChen
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-28T21:00:57.853Z
Answers.Text: @JChen don't forget to report back, and upvote or formally accept the answer if it solves the problem.  good luck!
Answers.UserDisplayName: DukeZhou
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-29T18:55:52.513Z
Answers.Text: Thanks DukeZhou, I'll certainly report back when I have some good results.
Answers.UserDisplayName: JChen
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-08-28T17:33:07.623Z
Answers.LastActivityDate: 2018-08-28T17:33:07.623Z
Answers.UserDisplayName: John Doucette
Body: <p>I'm trying to use an ANN to learn from a large amount of forest measurement data obtained from sampling plots across Ontario, Canada and associated climate data provided by regional climate modelling in this province. </p>
  
  <p>So the following are the inputs to the ANN:</p>
  
  <ul>
  <li>Location (GPS coordinates)</li>
  <li>Measurement year and month</li>
  <li>Tree species</li>
  <li>Age</li>
  <li>Soil type</li>
  <li>Soil moisture regime</li>
  <li>Seasonal or monthly average temperature</li>
  <li>Seasonal or monthly average precipitation</li>
  <li>Some more data are available to select</li>
  </ul>
  
  <p>And the targets include:
  - Average total tree height
  - Average tree diameter at breast height</p>
  
  <p>For each sampling plot, the trees have been measured for 1-4 times. 
  So my question is what type of ANN can best used to learn from the data and then it can be used for predicting with a set of new input data?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-08-28T11:23:08.843Z
Comments.Text: Welcome to AI.SE @JChen! Can you tell us what other techniques you have applied to this problem? Do you want to use a neural network because you've heard about it, or because simpler techniques fail? If those techniques fail, tell us why, and it will help us answer!
Comments.UserDisplayName: John Doucette
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-08-28T14:07:30.013Z
Comments.Text: Hi John, Thanks a lot. Assessing climate change impacts on forest development is an urgent need. But the difficulty is a lack of data for using statistical methods, especially at a large scale. We have a total of ~4000 sampling plots (mostly boreal forests) measured by 1-5 times. But together, each of the a few dominant boreal forest tree species has been measured many times. Thus should contain enough information about the relationship between tree growth and the environmental conditions that can be extracted by training an ANN. All the best.
Comments.UserDisplayName: JChen
Tags: <neural-networks>
Title: Type of artificial neural network suitable for learning and then predicting forest growth
UserDisplayName: JChen
ThreadText: # Type of artificial neural network suitable for learning and then predicting forest growth
  
  (Asked by: username_0 on 2018-08-27)
  
  I'm trying to use an ANN to learn from a large amount of forest measurement data obtained from sampling plots across Ontario, Canada and associated climate data provided by regional climate modelling in this province.
  
  So the following are the inputs to the ANN:
  
  * Location (GPS coordinates)
  * Measurement year and month
  * Tree species
  * Age
  * Soil type
  * Soil moisture regime
  * Seasonal or monthly average temperature
  * Seasonal or monthly average precipitation
  * Some more data are available to select
  
  And the targets include:
  - Average total tree height
  - Average tree diameter at breast height
  
  For each sampling plot, the trees have been measured for 1-4 times.
  So my question is what type of ANN can best used to learn from the data and then it can be used for predicting with a set of new input data?
  
  **Tags:** neural-networks
  
  > **Comments:**
  > **username_1**: Welcome to AI.SE @username_0! Can you tell us what other techniques you have applied to this problem? Do you want to use a neural network because you've heard about it, or because simpler techniques fail? If those techniques fail, tell us why, and it will help us answer!  
  > **username_0**: Hi username_1, Thanks a lot. Assessing climate change impacts on forest development is an urgent need. But the difficulty is a lack of data for using statistical methods, especially at a large scale. We have a total of ~4000 sampling plots (mostly boreal forests) measured by 1-5 times. But together, each of the a few dominant boreal forest tree species has been measured many times. Thus should contain enough information about the relationship between tree growth and the environmental conditions that can be extracted by training an ANN. All the best.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-08-28. Score: 1 | Accepted answer
  
  My suggestion is not to use an ANN, but instead to use a simpler regression algorithm. The main reason for this is that ANNs take a long time to train, and work better when a lot of data is used. They also require a lot of expertise in parameter tuning to apply well. Since you say you don't have a lot of data, and also don't have a lot of experience using them, I think you will be better off applying something else first. If the other techniques don't work at all, then you might think about using ANNs, but again, they tend to want a lot of data.
  
  If you have tried [ordinary least squares regression](https://en.wikipedia.org/wiki/Least_squares), and found it does not work well, my next choice would be a [Classification And Regression Tree](https://en.wikipedia.org/wiki/Decision_tree_learning). These models can make good decisions with small amounts of data, and do not require a lot of time to train. They can handle real-valued outputs like the height and width of a tree. Weka's [REPTree](http://weka.sourceforge.net/doc.dev/weka/classifiers/trees/REPTree.html) might be a good starting place.
  
  If Trees don't work out, my next suggestion would be to try regression using a Support Vector Machine. SciKitLearn's [SVR](http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) is a good choice for this. SVRs can sometimes be very effective when data is limited, because they make assumptions about how to handle data-poor regions that seem to be generally applicable. An SVM can also report low confidence when estimating in those regions. They also train fairly fast when using small amounts of data, and can learn non-linear functions from the data.
  
  If you really want to use an ANN, I would start with a simple [Multi-layer perceptron](http://scikit-learn.org/stable/modules/neural_networks_supervised.html). This model has few parameters to play with, and can probably fit well to your regression. It may make strange decisions in regions with less data however.
  
  Hope this helps!
  
  > **Comments:**
  > **username_0**: Hi username_1, thanks a lot for taking time providing detailed comments. One thing I want to make it clear is that I don't have a lot of data for each plot, but the ~4000 plots together provide a lot of data for 6 dominant species.  
  > **username_0**: And I'll follow your suggestions to see whether 1 or more options you provided will work. Again, appreciate all your help.  
  > **username_2**: @username_0 don't forget to report back, and upvote or formally accept the answer if it solves the problem.  good luck!  
  > **username_0**: Thanks username_2, I'll certainly report back when I have some good results.  
  
  ---
  
  