【机器学习分支】重要性采样(Importance sampling)学习笔记

重要性采样(importance sampling)是一种用于估计概率密度函数期望值的常用蒙特卡罗积分方法。其基本思想是利用一个已知的概率密度函数来生成样本,从而近似计算另一个概率密度函数的期望值。

(这个基本思想的说法太抽象了≡(▔﹏▔)≡,现在仅仅把重要性采样当做一个在概率大的地方多采样的方法就好,等看完全文的采样步骤再来看这句总结性的话会更好理解。另外,结合下面举的例子应该理解起来会简单一些)

想从复杂概率分布中采样的一个主要原因是能够使用式(11.1)计算期望。重要采样(importance sampling)的方法提供了直接近似期望的框架,但是它本身并没有提供从概率分布 p ( z ) p(z) p(z)中采样的方法,也就是我们无法从式(11.1)直接过渡到(11.2)
E [ f ] = ∫ f ( z ) p ( z ) d z (11.1) \mathbb{E}[f] = \int f(z)p(z)dz \tag{11.1} E[f]=f(z)p(z)dz(11.1) f ^ = 1 L ∑ l = 1 L f ( z ( l ) ) (11.2) \hat{f} = \frac{1}{L}\sum\limits_{l=1}^L f(z^{(l)}) \tag{11.2} f^=L1l=1Lf(z(l))(11.2)公式(11.2)给出的期望的有限和近似依赖于能够从概率分布 p ( z ) p(z) p(z)中采样。然而,假设直接从 p ( z ) p(z) p(z)中采样无法完成,但是对于任意给定的 z z z值,我们可以很容易地计算 p ( z ) p(z) p(z)。一种简单的计算期望的方法是将 z z z空间离散化为均匀的格点,将被积函数使用求和的方式计算,形式为
E [ f ] ≃ ∑ l = 1 L p ( z ( l ) ) f ( z ( l ) ) \mathbb{E}[f] \simeq \sum\limits_{l=1}^Lp(z^{(l)})f(z^{(l)}) E[f]l=1Lp(z(l))f(z(l))这种方法的一个明显的问题是求和式中的项的数量随着 z z z的维度指数增长。此外,正如我们已经注意到的那样,我们感兴趣的概率分布通常将它们的大部分质量限制在 z z z空间的一个很小的区域,因此均匀地采样非常低效,因为在高维的问题中,只有非常小的一部分样本会对求和式产生巨大的贡献。我们希望从 p ( z ) p(z) p(z)的值较大的区域中采样,或理想情况下,从 p ( z ) f ( z ) p(z)f(z) p(z)f(z)的值较大的区域中采样。

与拒绝采样的情形相同,重要采样基于的是对提议分布 q ( z ) q(z) q(z)的使用,我们很容易从提议分布中采样,如下图所示:

重要采样解决的是计算函数 f ( z ) f(z) f(z)关于分布 p ( z ) p(z) p(z)的期望的问题,其中,从 p ( z ) p(z) p(z)中直接采样比较困难。相反,样本 z ( l ) {z^{(l)}} z(l)从一个简单的概率分布 q ( z ) q(z) q(z)中抽取,求和式中的对应项的权值为 p ( z ( l ) ) / q ( z ( l ) ) p(z^{(l)})/q(z^{(l)}) p(z(l))/q(z(l)),这样就可以还原到从 p ( z ) p(z) p(z)中取样。

上述过程中的式子,我们可以通过 q ( z ) q(z) q(z)中的样本 { z ( l ) } \{z^{(l)}\} {z(l)}的有限和的形式来表示期望
E = ∫ f ( z ) p ( z ) d z   = ∫ f ( z ) p ( z ) q ( z ) q ( z ) d z   ≃ 1 L ∑ l = 1 L p ( z ( l ) ) q ( z ( l ) ) f ( z ( l ) ) \mathbb{E} = \int f(z)p(z)dz \ = \int f(z)\frac{p(z)}{q(z)}q(z)dz \ \simeq \frac{1}{L}\sum\limits_{l=1}^L\frac{p(z^{(l)})}{q(z^{(l)})}f(z^{(l)}) E=f(z)p(z)dz =f(z)q(z)p(z)q(z)dz L1l=1Lq(z(l))p(z(l))f(z(l))其中 r l = p ( z ( l ) ) / q ( z ( l ) ) r_l = p(z^{(l)}) / q(z^{(l)}) rl=p(z(l))/q(z(l))被称为重要性权重(importance weights),修正了由于从错误的概率分布 q ( z ) q(z) q(z)中采样引入的偏差。

对于上述过程,举个栗子:

我们的待计算函数为 h ( x ) = e − 2 ∣ x − 5 ∣ h(x)=e^{-2|x-5|} h(x)=e2∣x5∣,待采样分布为 p ( x ) = 1 10 , x ∼ u ( 0 , 10 ) p(x)=\dfrac{1}{10} ,x \sim\mathcal{u}(0,10) p(x)=101,xu(0,10),从 h ( x ) h(x) h(x)的图像中明显可以看出,在中间部分的 h ( x ) p ( x ) h(x)p(x) h(x)p(x)对期望贡献较大,而两边几乎可以忽略不计,所以此时使用均匀分布采样并不合理。

image-20230428164718557

基于此,我们引入了新的采样分布函数 q ( x ) = 1 2 π e − ( x − 5 ) 2 2 q(x)=\dfrac{1}{\sqrt{2\pi}}e^{-\frac{(x-5)^2}{2}} q(x)=2π 1e2(x5)2

在这里插入图片描述
这使得在 h ( x ) h(x) h(x)较大的位置取值更多,需要的采样点更少。

以上就是重要性采样基本的思想及公式推导。

