前言
在前面系统学习了逻辑回归这种机器学习算法,它是使用回归的方式来解决分类问题。之前提到过,逻辑回归只可以解决二分类的问题,不过我们可以稍加改造,使得逻辑回归算法同样可以解决多分类问题。
其实这种改造方式不是只针对逻辑回归这一种方式,而是一种通用的对近乎所有的二分类算法都可使用这种方式让它们能够作用在多分类问题上。那么这种改造方式通常有两种:OvR 和 OvO。
OvR(One vs Rest)
我们首先来看一下 O v R OvR OvR(One vs Rest),即 1 对剩余的所有,有些地方有可能称做 O v A OvA OvA,其实它们的意思是一样的。那么什么叫做 1 针对剩余呢?下图中,一种有四种类别,由四个点表示,显然对于这样的问题,我们不能直接使用逻辑回归的方式来解决。那么我们怎么解决呢?
我们选取其中某一个类别,比如说,选取红色的点,而对于剩下的三个类别,我们将它们融合在一起,称为其他类别。
相应的,这个过程我们也可以在其它类别上进行。我们这个例子中有四个类别,相应的就形成下面四种情况:
我们进一步拓展,如果有
n
n
n 个类别的话,就进行
n
n
n 次分类,选择分类得分最高的。
OvO(One vs One)
第二种改造方法称之为 O v O OvO OvO(One vs One),其实就是一对一的进行比较。依然举出上面的例子,我们这里有四个类别,每个类别使用一个点表示。
每次我们只挑出两个类别,比如我挑出红蓝两种,然后进行二分类任务。现在我们有四个类别,那么就可以形成六个二分类问题。其实就是
C
4
2
C_4^2
C42,排列组合的知识。
那么对于每一个二分类问题,我们都可以估计一下要预测的这个样本点处于这两个类别中哪一个类别?然后对于这些分类结果就可以投票,对于这六个分类结果来说,它在哪个类别中数量最大,最终就判定这个样本属于哪个类别。
拓展下来,我们就可以得出结论: n n n 个类别就进行 C n 2 C_n^2 Cn2 次分类,选择赢数最高的分类。很显然,这种 O v O OvO OvO 的方式比 O v R OvR OvR 这种方式更耗时,这是因为 C n 2 C_n^2 Cn2 是一个 n 2 n^2 n2 级别的公式,而对于 O v R OvR OvR 来说,我们只需要进行 n n n 次二分类任务即可。
不过对于 O v O OvO OvO 来说,虽然它更耗时,但是它的分类结果是更准确的。因为我们每次都只用两种类别进行比较,而没有混淆其它类别信息。
编程实现
那下面我们具体实践一下。
逻辑回归算法学习之旅到此就结束了,它拓展了线性回归的方式,通过估算概率这样的方式将一个回归问题转化成一个分类问题,逻辑回归算法在实际中使用是非常广泛的。
具体代码见 56 OvR和OvO.ipynb