I am interested in new generating samples to approximate some unknown distribution X, where each new sample is a real-valued vector.
The purpose it to be able to create a new (arbitrary large) stream of new samples from this approximate distribution that will be distributed in the same way, or as close as possible, to the original sampled data.
Some additional points:
- I will have a large number of samples from X, e.g. in the millions, and possibly too large to fit in memory.
- The probability distribution X could be either discrete or continuous. It is likely to be multi-modal. Very extreme values are unlikely.
- If needed I can normalise the data or scale it to fit some bounds.
- Dimensionality of each sample is reasonably large (say 1000)
- Samples can be assumed to be independent
- Samples can be assumed to be almost identically distributed, although they represent a time series so it is possible that the underlying distribution may be changing very slowly. This change is unlikely to be large enough to
- Ideally I'd like the algorithm to be online, i.e. the model distribution can be updated incrementally as new real samples become available.
What is the best algorithm to "learn" how to generate new samples with a probability distribution that approximates X as closely as possible?