学习从未知分布中创建样本

机器算法验证 分布 机器学习 可能性 采样
2022-03-16 14:37:59

我对新生成的样本感兴趣,以逼近一些未知分布 X,其中每个新样本都是一个实值向量。

其目的是能够从这个近似分布中创建一个新的(任意大的)新样本流,该分布将以与原始采样数据相同或尽可能接近的方式分布。

一些额外的点:

  • 我将有大量来自 X 的样本,例如数百万,并且可能太大而无法放入内存。
  • 概率分布 X 可以是离散的或连续的。它很可能是多模式的。非常极端的值是不可能的。
  • 如果需要,我可以规范化数据或对其进行缩放以适应某些范围。
  • 每个样本的维度相当大(比如 1000)
  • 可以假设样本是独立的
  • 可以假设样本几乎是相同分布的,尽管它们代表一个时间序列,因此基础分布可能变化非常缓慢。这种变化不太可能大到足以
  • 理想情况下,我希望算法在线,即模型分布可以随着新的真实样本可用而逐步更新。

“学习”如何生成具有尽可能接近 X 的概率分布的新样本的最佳算法是什么?

2个回答

基本上,听起来你想引导你的数据: http ://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

一个好的(而且相对便宜)的参考资料是:AC Davison 和 DV Hinkley(1997,CUP)的“Bootstrap Methods and their Applications”。

它有一个关联的 R 包“boot”。

但是......在引导过程中可能会出现很多问题,如果您不知道自己在做什么,很容易得到误导性的结果(直率地说,这听起来很可能)。如果您确切地解释了您要解决的问题是什么,这将有很大帮助。

我最近在研究中遇到了类似的问题。我没有生成一个新函数来逼近 X。我应用的解决方案如下(我使用 MATLAB 对其进行编程):

获取样本分布的直方图(在合理范围内尽可能多的 bin)和累积密度函数。

在 CDF 的垂直轴上有介于 0 和 1 之间的值。随机生成 0 和 1 之间的数字;将它们向下跟踪到水平轴;取那个 bin 的直方图的值,你就可以为你的新样本生成一个新的值。

这种方法的重点在于,从(几乎)随机等概率数的生成中,您获得了与您的第一个分布 X 一致的非等概率分布。