一句话定义:序数回归(Ordinal Regression)是专门处理"有顺序的类别标签"(差/中/好、一级/二级/三级、非常不满意…非常满意)的建模方法。它既承认类别之间有大小关系,又不假设相邻类别之间的间隔相等。
为什么容易做错
假设你在做一个餐厅点评的模型,标签是"难吃 / 一般 / 好吃"。
- 当普通多分类(multiclass classification)处理:三个标签被 one-hot 成三个互不相干的类别,softmax 一视同仁。模型不知道"一般"离"难吃"比离"好吃"更近。结果是把"好吃"错判成"难吃"和把"好吃"错判成"一般",受到的惩罚一样大;样本少的中间类别也难学好。
- 当普通回归(regression)处理:编码成 1/2/3 当连续值,隐含假设"难吃→一般"和"一般→好吃"的距离完全一样。模型还可能输出 2.7 这种根本不存在的类别。
打个比方:你知道"一般"比"难吃"好,但你说不出好多少分。顺序有,距离无——这就是序数问题的本质。序数回归就是为这句话量身定做的工具。
它怎么做的
最经典的是"阈值模型"(threshold model / cumulative link model)。先假设背后有个连续的隐变量(latent variable),比如"总体满意度",模型只学一个打分函数 f(x),再学几个切分点(threshold)θ₁ < θ₂:
- f(x) < θ₁ → 差
- θ₁ ≤ f(x) < θ₂ → 中
- f(x) ≥ θ₂ → 好
训练时对累积概率 P(y ≥ k) 建模(有序 logit / probit),或者用序数版的多分类分解(如 CORAL、逐阈值二分类)。好处是相邻类别共享同一个打分器,参数少、样本效率高,输出的顺序天然不会乱。
| 多分类 | 回归 | 序数回归 | |
|---|---|---|---|
| 标签 | 无序类别 | 连续数值 | 有顺序的类别 |
| 相邻类别关系 | 完全不利用 | 假设等距 | 利用顺序,不假设等距 |
| 典型输出 | 各类概率 | 任意实数 | 类别 + 累积概率 |
| 例子 | 猫/狗/鸟 | 房价 | 信用等级、满意度 |
对从业者的实际意义
评分卡、问卷量表、医疗分级、内容安全分级、搜索相关性标注(差/一般/好/极好),都是序数问题。两个常见坑:一是随手 one-hot,浪费了顺序信息;二是随手当数值算平均。评测也别只看准确率,更该看"错得有多远"——平均绝对误差(MAE)、二次加权 kappa(quadratic weighted kappa)、Kendall's tau 都更贴合业务感受;很多库的具体实现和参数以官方文档为准。
对普通职场人的意义
看到 5 级问卷,别急着求平均。严格说,平均值只在该量表近似等距时才有意义;报告里写"中位数落在'一般'",往往比"平均 3.4 分"更诚实。另外,顺序是业务共识,不是数据自带的属性——如果标签其实无序(红/绿/蓝),那就老老实实做多分类。
