| 第534行: |
第534行: |
| | 因此,联合信息 \(I_{\cup}\) 是任何比所有源都“更有信息量”的随机变量中关于 \(Y\) 的最小信息量。注意 \(I_{\cap}\) 和 \(I_{\cup}\) 依赖于排序关系 \(\sqsubset\) 的选择,而作者认为不同的应用领域有不同的排序定义。 | | 因此,联合信息 \(I_{\cup}\) 是任何比所有源都“更有信息量”的随机变量中关于 \(Y\) 的最小信息量。注意 \(I_{\cap}\) 和 \(I_{\cup}\) 依赖于排序关系 \(\sqsubset\) 的选择,而作者认为不同的应用领域有不同的排序定义。 |
| | 此外还有其他方法:Barrett:所有先前提出的 PID 在这种高斯情况下都简化为 MMI PID。James:将冗余信息改为了特有信息finn:作者将点对点互信息拆分成了正的信息分量(特异性)负的信息分量(模糊性)。与此对应,冗余格拆分为了特异性格和模糊性格并据此定义了点对点冗余特异性: | | 此外还有其他方法:Barrett:所有先前提出的 PID 在这种高斯情况下都简化为 MMI PID。James:将冗余信息改为了特有信息finn:作者将点对点互信息拆分成了正的信息分量(特异性)负的信息分量(模糊性)。与此对应,冗余格拆分为了特异性格和模糊性格并据此定义了点对点冗余特异性: |
| − | 和点对点冗余模糊性:随后,有两种方式组合这两个定义,一种是直接求期望,一种是从点对点特异性和模糊性中减去点对点独特性、冗余性和互补性,得到点对点独特性、冗余性和互补性信息。Ince:基于点wise共同变化不确定度度量冗余信息。Bertschinger:将 $MI(X:(Y,Z))$ 分解为共享信息、独特信息和协同信息。作者定义了新的度量方法 $\widetilde{UI}$、$\widetilde{SI}$ 和 $\widetilde{CI}$,这些方法基于独特信息的操作性概念,即独特和共享信息应仅依赖于 $(X,Y)$ 和 $(X,Z)$ 的成对边缘分布。文章通过定义一个特定的集合 $\Delta_P$,即所有具有相同 $(X,Y)$ 和 $(X,Z)$ 边缘分布的联合分布的集合,来构建这些度量方法。
| + | 和点对点冗余模糊性:随后,有两种方式组合这两个定义,一种是直接求期望,一种是从点对点特异性和模糊性中减去点对点独特性、冗余性和互补性,得到点对点独特性、冗余性和互补性信息。Ince:基于点wise共同变化不确定度度量冗余信息。Bertschinger:唯一信息定义为可以获得的最小条件相互信息,同时保持输入-输出边际固定。 |
| | + | |
| | | | |
| | 我们将几种 PID 度量方式进行比较: | | 我们将几种 PID 度量方式进行比较: |
| 第738行: |
第739行: |
| | 不出所料,<math>X_1</math>和<math>X_2</math>传达的关于Y的唯一信息是{0:1},这是协同信息。 | | 不出所料,<math>X_1</math>和<math>X_2</math>传达的关于Y的唯一信息是{0:1},这是协同信息。 |
| | | | |
| | + | 下面介绍如何用dit库进行一次完整的部分信息分解实验:(详见https://dit.readthedocs.io/en/latest/measures/pid.html) |
| | | | |
| | | | |
| | 还有专门实现PID计算的pietromarchesi库:https://github.com/pietromarchesi/pidpy | | 还有专门实现PID计算的pietromarchesi库:https://github.com/pietromarchesi/pidpy |
| | | | |
| | + | pidpy 支持任何数量的特征变量,其取值为二进制。对于取值为非二进制整数变量的情况,仅支持三元组。一般来说,一个好的经验法则是确保 n_variables < log2(n_samples / (3*n_labels))。 |
| | + | |
| | + | 主类 PIDCalculator 可以用形状为 (n_samples, n_variables) 的特征数组 X 和形状为 (n_samples,) 的标签数组 y 来实例化, |
| | + | |
| | + | python代码如下: |
| | + | |
| | + | from pidpy import PIDCalculator |
| | + | |
| | + | pid = PIDCalculator(X, y) |
| | + | |
| | + | 然后可以计算信息分解的纯协同性、冗余性和特有性项,以及完整的互信息(以比特为单位)。 |
| | + | |
| | + | python代码如下 |
| | + | |
| | + | pid.synergy() |
| | + | |
| | + | pid.redundancy() |
| | + | |
| | + | pid.unique() |
| | + | |
| | + | pid.mutual() |
| | + | |
| | + | 还可以使用随机置换的替代品来减少偏差,其中参数 n 指定了要使用的替代品数量。 |
| | + | |
| | + | python代码如下: |
| | + | |
| | + | pid.synergy(debiased = True, n = 50) |
| | + | |
| | + | pid.redundancy(debiased = True, n = 50) |
| | + | |
| | + | pid.unique(debiased = True, n = 50) |
| | + | |
| | + | pid.mutual(debiased = True, n = 50) |
| | + | |
| | + | 这些方法返回一个元组,其中包含通过减去替代品的平均值来减少偏差的原始值,以及替代品的标准差。 |
| | + | 最后,可以使用 decomposition 方法作为快捷方式,以获取部分信息分解的完整图景。 |
| | + | |
| | + | python代码如下: |
| | + | |
| | + | synergy, redundancy, unique, mutual = pid.decomposition() |
| | + | |
| | + | 要为每个信息论量(计算为替代品中信息论量高于观测值的比例)获取 p 值,可以执行以下python代码: |
| | + | |
| | + | decomposition, p_values = pid.decomposition(debiased = True, n = 50, |
| | + | |
| | + | return_std_surrogates = False, |
| | + | |
| | + | test_significance = True) |
| | | | |
| − | 可以分别展示用这两个库进行某些多变量系统的部分信息分解实验的例子,讲解其中模块的原理。
| + | 在这种情况下,会额外返回一个元组,其中包含每个项的 p 值。 |
| | | | |
| | == PID框架的局限 == | | == PID框架的局限 == |