原图作者:Chris Albon
适用场景:机器学习 / 数据挖掘 / 多分类建模
一、背景介绍
1.1 什么是逻辑回归?
逻辑回归(Logistic Regression)是机器学习中一种非常经典的二分类算法。它的核心思想是:
-
输入特征(X)
-
输出一个概率(0 到 1 之间)
-
用阈值(通常是0.5)决定分类结果
适用于解决「是 / 否」这类二分类问题。
1.2 但实际问题往往不止两个类别
现实世界的数据,经常是多类别(Multi-class)的,比如:
场景 | 类别 |
---|---|
邮件分类 | 正常 / 垃圾 / 广告 / 诈骗 |
图像识别 | 狗 / 猫 / 鸟 / 其他 |
客户状态 | 活跃 / 流失 / 潜在 |
那么,逻辑回归能不能处理这种多分类问题呢?
答案是:可以,但需要扩展。 其中一种常用的扩展方式就是 —— 一对其余(One-Vs-Rest,简称 OvR 或 OVR)
二、什么是一对其余(One-Vs-Rest)逻辑回归?
一对其余(One-Vs-Rest Logistic Regression):是二元逻辑回归的扩展版,用于解决多分类问题。
核心思想非常直观:
-
针对每个类别,单独构建一个二分类器。
-
让模型学会区分:
-
这个类别(1)
-
其他所有类别(0)
-
三、工作机制与流程
假设现在有 3 个类别:
-
类别A
-
类别B
-
类别C
步骤如下:
类别 | 模型构建方式 | 训练目标 |
---|---|---|
A vs Rest | A 为正类(1),其他为负类(0) | 判断是否属于A |
B vs Rest | B 为正类(1),其他为负类(0) | 判断是否属于B |
C vs Rest | C 为正类(1),其他为负类(0) | 判断是否属于C |
也就是说,原本是一个多分类问题,现在被拆解为 3 个独立的二分类问题。
四、预测流程
-
输入一个样本
-
让这 3 个模型分别打分(预测为各自类别的概率)
-
选择概率最大的类别,作为最终预测结果
这种思路的好处在于:
-
简单直接
-
每个模型专注判断“自己 vs 其他”
-
可以复用原有的二分类工具(逻辑回归、支持向量机、朴素贝叶斯等)
五、总结
优点 | 缺点 |
---|---|
简单易实现,容易理解 | 类别不均衡时效果不佳 |
模型独立训练,便于并行 | 类别数太多时,模型数量膨胀 |
兼容所有二分类器 | 类别之间没有直接关系建模 |
六、适用场景
One-Vs-Rest 通常适合:
-
类别数量不多
-
各类别之间独立、差异较大
-
希望复用现有二分类模型
七、在 Python 中如何实现 OvR 逻辑回归?
sklearn 已经帮我们封装好了:
from sklearn.linear_model import LogisticRegression
# OvR 是 sklearn 中多分类的默认方式
model = LogisticRegression(multi_class='ovr')
model.fit(X_train, y_train)
八、与其他多分类方法对比
方法 | 说明 |
---|---|
One-Vs-Rest | 一对其余,每个类别单独建模 |
One-Vs-One | 一对一,每两个类别都建一个模型 |
Softmax Regression | 直接学习多类别之间的概率分布(常用于深度学习) |
九、一句话总结
One-Vs-Rest 逻辑回归 = 把多分类问题转化为多个二分类问题,简单、直观,适用于小类别场景,是机器学习入门多分类的首选思路之一。