《解释性机器学习》笔记(四):决策规则可解释性

《Interpretable machine learning》 Christophm

决策规则

决策规则是一个简单的IF-THEN语句,由一个条件和一个预测组成。例如:如果今天下雨并且是四月(条件),那么明天就会下雨(预测)。可以使用单个决策规则或多个规则的组合进行预测。决策规则遵循一个一般的结构:如果条件满足,则进行某种预测。决策规则可能是最具解释性的预测模型。它们的IF-THEN结构在语义上类似于自然语言和我们思考的方式,前提是条件是由可理解的特征构建的,条件的长度很短(少量的特征=值对与and组合),并且没有太多的规则。在编程中,编写IF-THEN规则是非常自然的。机器学习的新特点是通过算法来学习决策规则。想象一下,使用一种算法来学习预测房屋价值(低、中、高)的决策规则。这个模型得出的一个决策规则可能是:如果一座房子大于100平方米,并且有一个花园,那么它的价值就很高。更正式的说法是:IF size>100 AND garden=1,那么value=high。

决策规则在条件中至少使用一个feature=value语句,并且没有‘AND’数量上限。一个例外是默认规则,它没有明确的if部分,并且当没有其他规则适用时,该规则就会适用。

决策规则的有用性通常可以用两个数字来概括:支持度(Support)和准确性(Accuracy)。

Support or coverage of a rule: 100个样本里有10个满足IF的条件(比如100个房子里有是个满足 size>100),则该规则的支持度是10%。

Accuracy or confidence of a rule: :符合条件的样本里,预测为真实的比例。(假设有100个房子,其中规则size=big, location=good THEN value=high适用,85 have value=high, 14 have value=medium, 1 have value=low,那么规则的准确率为85%)

通常在准确性和支持之间会有一个权衡:通过向条件添加更多的feature,我们可以获得更高的准确性,但失去支持度。

要创建一个好的分类器来预测房子的价值,可能不仅需要学习一条规则,还需要学习10条或20条规则。然后事情会变得更复杂,可能会遇到以下问题之一:

规则可能会重叠:如果我想预测一栋房子的价值,而应用了两条或更多规则,结果却给出了相互矛盾的预测,那该怎么办?
没有规则适用:如果我想要预测房子的价值,而这些规则都不适用怎么办?

结合多个规则有两种主要策略:决策列表(有序)和决策集(无序)。这两种策略对重叠规则的问题有不同的解决方法。

决策列表向决策规则引入了一个顺序。对于实例,如果第一个规则的条件为true,则使用第一个规则的预测。如果不是,我们进入下一个规则并检查它是否适用,等等。决策列表只返回应用的列表中第一个规则的预测,从而解决了规则重叠的问题。

决策集类似于规则的民主,只是有些规则可能具有更高的投票权。在一个集合中,规则要么是相互排斥的,要么是有一个解决冲突的策略,例如多数投票,它可能由单个规则的准确性或其他质量度量来加权。当应用多个规则时,可解释性可能会受到影响。

扫描二维码关注公众号,回复: 14922449 查看本文章

决策列表和集合都可能遇到没有规则应用于实例的问题。这可以通过引入默认规则来解决。默认规则是在没有其他规则适用时应用的规则。默认规则的预测通常是最频繁的数据点,其他规则不包括这些数据点。如果一组或一列规则覆盖了整个特征空间,我们称之为穷举。通过添加默认规则,set或list会自动变得完整。

从数据中学习规则的方法有很多,书中例举了三种,代表了不同的算法思路。

  1. OneR从单个特征中学习规则。OneR的特点是简单、易解释和用作基准。
  2. 顺序覆盖(Sequential covering)是一个迭代地学习规则并删除新规则所覆盖的数据点的过程。许多规则学习算法都使用这个过程。
  3. 贝叶斯规则列表使用贝叶斯统计将预先挖掘的频繁模式组合成一个决策列表。使用预先挖掘的模式是许多规则学习算法使用的一种常见方法。

1.从单个特征学习规则(OneR)

很简单,使用一种使误差最小的特征作为分类依据。

算法简单快速:

  1. 通过选择合适的区间离散连续特征。
  2. 对于每个特征:
    在特征值和(分类)结果之间创建一个交叉表。
    对于特征的每个值,创建一个规则,该规则预测具有此特定特征值的实例的最常见 类(可以从交叉表中读取)。
  3. 计算特征规则的总误差。选择总误差最小的特征。

OneR总是覆盖数据集的所有实例,因为它使用所选特征的所有类别。缺失的值可以作为一个附加的特征值处理,也可以预先加入。

