(《机器学习》完整版系列)第3章 线性模型——3.4 纠错输出码(奇想:用编码来分类)

用多位的“码”作为样本和类的标记,则可借助编码理论。编码用于训练、解码用于预测。

纠错输出码

用多位的“码”作为样本和类的标记,能看到一片新天地。 纠错输出码是借助二分类器处理多分类问题,这里从理解的角度对【西瓜书第3.5节】作些补充。

编码

编码用于训练。

对于多分类(如,有4个类: C 1 , C 2 , C 3 , C 4 C_1,C_2,C_3,C_4 C1,C2,C3,C4),我们将“类别”归并成“大类”,则总可以变为两“大类”(即有某种未知的特征将各“类”归入“正类”和“反类”中),可以利用已充分讨论的二分类法实现该分类,
如图3.2所示。
图3.2 类归并成两大类(a)


{ { x + } = C 2 { x − } = C 1 ⋃ C 3 ⋃ C 4 \begin{align} \begin{cases} \{\boldsymbol{x}^+\}=C_2 \\ \{\boldsymbol{x}^-\}=C_1\bigcup C_3\bigcup C_4 \\ \end{cases} \tag{1} \end{align} {{x+}=C2{x}=C1C3C4(1)

将符号数字化,为保持对称性,用 { + 1 , − 1 } \{+1,-1\} {+1,1}作为标记空间,则图3.2变为图3.3。
图3.3 类归并成两大类(b)

可以用上述方法从各种角度进行上述归并,如再添加另一种归并情况,得图3.4。
图3.4 类归并成两大类(c)

如此若干次(例如5次),则得到(转置一下)图3.5,即为【西瓜书图3.5(a)中间的矩形】。
图3.5 类归并成两大类(d)

图3.5横着看,如: C 1 = ( − 1 , + 1 , − 1 , + 1 , + 1 ) C_1=(-1,+1,-1,+1,+1) C1=(1,+1,1,+1,+1)即为 C 1 C_1 C1的二元编码,码长为5。 这样就完成了对 C 1 , C 2 , C 3 , C 4 C_1,C_2,C_3,C_4 C1,C2,C3,C4各类别的编码。 另外,若将 + 1 +1 +1换为 a a a − 1 -1 1换为 b b b,则 C 1 = b a b a a C_1=babaa C1=babaa,等等。

图3.5纵向看,每列是一个二分类,例如,第一列即表示式(1),依此可将原训练集变为二分类训练集,则可训练了一个二分类模型实例 f 1 f_1 f1,对其余列也同样处理。 则可训练出一组模型实例( f 1 , f 2 , f 3 , f 4 , f 5 f_1,f_2,f_3,f_4,f_5 f1,f2,f3,f4,f5)。

综上,编码步骤:

  • 指定各类别 的编码(得横向)。
  • 训练出一组二分类器(依纵向)。

解码

解码用于预测。

x \boldsymbol{x} x是要预测的样本,将上述训练好了的二分类器组作用于它,如: f 1 ( x ) = − 1 , f 2 ( x ) = − 1 , f 3 ( x ) = + 1 , f 4 ( x ) = − 1 , f 5 ( x ) = + 1 , f_1(\boldsymbol{x})=-1,f_2(\boldsymbol{x})=-1,f_3(\boldsymbol{x})=+1,f_4(\boldsymbol{x})=-1,f_5(\boldsymbol{x})=+1, f1(x)=1,f2(x)=1,f3(x)=+1,f4(x)=1,f5(x)=+1,即得到【西瓜书图3.5(a)中最后一行】 ( − 1 , − 1 , + 1 , − 1 , + 1 ) (-1,-1,+1,-1,+1) (1,1,+1,1,+1),这就是样本 x \boldsymbol{x} x的编码。

将该编码与上述各类别的编码进行比较,选取最“接近”的类别作为样本 x \boldsymbol{x} x的类别。 比较中用到“距离”,常用的有:

(1)海明距离

比较样本与类的编码,两编码不一致的位的个数即为两编码的距离,如图3.6所示, x \boldsymbol{x} x C 1 C_1 C1的海明距离为 3 3 3。 同样,计算样本 x \boldsymbol{x} x与其他类的海明距离,得到【西瓜书图3.5(a)中右至左的第二列】。
图3.6  样本与类的编码比较

(2)欧氏距离

将样本与类的编码相减(如图3.7),再应用欧氏距离计算公式。

∑ ( x i − y i ) 2 = 0 2 + 2 2 + ( − 2 ) 2 + 2 2 + 0 2 = 12 = 2 3 \begin{align*} \sqrt{\sum (x_i-y_i)^2} =\sqrt{0^2+2^2+(-2)^2+2^2+0^2} =\sqrt{12}=2\sqrt{3} \end{align*} (xiyi)2 =02+22+(2)2+22+02 =12 =23
x \boldsymbol{x} x C 1 C_1 C1的欧氏距离为 2 3 2\sqrt{3} 23

同样,计算样本 x \boldsymbol{x} x与其他类的欧氏距离,得到【西瓜书图3.5(a)中右至左的第一列】。

综上,解码步骤:

  • 利用训练好的二分类器组计算测试样本的编码。
  • 比较该样本编码与类别编码的距离。
  • 解码出该样本的类别(样本属于距离最近的类别)。

上述为二元ECOC码,若在编码过程中使用“停用类”(记为 0 0 0类),则得到三元ECOC码,即【西瓜书图3.5(b)】。

另外,理论上有如下重要结论:

(1)设类的编码间的最小距离为 d d d,则可以容许样本的编码 ⌊ d − 1 2 ⌋ \lfloor \frac{d-1}{2}\rfloor 2d1位( ⌊ x ⌋ \lfloor x\rfloor x表示不超过 x x x的最大整数)出错。 这是因为,样本的编码在类的编码“之间”,故样本的编码与最近的类编码距离小于 d 2 \frac{d}{2} 2d d d d为奇数时)或小于等于 d 2 \frac{d}{2} 2d d d d为偶数时),即不论奇偶都有小于等于 ⌊ d − 1 2 ⌋ \lfloor \frac{d-1}{2}\rfloor 2d1,即:预测时,取距离样本的编码最近的类编码作为样本的正确编码(样本的类别)。

(2)设有 k k k类,则可构造出类间等距离的长度为 2 k − 1 − 1 2^{k-1}-1 2k11的类编码。 方法:以 k k k位所有二进制码作为表(【西瓜书图3.5(a))的列,则有 2 k 2^k 2k列,去掉互补的,则删除了一半的列,余下 2 k − 1 2^{k-1} 2k1列,再去掉全是1(或全0)的一列,余下 2 k − 1 − 1 2^{k-1}-1 2k11列,这表的行即可作为类的编码,长度为 2 k − 1 − 1 2^{k-1}-1 2k11,根据对称性,任两个编码的距离相等且不超过 ⌊ 2 k − 1 − 1 2 ⌋ = 2 k − 2 \lfloor \frac{2^{k-1}-1}{2}\rfloor=2^{k-2} 22k11=2k2

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:3.3 线性判别分析LDA(将平面上点投影到线上)
下一篇:4.1 决策树算法(不是规划论中的决策树)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值