(《机器学习》完整版系列)第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所示。
即
{ { 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−}=C1⋃C3⋃C4(1)
将符号数字化,为保持对称性,用 { + 1 , − 1 } \{+1,-1\} {+1,−1}作为标记空间,则图3.2变为图3.3。
可以用上述方法从各种角度进行上述归并,如再添加另一种归并情况,得图3.4。
如此若干次(例如5次),则得到(转置一下)图3.5,即为【西瓜书图3.5(a)中间的矩形】。
图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)中右至左的第二列】。
(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*} ∑(xi−yi)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 ⌊2d−1⌋位( ⌊ 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 ⌊2d−1⌋,即:预测时,取距离样本的编码最近的类编码作为样本的正确编码(样本的类别)。
(2)设有 k k k类,则可构造出类间等距离的长度为 2 k − 1 − 1 2^{k-1}-1 2k−1−1的类编码。 方法:以 k k k位所有二进制码作为表(【西瓜书图3.5(a))的列,则有 2 k 2^k 2k列,去掉互补的,则删除了一半的列,余下 2 k − 1 2^{k-1} 2k−1列,再去掉全是1(或全0)的一列,余下 2 k − 1 − 1 2^{k-1}-1 2k−1−1列,这表的行即可作为类的编码,长度为 2 k − 1 − 1 2^{k-1}-1 2k−1−1,根据对称性,任两个编码的距离相等且不超过 ⌊ 2 k − 1 − 1 2 ⌋ = 2 k − 2 \lfloor \frac{2^{k-1}-1}{2}\rfloor=2^{k-2} ⌊22k−1−1⌋=2k−2。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)