我们先从一个大家可能都接触过的东西说起:最小二乘回归(Least Squares Regression)。这是一个经典且常用的方法,常用于根据一组输入变量来预测结果变量。它的原理很简单:寻找一条“最佳拟合线”(在高维中则是超平面),使得预测值与实际观测值之间的平方差最小。换句话说,就是试图在一堆散点图中,画出一条最平滑的曲线。
但问题来了——它只关注“平均值”。
最小二乘回归本质上是围绕均值趋势来建模的。那么,只建模平均值到底有什么问题?
现实世界远比“平均值”复杂得多。比如,你在分析收入数据时,可能会遇到极少数的高收入人群,这会让整体数据呈现出严重偏态;又比如,在一个普通住宅区突然建起了一座豪华公寓,瞬间拉高了该地区的房价中位数。
在这种情况下,仅仅关注平均值,可能会让你得出失真甚至误导性的结论。
为什么选择分位数回归?
这时候,分位数回归(Quantile Regression)就登场了。与它的“兄弟”最小二乘回归不同,分位数回归并不局限于建模均值,而是允许我们探索数据分布中的不同分位点(percentiles)。这意味着我们不仅可以了解数据的整体趋势,还能深入观察底部 10%、顶部 90% 等不同层级的表现。
比如,你是否好奇:收入最低的那10%人群,在某些变量变化时会如何响应?又或者,最顶尖的90%数据,是不是遵循不同的规律?分位数回归都能帮你回答这些问题。
特别是在面对存在异常值或严重偏态的数据时,分位数回归格外有用——它不像最小二乘那样被极端值拉偏,而是通过多个分位点的刻画,展现出更全面、细腻的数据结构。
正所谓“百闻不如一见”,接下来我们用几个简单的例子,直观看看分位数回归和最小二乘回归的表现差异。
来看两个简单的例子,它们都使用一个预测变量和一个响应变量。
首先看左图:右上角有一个显眼的离群点(那个孤零零的点)。这个离群点对最小二乘回归(红线)的影响非常大,整条拟合线都被“拽歪了”,导致整体预测效果非常差。而分位数回归则表现得非常稳健:它并不会被这种极端值干扰,预测结果依然精准贴合数据。这正是它处理异常值能力强的体现。
再看右图:这里的数据呈现出一种“喇叭形”或“漏斗形”的结构,也就是我们常说的异方差性(heteroscedasticity):随着自变量 X 的增大,响应变量的波动也越来越大。在这种情况下,最小二乘回归(红线)和中位数分位数回归(绿色线,50%)虽然路径相似,但仍然只揭示了数据的一部分故事。我们进一步引入了更多的分位点(蓝线:10%、25%、75%、90%),你会发现,数据在整个分布范围内的行为被更完整地刻画出来:从“下沿”到“上缘”,数据的变化轨迹一目了然。
这正是分位数回归的优势:不仅告诉你“中心趋势”,更揭示了“整个分布”的动态变化。
分位数回归的实现:从高维建模到实际工具
在现实中,我们越来越频繁地遇到高维数据场景,也就是说,特征数量远多于观测样本数。这种情况在很多前沿领域都很常见,比如:
- 基因组学中,上万个基因变量预测某个疾病风险;
- 图像处理中,成千上万个像素点共同决定一张图属于哪个类别。
面对这种复杂性,仅靠普通的回归方法已经难以应对。我们需要借助带惩罚项的回归模型(如 Lasso、Group Lasso 等)来实现变量选择与模型稳健性的平衡。
然而,遗憾的是,目前主流的 R 和 Python 工具中,对高维下的分位数回归惩罚建模支持还比较有限。
Python 包 asgl提供了一个完整框架,用于拟合多种类型的惩罚回归模型,包括:
- 稀疏组 Lasso(Sparse Group Lasso)
- 自适应 Lasso(Adaptive Lasso)
asgl完全兼容 scikit-learn,可以无缝集成到你的机器学习流程中,方便调用和调参。详细参考:https://github.com/alvaromc317/asgl
用 asgl实现带自适应 Lasso 的分位数回归
说了这么多,我们来实操一下,看看如何使用 asgl 包来实现一个带自适应 Lasso 惩罚项的分位数回归模型。首先安装 asgl 包
接下来,我们将通过一组合成数据来演示具体的实现过程:
在这个示例中,我们生成了一个包含 100 个样本、200 个特征的数据集,其中只有 10 个特征是真正有效的 —— 这是一个典型的高维回归问题。
我们使用 asgl 包中的 Regressor 类来进行分位数回归(通过设置 model='qr' 实现),并选择了中位数作为目标分位点(即 quantile=0.5)。如果你对其他分位点感兴趣,只需将 quantile 设置为 (0, 1) 区间内的任意值即可。
在正则化方面,我们采用了自适应 Lasso(adaptive lasso)(通过设置 penalization='alasso' 实现)。你也可以进一步自定义模型的行为,比如调整自适应权重的计算方式,或者直接使用默认参数配置。
asgl 的三大优势:
- 1. 可扩展性(Scalability):该库可以高效处理高维数据,非常适用于基因组学、图像处理等特征维度远大于样本数的应用场景。
- 2. 灵活性(Flexibility):asgl 支持多种模型与正则化方式(如 Lasso、Elastic Net、自适应 Lasso、Sparse Group Lasso 等),可以满足不同的建模需求。
- 3. 易集成性(Integration):与 scikit-learn 完全兼容,便于进行模型评估、交叉验证、网格搜索等机器学习流程。
本文介绍了如何通过 asgl 实现自适应 Lasso 分位数回归。相较于仅拟合“平均值”的传统方法,分位数回归帮助我们更全面地理解数据的整体分布,提升了模型的解释力与稳健性。