algorithm - 使用不等的相关概率进行无替换抽样
问题描述
因此,从问题的答案Randomly Generate Combinations From Variable Weights,我已经设法在不等概率的情况下进行抽样而不进行替换。我已经在我的特定环境中实现了这一点,并且效果很好。
现在我可以访问有关我的发行版的其他信息。具体来说,到目前为止,我一直在使用神经网络来生成这些概率,现在我已经训练了我的神经网络来输出每对独特对象的概率,以及单个对象的概率。
因此,如果总体是 [A, B, C, D, E, F] 并且我将抽样大小为 3 的组,那么我可以获得结果样本同时包含 A 和 B 的概率,或者概率结果样本将同时包含 C 和 E 等。我还可以访问样本包含任何单个元素的概率。
上面的问题让我意识到抽样比我最初预期的要困难得多。不过,我想知道是否有任何方法可以使用这些关于这些对的概率的信息来使我的样本更好地匹配我的实际目标分布。
使用上面问题的第一个答案中讨论的方法,其中梯度下降用于找到导致正确条件概率的概率,当提供以下概率时:
[0.349003, 0.56702, 0.384279, 0.627456, 0.585684, 0.486558]
(对于上面的人口的各个元素)
3,000,000 个组的样本遵循以下分布,其中矩阵的交点表示采样组包含相交的两个元素的概率:
A B C D E F
A [0.34860067 0.15068367 0.09183067 0.17385267 0.15775267 0.12308167]
B [0.15068367 0.567596 0.168863 0.309292 0.28285467 0.22349867]
C [0.09183067 0.168863 0.384101 0.19396467 0.175895 0.13764867]
D [0.17385267 0.309292 0.19396467 0.62724833 0.32153967 0.25584767]
E [0.15775267 0.28285467 0.175895 0.32153967 0.58571833 0.23339467]
F [0.12308167 0.22349867 0.13764867 0.25584767 0.23339467 0.48673567]
例如,我希望能够为我的采样算法提供以下矩阵:
A B C D E F
A [0.349003 0.148131 0.15166 0.098827 0.151485 0.147903]
B [0.148131 0.56702 0.140829 0.327032 0.331278 0.18677 ]
C [0.15166 0.140829 0.384279 0.190329 0.09551 0.19023 ]
D [0.098827 0.327032 0.190329 0.627456 0.391803 0.246921]
E [0.151485 0.331278 0.09551 0.391803 0.585684 0.201292]
F [0.147903 0.18677 0.19023 0.246921 0.201292 0.486558]
并且它的样本分布更接近于匹配这个提供的矩阵,而不是像上面那样只使用单个概率。
我可以接受采样算法与概率不完全匹配,但如果可能的话会很好。根据我自己对这个问题的尝试,我意识到事情变得更加困难,因为尽管提供了 P(A and B),但不可能仅从矩阵中的信息推导出 P(A and B and C)。基本上我的问题是,我有什么方法可以使用我拥有的这些附加信息(对的概率)来生成分布的样本,这些分布比我只使用每个单独对象的概率更好地模拟我的预期分布。
解决方案
推荐阅读
- node.js - 在 Docker 中为 Puppeteer 安装 Firefox 浏览器二进制文件
- javascript - 更改数据源后角度材料排序标题不起作用
- php - How to redirect WooCommerce shop to a custom shop page
- angular - Angular Universal / SSR nativeElement.innerHTML 和 renderer.setProperty 抛出错误:NotYetImplemented
- python - Removing null values from Array after merging columns- pyspark
- next.js - Trying to redirect from getStaticProps returns error during build
- swift - update notificationToken when user authenticated changes - Swift - Programmatically
- css - Border not div's full width
- kotlin - Handle multiple exceptions in Kotlin Kotest eventually
- string - get specific word from one column in select query