astachurski/simbrain

Estimate Diablo 3 auction value

GoogleCodeExporter opened this issue · 7 comments

Since the forum seems dead so do I use this instead.

Is it possible to input Diablo 3 auction data into simbrain to later try and 
estimate an auction value for an item?

Say like the data is something like this:
Type,Quality,ILvl,Str,Dex,Int,Vit,...,Gold
Crossbow,Rare,61,100,50,0,0,...,10000
CrossBow,Rare,63,0,75,198,0,...,8000
Dagger,Legendary,52,100,0,100,0,...,20000
....
and so on.

And then I find an item and want to get an estimated gold value, so I input 
somewhere the type, quality, ilvl and stats,

Is this possible in simbrain? And if so, how?

Original issue reported on code.google.com by khelat...@gmail.com on 14 Sep 2012 at 3:27

Hi  there.   This looks like a standard backprop application, and could be set 
up as you describe.   I can help you do it.   But a few notes.  First, I'm 
pretty busy for the next few weeks so I hope you don't mind waiting.  Second, 
one of the first things I'm going to do when my schedule clears a bit is upload 
Simbrain 3 beta, which is incompatble with the current releases.  We should do 
this using the beta version.    Third, Simbrain does not currently have a very 
fast version of backprop implemented, so you might be able to find something 
faster on the web.  

Original comment by jeffyosh...@gmail.com on 15 Sep 2012 at 5:05

  • Added labels: Type-Task
  • Removed labels: Type-Defect

Original comment by jeffyosh...@gmail.com on 16 Sep 2012 at 7:19

  • Changed state: Accepted
Below are some notes on how to do this.  Let me know if this helps or if you 
have follow up questions.  

Note that some of what I describe here is also covered in the documentation 
"Examples" page, which you can get to by clicking the "Examples" link on the 
first page of the docs.

- Add a neural network using the New Network button
- Go to Insert > New Network > Backprop
- For Topology use (as an example) 5,10,1 to make a feed-forward network with 5 
input nodes, 10 hidden nodes, and 1 output node.  The inputs correspond to 
ILvl,Str,Dex,Int,and Vit.  More can be added as needed.   To use Type and 
quality you'd have to convert them in to numeric values, e.g. an integer index 
for different types.   The output will correspond to an estimated auction value.
- Right click on the backprop tab and go to "edit combined data"
- Enter the relevant data into the Edit Data dialog.  The left side of this 
dialog takes input data.  The right side takes output data.  The idea is that 
we will train a network to associate the various attributes of an object (input 
data) with auction values (training data).  We will train the network on known 
cases, and then after doing that, use the network to estimate auction values 
for new cases.
- In your example, each row will correspond to one item.   The columns 
correspond to the various attributes (ILvl,Str,Dex,Int, etc).   The column on 
the right is the auction value.  
- Ok, so now you've entered all this data (you can save your data using the 
"save data" button on either side of the dialog).   Now it is a good idea to 
normalize the data, so the network is only dealing with values between 0 and 1. 
To do this, right click on each side of the dialog, and select Normalize > 
Normalize Table.  
- Now you can train the network. To do this close the edit data dialog, right 
click on the backprop tab, and select "Train backprop net...".  A training 
dialog will open. 
- Press run in the training dialog   This runs the backprop algorithm, which 
adjusts the weights to try to achieve the desired input-output mapping.   As 
the trainer runs, the error should go down.  Once the error gets to an 
acceptable level (often something below .1), press the stop button.  If you 
have trouble getting a low value you can press the randomize button and try 
again. You can also click on properties button and raise the Learning rate to 
1, or even a larger value.   Or in some cases the error can never go below a 
certain theshold for  a given input-output mapping.
- If you are able to get a suitably low error, save the network, and you can 
use it to estimate values, by plugging in input values, and reading off the 
value of the output node.  You will have to convert the input and output values 
to and from normalized values.

Original comment by jeffyosh...@gmail.com on 4 Oct 2012 at 8:27

[deleted comment]
Quoting from the comp.ai.neural.net FAQ, "In most situations, there is no way 
to determine the best number of hidden units without training several networks 
and estimating the generalization error of each."      As a first guess I 
sometimes just double the number of input units.    

For more discussion see  
http://www.faqs.org/faqs/ai-faq/neural-nets/part3/section-10.html#b

Thanks for beta testing. Let me know about bugs or usability issues you run in 
to.

Original comment by jeffyosh...@gmail.com on 5 Oct 2012 at 4:48

Should have closed this long ago....

Original comment by jeffyosh...@gmail.com on 28 Jun 2014 at 11:09

  • Changed state: Done
Thank you, and I think that I only have one more question after reading all 
that.

Should the hidden nodes always be the double of input nodes? If I increase 
input nodes to 7, should I also increase hidden nodes to 14?

Original comment by khelat...@gmail.com on 5 Oct 2012 at 5:41