Jul 11, 2012, 11:17:49 PM7/11/12
to brandon...@gmail.com, Dixon, Kevin R, cognitiv...@googlegroups.com
Always nice to hear someone is finding the Foundry useful. Your project looks interesting. Let us know how it goes.
DefaultDataDistribution doesn't have its internal weights in log scale since it was originally developed for accumulating data via lots of calls to increment, like counting values to build simple histograms. Since adding numbers in log-space is expensive (as opposed to multiplying them, which is cheap), it doesn't make sense to have it store in log-space by default for that use-case. That said, it probably does make sense to have another implementation of the interfaces that does keep its data in log space (and has a method to set the log value directly), especially for use-cases that are not doing things like incrementing but instead keeping small probabilities. The LogMath or LogNumber classes may be helpful in providing such an implementation. We could call it LogDataDistribution or something. : )
I also think that adding a non-negative matrix factorization could be useful. As Kevin notes, I think we limited the number of classes in MTJ that we wrapped for simplicity, but NNMF is pretty widely used, so we probably want to put it in at some point.
I'm not exactly sure what you mean by "index-based discrete distributions"? Can you explain? I'm not sure if this is what you mean, I have been considering adding an indexer class that would do bi-directional mapping between objects and indices, since that is something that seems to come up in several places when we use certain applications, like mapping data to dimensions of a vector. I have a partial implementation of this that I'll work on cleaning up and getting in there. This could also be a good bridge between InfiniteVectors and Vectors.
I also agree that we should think more about how to open up to accept more external contributions (in a way that the lawyers are happy, of course), since clearly people are interested in participating. We set up the cognitivefoundry.org
site as a place to try and help build a community, but suggestions for how to make that work better are welcome.
Also, it has been a while since the last release (November); it is way past time to get another release out there.
Keep the questions and suggestions coming.
Thanks, : )