机器学习之概念学习

概念学习是指从有关某个布尔函数的输入输出训练样例中推断出该布尔函数。

 

FIND-S算法

1、将h初始化为H中最特殊假设

2、对每个正例x

    • 对h的每个属性约束ai:如果x满足ai,那么不做任何处理;否则将h中ai替换为x满足的另一个更一般约束。

3、输出假设h

表1 训练样例

Example     sky      Air-Temp     Humidity     Wind      Water     Forecast     Enjoy-Sport

      1           Sunny    Warm         Normal        Strong   Warm     Same              Yes

      2           Sunny    Warm         High             Strong   Warm     Same              Yes

      3           Rainy     Cold           High             Strong   Warm     Change            No

      4           Sunny    Warm         High             Strong   Cool       Change           Yes

第一步:将h初始化为H中最特殊的假设:h0={0, 0, 0, 0, 0, 0}

第二步:表1中的第一个训练样例是一个正例,因为这时的h太特殊,"0"表示不接受任何值,所以h中的每一个约束都不被满足,由FIND-S算法我们知道,此时,每个属性值都被拟合成该例的下一个更一般的约束,也就是说,此时的h就应该是这一样例本身的属性值:h1={<Sunny, Warm, Normal, Strong, Warm, Same>}。

这时的h还是太特殊,因为它把除了第一个样例划为正例外,把其它所有的样例都划为反例。

第三步:第二个样例仍是一个正例,由FIND-S算法我们应该进一步将h一般化。我们用"?"来代替h中不能被满足的属性值。这时,h将变为:

                 h2={<Sunny, Warm, ?, Strong, Warm, Same>}

第四步:第三个样例是一个反例,由FIND-S算法我们知道,h不变。

为什么在FIND-S算法中遇到反例,我们就不需要对h做任何修改?一般情况下,只要我们假定假设空间H确实包含真正的目标概念c,而且训练样例不包含错误,那么我们就不需要对h做任何修改。对当前假设h来说,它是H中与所观察到的正例相一致的最特殊的假设。由于假定的目标概念c在H中,而且它一定是与所有正例相一致的,那么c一定比h更一般,而目标概念c不会覆盖一个反例,所以h也不会覆盖一个反例(由more_general_than的定义可知)。所以对于反例,我们不做任何修改。

h3={<Sunny, Warm, ?, Strong, Warm, Same>}

第五步:第四个样例仍是一个正例,由FIND-S算法我们应该进一步将h一般化。我们用"?"来代替h中不能被满足的属性值。这时,h将变为:

               h4={<Sunny, Warm, ?, Strong, ?, ?>}

FIND-S算法让我们看到了一种用more_general_than偏序方法来搜索假设空间的方法。它从最特殊的假设开始,沿着偏序链逐渐移到一般的假设。

 

候选删除算法

将G集合初始化为H中极大一般假设

将S集合初始化为H中极大特殊假设

对每个训练样例d,进行以下操作:

    • 如果d是一个正例
      • 从G中移除所有与d不一致的假设
      • 对S中每个与d不一致的假设s
        • 从S中移去s
        • 把s的所有极小一般化式h加入到S中,其中h满足
          • H与d一致,而且G的某个成员比h更一般
        • 从S中移去所有这样的假设:它比S中另一假设更一般
    • 如果d是一个反例
      • 从S中移去所有与d不一致的假设
      • 对G中每个与d不一致的假设g
        • 从G中移去g
        • 把g的所有的极小特殊化式h加入到G中,其中h满足
          • H与d一致,而且S的某个成员比h更特殊
        • 从G中移去所有这样的假设:它比G中另一假设更特殊

下面,我们用表1中的训练样例来看一下候选消除法的运行步骤:

第一步:初始化边界:S0是H中最特殊的假设,G0是H中最一般的假设

S0={<0, 0, 0, 0, 0, 0>}

G0={<?, ?, ?, ?, ?, ?>}

第二步:第一个样例是一个正例,候选消除法检查S边界,可以知道这个边界过于特殊了,它不能覆盖正例,我们来修改边界S。参照第一个训练样例,我们可以知道S0要被换成S1,而边界G不用修改,因为G0可以覆盖这个样例。所以有

               S1={<Sunny, Warm, Normal, Strong, Warm, Same>}

               G1={<?, ?, ?, ?, ?, ?>}

第三步:第二个样例也是一个正例,做法同第一个样例,所以有

               S2={<Sunny, Warm, ?, Strong, Warm, Same>}

               G2={<?, ?, ?, ?, ?, ?>}

第四步:第三个样例是一个反例,由候选消除法知道,G边界过于一般了,G会将这个反例判断为正例,所以我们要修改G边界,使其特殊化。我们可以看到有6个属性可以使G2特殊化,比如h={<?, ?, Normal, ?, ?, ?>}是G2的一个极小特殊化式,它可以把第三个样例划为反例,但是它和前面遇到的正例不一致,由S2={<Sunny, Warm, ?, Strong, Warm, Same>}我们知道这个h并不比特殊边界S2更一般,所以这个h我们就不必放在G3的范围中了。实际上,变形空间的S边界形成了以往正例的摘要说明,它可以用来判断任意给定的假设是否与以往的样例一致。任何比S更一般的假设能够覆盖所有以往的正例。G边界说明了以往所有反例的信息。也就是说,任何比G更特殊的假设能保证与所有反例相一致。所以有

               S3={<Sunny, Warm, ?, Strong, Warm, Same>}

               G3={<Sunny, ?, ?, ?, ?, ?> <?, Warm, ?, ?, ?, ?> <?, ?, ?, ?, ?, Same>}

第五步:第四个样例是一个正例。候选消除法检查S边界,可以知道这个边界也特殊,它不能覆盖正例。我们来修改边界S,参照第四个训练样例,我们可以知道S3要被换成S4,而边界G也要修改成G4,G3中的一个成员<?, ?, ?, ?, ?, Same>将被删除,因为它不能覆盖新的正例。前面我们知道S边界用来使边界一般化,也就是说是针对于正例来说的,而G是用来使边界特殊化的,也就是针对于反例来说的,那为什么这里要由于正例的出现而修改G边界呢?因为我们知道,对于这个假设<?, ?, ?, ?, ?, Same>来说,它不能再被特殊化,因为它不能覆盖新的正例。它也不能被一般化,因为按照G的定义,任何更一般的假设至少会覆盖一个反例。所以我们要把这一假设从G中移去,也就相当于移去了变型空间偏序结构中的一个分支。所以有

               S4={<Sunny, Warm, ?, Strong, Warm, Same>}

               G4={<Sunny, ?, ?, ?, ?, ?> <?, Warm, ?, ?, ?, ?>}

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值