应用实例:一个简单的模型来预测房子的价值。

在这里插入图片描述

OneR在每个特征和结果之间创建交叉表:在这里插入图片描述
图看完基本清楚了,把每类特征的值作为IF,规则预测结果为该条件下最常见的结果,比如location=bad时,value = low的结果最常见,于是定义规则 IF location = bad THEN value = low。

不过仅使用一种特征的时候显然会出现特征覆盖问题,拿IF location = bad THEN value = low规则来说,出现了两个 value = medium的例外,因此使用位置特征误差是 4/10,同理规模特征误差是3/10,能否养宠物误差是4/10。对比发现规模特征的误差最小,于是将应用于最终的OneR模型:

IF size=small THEN value=small
IF size=medium THEN value=medium
IF size=big THEN value=high

OneR更喜欢具有许多级别的特征,因为这些特征更容易覆盖目标。具有更多级别的特征更容易覆盖。如果每个实例都有一个单独的级别,那么这个特征将完美地预测整个训练数据集。一种解决方案是将数据分为训练集和验证集,学习训练数据的规则,并评估在选择验证集上的特性时的总错误。

2.Sequential Covering

很好理解,迭代式的,找到一个新规则就删除该规则下的数据点,继续从剩下的数据点中找新规则,最后多余的点放到默认规则里,默认规则为最常见的类。返回一张决策表。
下面的图例很生动:
在这里插入图片描述
例如:我们有一个从大小,位置和是否允许养宠物来预测房子的价值的任务。我们学习了第一个规则,结果是:如果size=big, location=good,那么value=high。然后我们从数据集中移除所有位置合适的大房子。对于剩余的数据,我们学习下一个规则。可能:如果location = good,那么value=medium。请注意,这条规则是在没有大房子位于好位置的数据上学习的(default value),只在好位置留下中小房子。

对于多类别任务需要修改算法。首先将类别按照常见程度排序。顺序覆盖算法从最少见的类开始,学习它的规则,删除所有被覆盖的实例,然后转向第二少见的类。当前的类被定义成1,其他更常见的类为0。最后一个类是默认规则。这也被称为分类中的“一对一”策略。

查找规则的具体算法:
决策树搜索
在这里插入图片描述

RIPPER(Repeated Incremental Pruning to Produce Error Reduction):由Cohen(1995)19提出的RIPPER(重复增量剪枝以减少错误)是顺序覆盖算法的一个变体。RIPPER更复杂一些,它使用一个后期处理阶段(规则剪枝)来优化决策列表(或集合)。RIPPER可以以有序或无序模式运行,并生成决策列表或决策集。

3.贝叶斯规则列表

步骤:

  1. 从可以用作决策规则条件的数据中预先挖掘频繁模式。
  2. 从预先挖掘的规则的选择中学习决策列表.

预先挖掘频繁模式
频繁模式是特征值的出现频度。作为BRL算法的预处理步骤,我们使用特征 (在此步骤中不需要目标结果)并从中提取经常出现的模式。模式可以是单个特征值(如size=medium),也可以是多个特征值(如size=medium和location=bad)的组合。模式的频率是通过其在数据集中的支持来测量的:
在这里插入图片描述

其中A是特征值,n是数据集中的数据点个数,I是如果特征为A则返回1的指示函数。

有许多算法可以找到频繁模式,例如Apriori或FP-Growth。使用哪一个并不重要,重要的是发现模式的速度不同,但结果模式总是相同的。将大致介绍Apriori算法如何查找频繁模式。Apriori算法由两部分组成,第一部分寻找频繁模式,第二部分根据频繁模式建立关联规则。对于BRL(贝叶斯规则)算法,我们只对Apriori算法的第一部分中生成的频繁模式感兴趣。

第一步,Apriori算法从所有支持度大于用户定义的最小支持度的特征值开始,如果用户定义最小支持度应是10%,然而只有5%的房屋具有size=big,那么我们将删除该特性值,只保留size=medium和size=small作为模式。这并不意味着房子被从数据中移除,这只是意味着size=big没有作为频繁模式返回。Apriori算法基于单一特征值的频繁模式,迭代地寻找阶数越来越高的特征值的组合。模式是通过将feature=value语句与逻辑和相结合来构建的,例如size=medium和location=bad。生成的支持度低于最低支持度的模式将被删除。最后我们得到了所有的频繁模式。频繁模式的任何子集都是频繁的,这称为Apriori属性。直观地说,它是有意义的:通过从模式中删除一个条件,简化模式只能覆盖更多或相同数量的数据点,而不能覆盖更少的数据点。例如,如果20%的房子大小=中等AND位置=好,那么支持会变成只有20%的房子大小=中等或更大,合并掉location模式。Apriori属性用于减少要检查的模式的数量。只有在频繁模式的情况下,我们才需要检查更高阶的模式。

