首页 > 人工智能(Artificial Intelligence) > 机器学习基础 > 逻辑回归(非线性回归)

逻辑回归算法 -- 多分类

逻辑回归算法 -- 多分类

如何使用逻辑回归 (logistic regression)来解决多类别分类问题,具体来说,是使用一个"一对多" (one-vs-all) 的分类算法。

多分类的例子:假如说你现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,或者说可以自动地加上标签,那么,你需要区分开来自工作的邮件、来自朋友的邮件、来自家人的邮件或者是有关兴趣爱好的邮件,那么,我们就有了这样一个分类问题:其类别有四个,分别用$y=1$、$y=2$、$y=3$、$y=4$ 来代表。

第二个例子:如果你正在做有关天气的机器学习分类问题,那么你可能想要区分哪些天是晴天、多云、雨天、或者下雪天,对上述所有的例子, 可以取一个很小的数值,比如1 到3、1到4或者其它数值,以上说的都是多类分类问题。

然而对于之前的一个,二元分类问题,我们的数据看起来可能是像这样:

对于一个多类分类问题,我们的数据集或许看起来像这样:

我用3种不同的符号来代表3个类别,问题就是给出3个类型的数据集,我们如何得到一个学习算法来进行分类呢?

我们现在已经知道如何进行二元分类,可以使用逻辑回归,对于直线或许你也知道,可以将数据集一分为二为正类和负类。用一对多的分类思想,我们可以将其用在多类分类问题上。

下面将介绍如何进行一对多的分类工作,这个方法也被称为"一对余"方法。

就是直接根据每个类别,都建立一个二分类器,带有这个类别的样本标记为1,带有其他类别的样本标记为0。假如我们有个类别,最后我们就得到了个针对不同标记的普通的logistic分类器。

现在我们有一个训练集,好比上图表示的有3个类别,我们用三角形表示 ,方框表示,叉叉表示 。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题。

我们先从用三角形代表的类别1开始,实际上我们可以创建一个,新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,拟合出一个合适的分类器。

我们将多个类中的一个类标记为正向类 $y=1$,然后将其他所有类都标记为负向类,这个模型记作 $h_\theta^{\left( 1 \right)}\left( x \right)$。接着,类似地第我们选择另一个类标记为正向类 $y=2$,再将其它类都标记为负向类,将这个模型记作 $h_\theta^{\left( 2 \right)}\left( x \right)$ ,依此类推。 最后我们得到一系列的模型简记为:$h_\theta^{\left( i \right)}\left( x \right)=p\left( y=i|x;\theta  \right)$  其中:$i=\left( 1,2,3....k \right)$

最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

为了做出预测,我们输入一个新的 $x$ 值,在我们三个分类器里面输入 $x$,然后我们选择一个让 $h_\theta^{\left( i \right)}\left( x \right)$ 最大的 $i$,即 $\mathop{\max}\limits_i\,h_\theta^{\left( i \right)}\left( x \right)$。

softmax回归

即logistic回归的多分类版本

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。