之前在线性回归问题当中,直接将线性模型映射到一个连续的实数集
y
y
y上来表示预测值。但是对于分类问题来说,预测值为离散值,以二分类问题为例,预测值属于集合
{
0
,
1
}
\{0,1\}
{0,1},因此用线性回归模型无法解决分类问题。通常,为了实现这些简单的分类问题,可以通过对线性模型外层嵌套一个离散函数来解决。仍以二分类问题为例,在外层嵌套一个如下的分段函数
g
(
f
(
x
;
w
)
)
=
{
1
,
i
f
f
(
x
;
w
)
>
0
0
,
i
f
f
(
x
;
w
)
<
0
g(f(x;w))= \left\{\begin{aligned} 1,\ \ if\ \ f(x;w)>0\\ 0,\ \ if\ \ f(x;w)<0 \end{aligned}\right.
g(f(x;w))={1, if f(x;w)>00, if f(x;w)<0
通过上述形式的嵌套后,当线性函数值大于0时属于分类1,小于0时属于分类0(或者说正例、负例)。其中,线性函数
f
(
x
;
w
)
f(x;w)
f(x;w)叫做判别函数(Discriminant Function),离散函数
g
(
x
)
g(x)
g(x)为决策函数
虽然这种函数从函数形式上看是离散的、非线性的,但它实际上表示在空间中找到一个线性决策边界,将空间一分为二,决策边界每一边分别属于一个类别。可以简单的认为线性分类模型=线性判别函数+线性决策边界。
如上图,把判别函数 f ( x ; w ) = 0 f(x;w)=0 f(x;w)=0作为分界线/面(决策边界),分界面以上表示 f ( x ; w ) > 0 f(x;w)>0 f(x;w)>0的区域,以下表示 f ( x ; w ) < 0 f(x;w)<0 f(x;w)<0的区域。
根据分类问题的分类数量不同,可以将分类问题分为二分类问题和多分类问题。
二分类问题
二分类问题是分类问题中一种简单的问题,二分类问题也属于监督学习,训练集仍为
{
(
x
(
n
)
,
y
(
n
)
)
n
=
1
N
}
\{(x^{(n)},y^{(n)})_{n=1}^N\}
{(x(n),y(n))n=1N},其中
x
(
n
)
∈
R
D
,
y
(
n
)
∈
{
0
,
1
}
x^{(n)}\in\mathbb{R}^D,y^{(n)}\in\{0,1\}
x(n)∈RD,y(n)∈{0,1} 。二分类问题的模型为:
g
(
f
(
x
;
w
)
)
=
{
1
,
i
f
f
(
x
;
w
)
>
0
0
,
i
f
f
(
x
;
w
)
<
0
g(f(x;w))= \left\{\begin{aligned} 1,\ \ if\ \ f(x;w)>0\\ 0,\ \ if\ \ f(x;w)<0 \end{aligned}\right.
g(f(x;w))={1, if f(x;w)>00, if f(x;w)<0
对于损失函数的选择,最简单的可以用0-1损失函数:
L
01
(
y
,
g
(
f
(
x
;
w
)
)
)
=
I
(
y
≠
g
(
f
(
x
;
w
)
)
)
\mathcal{L}_{01}(y,g(f(x;w)))=I(y\neq g(f(x;w)))
L01(y,g(f(x;w)))=I(y=g(f(x;w)))
也就是当判定结果与
y
y
y进行比较,如果相同则认为分类正确,不相同则认为分类错误。但是,0-1损失函数不连续,不能求导,也就无法进一步转换成优化问题来解决,之后会通过使用别的损失函数来解决这个问题,这里先暂时只给出0-1损失函数。
多分类问题
同样的,多分类问题训练集为训练集为
{
(
x
(
n
)
,
y
(
n
)
)
n
=
1
N
}
\{(x^{(n)},y^{(n)})_{n=1}^N\}
{(x(n),y(n))n=1N},但其中
x
(
n
)
∈
R
D
,
y
(
n
)
∈
{
1
,
⋯
,
C
}
(
C
>
2
)
x^{(n)}\in\mathbb{R}^D,y^{(n)}\in\{1,\cdots,C\}(C>2)
x(n)∈RD,y(n)∈{1,⋯,C}(C>2) 。由于拥有2个以上的分类,而通过一条线最多只能将数据集划分为两个区域,因此只有一个分界函数就无法解决问题。
对于解决多分类问题,一般有以下三种模型可供选择:
- “一对其余”方式:将多类分类器转换成多个两类分类器进行处理,有多少个分类就要建立多少个分类器。例如上图中将数据分类 ω 1 , ω 2 , ω 3 \omega_1,\omega_2,\omega_3 ω1,ω2,ω3, f 1 f_1 f1函数分别用来判断数据是否属于 ω 1 \omega_1 ω1类, f 2 f_2 f2判断是否属于 ω 2 \omega_2 ω2, f 3 f_3 f3判断是否属于 ω 3 \omega_3 ω3,在训练 f 1 f_1 f1时,将 ω 1 \omega_1 ω1看作正例, ω 2 + ω 3 \omega_2+\omega_3 ω2+ω3看作负例,其余函数以此类推。这种方式会产生上图问号区域表示的这些模糊区域,落在区域中的数据无法判断其分类。
- “一对一”方式:在每两个类之间建立一个分界面,C个类共需要 C ( C − 1 ) 2 \frac{C(C-1)}{2} 2C(C−1)个分类器,当C较大时,该方法较为复杂。上图中, f 12 f_{12} f12用来区分分类属于 ω 1 \omega_1 ω1还是 ω 2 \omega_2 ω2, f 13 f_{13} f13用来区分分类属于 ω 1 \omega_1 ω1还是 ω 3 \omega_3 ω3, f 23 f_{23} f23用来区分分类属于 ω 2 \omega_2 ω2还是 ω 3 \omega_3 ω3。这种方法最终只会产生如上图所示的一个模糊区域。
- “argmax”方式:该方式为目前多分类中使用最多的方式,是对“一对其余”方式的一种改进。与“一对其余”这种属于或不属于某类的投票方式不同,“argmax”方式为打分制,数据更倾向于哪个类哪个类的得分就要高,最终得分高的类就是该数据的所属的类,这种方式不会产生模糊区域,同时与“一对其余”方式相同,共需要C个分类器。具体来说,若数据在某分类器下得分为正数则表示在分界线正例一侧(也就是属于该分类,对应图上三条线的外侧区域),若得分为负数则表示在负例一侧(对应上图三条线围成的区域),同属于某侧时,数据点距离分界线越近,评分越高。
“argmax”方式定义为:
f c ( x ; w c ) = w c T + b c , c ∈ { 1 , ⋯ , C } y = arg max c = 1 C f c ( x ; w ) \begin{aligned} &f_c(x;w_c)=w_c^T+b_c,\ \ c\in\{1,\cdots,C\}\\ \\ &y=\mathop{\arg\max}^C_{c=1}f_c(x;w) \end{aligned} fc(x;wc)=wcT+bc, c∈{1,⋯,C}y=argmaxc=1Cfc(x;w)
同样的,多分类问题也可以用0-1损失函数来评估。