ML

机器学习——规则学习

Posted by whaler404 on June 24, 2024

基本概念

机器学习中的规则:若......,则......

  • 回归:$\text{if }\hat{h}(x)=\hat{y}\text{ then }y=\hat{y}$
  • 分类:$\text{if }h(x)>0\text{ , then class = 1 ; else , class = -1}$
  • 聚类:$\text{if }\forall j\ne i\text{ , }dist(x,c_i)\le dist(x,c_j)\text{ , then }C(x)=c_i$

逻辑规则:

image1

规则集:由规则组成的集合

  • 充分性与必要性
  • 冲突消解:顺序规则、缺省规则、元规则

命题逻辑 $\to$ 命题规则

  • 原子命题: $A,B,C\dots$
  • 逻辑连词: $\gets,\to,\leftrightarrow,\lor,\land,\dots$
  • 逻辑量词: $\forall,\exist$

一阶逻辑 $\to$ 一阶规则

  • 常量: $a,b,c,\dots,1,2,3,\dots$
  • 变量: $A,B,C,\dots$
  • (n元)谓词/函数: $p/n,f/n,\dots$
  • 项:$\text{const }\vert \text{ var }\vert \text{ func/pred }(\text{term}_1,\text{term}_2,\dots)$
  • 原子公式:$\text{ func/pred }(\text{term}_1,\text{term}_2,\dots)$

序贯覆盖

在训练集上每学到一条规则,就将规则覆盖的样例去除,然后以剩下的样例组成训练集重复上述的过程(分治策略)

单条规则学习

目标:寻找一组最优的逻辑文字来构成规则体

本质:搜索问题,搜索空间大,容易造成祝贺爆炸

方法:

  • 自顶向下:一般到特殊(特化)

image2

image3

  • 自底向上:特殊到一般(泛化)

image4

image5

规则评判:增加/删除哪一个候选文字,根据准确率、信息增益、基尼指数等

规避局部最优:集束搜索,每次保留最优的多个候选规则

剪枝优化

序贯覆盖:贪心算法无法得到最优解,需要使用剪枝优化

  • 预剪枝:似然率统计量
\[LRS=2\dot(\hat{m}+\log_2\frac{\frac{\hat{m}_+}{\hat{m}_++\hat{m}_-}}{\frac{m_+}{m_++m_-}}+\log_2\frac{\frac{\hat{m}_-}{\hat{m}_++\hat{m}_-}}{\frac{m_-}{m_++m_-}})\]
  • 后剪枝:减错剪枝(REP),穷举所有可能的剪枝操作,复杂度比较高,验证集剪枝到准确率无法提高

  • 二者结合:

    • IREP:每生成一条新规则就对其进行 REP 剪枝
    • RIPPER

image6

一阶规则学习

“一阶”的目的:描述一类物体的性质、相互关系

image7

FOIL:序贯覆盖生成规则集,自定向下学习单条规则,然后后剪枝优化规则集

  • 候选文字时需要考虑所有可能的选项
  • 规则生长的评判标准为 FOIL 增益
\[F_GAIN=\hat{m}_+(\log_2\frac{\hat{m}_+}{\hat{m}_++\hat{m}_-}-\log_2\frac{m_+}{m_++m_-})\]

归纳逻辑程序设计

目标:完备地学习一阶规则(Horn子句)

仍然采用 序贯覆盖 方法学习规则集,一般采用自底向上策略学习单条规则

  • 不需要列举所有可能的候选规则
  • 对目标概念的搜索维持在样例附近的局部区域
  • 自顶向下策略的搜索空间对规则长度呈指数级增长

最小一般泛化(LGG)

  • 泛化:将覆盖率低的规则变换为覆盖率高的规则
  • 一般:覆盖率尽可能高
  • 最小:变换时对原规则的改动尽可能小

寻找两条规则 LGG 的步骤:

  1. 找出两条规则中涉及相同谓词的文字
  2. 考察谓词后括号里的项:
    • $LGG(t,t)=t$
    • $LGG(s,t),s\ne t$
      • s,t不是谓词相同的项,则 $LGG(s,t)=V$ ,V 为任意未出现过的变量
      • s,t为谓词相同的项,递归考察其括号内的项
  3. 删除没有相同谓词出现的文字

image8

逆归结

演绎(deduction)和归纳(induction)

举例来说吧,我开始时曾说你哥哥的行为很不谨慎。请看这只表,不仅下面边缘上有凹痕两处,整个表的上面还有无数的伤痕,这是因为惯于把表放在有钱币、钥匙一类硬东西的衣袋里的缘故。对一只价值五十多镑的表这样不经心,说他生活不检点,总不算是过分吧!

image9

演绎:归结原理,验证逻辑表达式的可满足性

  • 输入 $C_1=A\lor L,C_2=B\lor \lnot L$
  • 输出 $C=A\lor B$
  • 归结项 $C=(C_1-{L})\lor(C_2-{\lnot L})$

归纳:逆归结

  • 输入 $C_1=A\lor L,C=A\lor B$
  • 输出 $C_2=(C-(C_1-{L}))\lor{\lnot L}$
  • 归结商 $C_2=C/C_1$

一阶逆归结

  • 置换:用项替换
\[\theta=\{1/X,2/Y\}\\ C=\text{色泽更深}(X,Y)\land\text{敲声更沉}(X,Y)\\ \Downarrow\\ C^{'}=C\theta=\text{色泽更深}(1,2)\land\text{敲声更沉}(1,2)\]
  • 合一:通过置换让两个表达式相等
\[A=\text{色泽更深 }(1,Y),\text{ 色泽更深}(X,2)\\ \theta=\{1/X,2/Y\}\Rightarrow\\ A\theta=B\theta=\text{色泽更深}(1,2)\]