而更常见的情形是,概率分布 p p p的计算结果没有标准化,也就是 p ( z ) = p ~ ( z ) / Z p p(z) = \tilde{p}(z) / Z_p p(z)=p~(z)/Zp中我们只知道 p ~ ( z ) \tilde{p}(z) p~(z),其中 p ~ ( z ) \tilde{p}(z) p~(z)的值可以很容易地由 z z z计算出来(可能没有函数表达式),而 Z p Z_p Zp未知( p ~ ( z ) \tilde{p}(z) p~(z)无法积分算)。类似的,我们可能希望使用重要采样分布 q ( z ) = q ~ ( z ) / Z q q(z) = \tilde{q}(z) / Z_q q(z)=q~(z)/Zq中的 q ~ ( z ) \tilde{q}(z) q~(z),它具有相同的性质。于是我们得到:
E [ f ] = ∫ f ( z ) p ( z ) d z   = Z q Z p ∫ f ( z ) p ~ ( z ) q ~ ( z ) q ( z ) d z   ≃ Z q Z p 1 L ∑ l = 1 L r ~ l f ( z ( l ) ) \mathbb{E}[f] = \int f(z)p(z)dz \ = \frac{Z_q}{Z_p}\int f(z)\frac{\tilde{p}(z)}{\tilde{q}(z)}q(z)dz \ \simeq \frac{Z_q}{Z_p}\frac{1}{L}\sum\limits_{l=1}^L\tilde{r}_lf(z^{(l)}) E[f]=f(z)p(z)dz =ZpZqf(z)q~(z)p~(z)q(z)dz ZpZqL1l=1Lr~lf(z(l))
其中 r ~ l = p ~ ( z ( l ) ) / q ~ ( z ( l ) ) \tilde{r}_l = \tilde{p}(z^{(l)}) / \tilde{q}(z^{(l)}) r~l=p~(z(l))/q~(z(l))

对于其中的 Z p / Z q Z_p / Z_q Zp/Zq,我们还可以使用同样的样本集合来计算,消掉这个未知的东西,结果为:
Z p Z q = 1 Z q ∫ p ~ ( z ) d z = ∫ p ~ ( z ) q ~ ( z ) q ( z ) d z   ≃ 1 L ∑ l = 1 L r ~ l \frac{Z_p}{Z_q} = \frac{1}{Z_q}\int\tilde{p}(z)dz = \int\frac{\tilde{p}(z)}{\tilde{q}(z)}q(z)dz \ \simeq \frac{1}{L}\sum\limits_{l=1}^L\tilde{r}_l ZqZp=Zq1p~(z)dz=q~(z)p~(z)q(z)dz L1l=1Lr~l

第一个等式中 Z p Z_p Zp ∫ p ~ ( z ) d z \int\tilde{p}(z)dz p~(z)dz等价计算了出来,第二个等式中 Z q Z_q Zq q ( z ) = q ~ ( z ) / Z q q(z) = \tilde{q}(z) / Z_q q(z)=q~(z)/Zq替代

因此:
E [ f ] ≃ ∑ l = 1 L w l f ( z ( l ) ) \mathbb{E}[f] \simeq \sum\limits_{l=1}^Lw_lf(z^{(l)}) E[f]l=1Lwlf(z(l))其中: w l = r ~ l ∑ m r ~ m = p ~ ( z ( l ) ) / q ( z ( l ) ) ∑ m p ~ ( z ( l ) ) / q ( z ( l ) ) w_l = \frac{\tilde{r}_l}{\sum_m\tilde{r}_m} = \frac{\tilde{p}(z^{(l)})/q(z^{(l)})}{\sum_m\tilde{p}(z^{(l)})/q(z^{(l)})} wl=mr~mr~l=mp~(z(l))/q(z(l))p~(z(l))/q(z(l))
这也就是我们最终要找样本点计算的式子
最终,我们达到了“利用一个已知的概率密度函数 q ( z ) q(z) q(z)来生成样本,从而近似计算另一个概率密度函数的期望值 E [ f ] = ∫ f ( z ) p ( z ) d z \mathbb{E}[f] = \int f(z)p(z)dz E[f]=f(z)p(z)dz”这一目的。

参考:

  1. 【PRML】【模式识别和机器学习】【从零开始的公式推导】11.1.4重要性采样 11.1.5采样-重要性-重采样 11.1.6采样与EM算法
  2. Importance Sampling - VISUALLY EXPLAINED with EXAMPLES!
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
***要性是指特征对模型预测结果的影响程度。有多种方法可以用来计算特征重要性。根据引用中的内容,以下是一些常用的特征重要性排序方法: 1. 嵌入法(Embedded methods):这是一种基于模型的方法,通过训练模型并使用模型内部的特征重要性指标来选择特征。例如,可以使用sklearn库中的SelectFromModel和mljar-supervised中的AutoML来进行特征选择和排序。 2. 排列重要性(Permutation Importance):这种方法通过随机重排某个特征的值来评估该特征对模型性能的影响。可以使用PermutationImportance来计算特征的重要性。 3. SHAP值:SHAP值是一种特征归因方法,可以用来衡量每个特征对模型输出的贡献程度。引用中提到,SHAP值是唯一一致的个性化特征归因方法。 需要注意的是,不同的特征重要性计算方法可能会得到不同的结果,如引用所提到的。因此,为了更全面地评估特征的重要性,可以结合多种方法来获取特征重要性的排序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [机器学习模型可解释性进行到底——特征重要性(四)](https://blog.csdn.net/sinat_26917383/article/details/115680807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【可解释性机器学习】排列重要性(Permutation Importance)及案例分析详解](https://blog.csdn.net/ARPOSPF/article/details/128774692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值