学习贝叶斯规则列表

列表的后验概率分布使得判断一个决策列表的可能性成为可能,前提是假设列表很短,列表与数据的吻合程度如何。我们的目标是找到最大化后验概率的列表。由于不可能直接从列表的分布中找到精确的最佳列表,BRL建议使用以下方法:
1)生成一个初始决策表,从先验分布中随机抽取。
2)通过添加、切换或删除规则对列表进行迭代修改,确保生成的列表遵循列表的后验分布。
3)根据后验分布从概率最大的抽样列表中选择决策列表。

目标是从后验分布中抽取决策表d样本:
在这里插入图片描述

其中d为决策表,x为特征,y为目标,a为预挖掘条件集合,λ决策表的先验期望长度,η规则中先前的期望条件数,α正类和负类的先验统计数,最好固定在(1,1)间。

posteriori:根据观察到的数据和先验假设,量化决策列表的可能性。这与给定决策列表的数据输出y,和数据乘以给定预先假设和预先挖掘条件列表的概率成正比。

likehood:是在给定决策列表和数据的情况下观察到的y的可能性。BRL假设y是由狄利克雷-多项分布产生的。决策表对数据的解释越好,这种可能性就越高。

priori:这是决策表的先验分布。它用乘法结合列表中规则的数量的截断泊松分布(参数λ)和条件规则中的特征值数量的截断泊松分布(η)

如果一个决策表很好地解释了结果y,并且基于之前的假设,那么它有很高的后验概率。

贝叶斯统计中的估值总是有点棘手,因为我们通常不能直接计算正确的答案,但我们必须使用马尔可夫链蒙特卡罗方法绘制候选项、评估它们并更新我们的后验估计。

对于决策表,这就更复杂了,因为我们要从决策表的分布中提取。BRL作者建议首先绘制一个初始决策列表,然后迭代地修改它,以从决策列表的后验分布(决策列表的马尔科夫链)生成决策列表的样本。结果可能依赖于初始决策列表,因此建议重复此过程以确保列表的多样性。软件实现中的默认值是10倍。
下面的方法告诉我们如何绘制初始决策列表:

在这里插入图片描述

其实就是个迭代,增删更新决策列表的方法。

下一步是从这个初始样本开始生成许多新的列表,以从决策列表的后验分布中获得许多样本。通过从初始列表开始,随机地将规则移动到列表中的不同位置,或者从预先挖掘的条件向当前的决策列表添加规则,或者从决策列表中删除规则,来对新的决策列表进行采样。在每个步骤,算法评估决策列表的后验概率(准确性和长度的混合)。 Metropolis Hastings算法确保我们抽样的决策表具有很高的后验概率。这个过程为我们提供了许多来自分布的决策表的样本。BRL算法选择后验概率最高的样本决策表。

4.实例

我们使用SBRL算法来预测宫颈癌的风险。离散化所有输入特征,以便SBRL算法能够工作。
在这里插入图片描述

我们得到了一些合理的规则,因为预测出的并不是类的结果,而是癌症的预测概率。
这些条件是从FP-Growth算法预先挖掘的模式中选择出来的。下表显示的条件里SBRL算法可以选择建立一个决策列表。作为用户,我所允许的条件里的最大特征数量为2。这里有十个模式的样本:

在这里插入图片描述

预测自行车租赁:
在这里插入图片描述预测的是在2012年气温17摄氏度的情况下,一天的自行车数量超过4000辆的可能性。

5.优缺点

优点:

  1. 很容易解释。
  2. 决策规则可以像决策树一样具有表达性,同时更加紧凑。
  3. IF-THEN规则的预测快速。
  4. 决策规则对输入特征的单调变换具有较强的鲁棒性,因为只有条件的阈值发生变化。
  5. IF-THEN规则通常生成稀疏模型,这意味着没有包含很多特征。他们只选择模型的相关特征。
  6. 像来自OneR的简单规则可以用作更复杂算法的基线。

缺点:

  1. 对于IF-THEN规则的研究和文献主要集中在分类上,几乎忽略了回归。
  2. 通常特征也必须是分类别的。
  3. 决策规则不适合描述特征和输出之间的线性关系。

猜你喜欢

转载自blog.csdn.net/qq_34813925/article/details/106383529