purify#

interpret.utils.purify(scores, weights, tolerance=0.0, is_randomized=True)#
将多维张量纯化为其纯净分量和一系列非纯净分量。对于对(pairs),结果将是一个对,其中沿着任何行或列的加权和为零,以及由对产生的两个主效应,它们是来自对的杂质。主效应将进一步纯化为零中心图和一个截距。此函数还处理多分类,当 scores 张量比 weights 多一个维度时会检测到多分类。对于多分类,类别分数会被调整为总和为 0,这可以在不产生任何杂质的情况下完成。

结果将是一个对,其中任意行或列的加权和为零,以及来自该对的两个主效应(即杂质)。这些主效应将被进一步净化为零中心图和一个截距。此函数还支持多类别,当分数张量比权重多一个附加维度时即可检测到。对于多类别,类别分数将被调整以使其总和为零,这可以在不产生任何杂质的情况下完成。

纯化算法基于论文:“利用函数 ANOVA 纯化交互效应:一种恢复可识别加性模型的有效算法” https://arxiv.org/abs/1911.04974

参数:
  • scores – 待纯化的分数张量。

  • weights – scores 张量中每个元素的权重。

  • tolerance – 如果需要,可以指定一个容差,以牺牲纯度为代价使算法更快退出。算法将在达到容差或纯度不再提高时退出。

  • is_randomized – 如果 is_randomized 为 False,则纯化按可预测的顺序进行。使用随机排序可以消除总是先处理一个维度可能引入的偏差。

返回:

  1. 纯化后的张量。

  2. 生成的杂质元组列表。元组中的第一项是一个索引元组,指示杂质适用于哪些维度。第二项是这些维度的杂质张量。

  3. 从纯化中产生的截距。

返回类型:

包含 3 个值的元组