数据STUDIO

压缩平均值,建立惩罚分位数回归模型

Image

Image

今天云朵君和大家一起谈谈分位数回归(quantile regression) ,并使用鲁棒性更强的asgl包深入研究高维分位数回归,重点介绍如何实现带有自适应套索惩罚的分位数回归。

  • 什么是分位数回归
  • 与传统最小二乘回归相比,分位数回归有哪些优势
  • 如何在 Python 中实现惩罚分位数回归模型
推荐阅读:
万字长文,演绎八种线性回归算法最强总结!
原理+代码,总结了 11 种回归模型
线性回归中的多重共线性与岭回归
机器学习 | 简单而强大的线性回归详解
机器学习模型,全面总结!
用于多期概率预测的线性回归
用于时间序列概率预测的分位数回归
用于时间序列概率预测的共形分位数回归

什么是分位数回归

从许多人可能都遇到过的方法开始:最小二乘回归。当我们想要根据一些输入变量预测结果时,这是经典的常用方法。它的工作原理是,通过最小化观测值和预测值之间的平方差,找到与数据最拟合的直线(或高维空间中的超平面)。简单来说,这就像试图在数据点的散点图中绘制一条最平滑的直线。但问题在于:它最终都与平均值有关。最小二乘回归只关注对数据中的平均趋势进行建模。

那么,仅仅建模平均值有什么问题呢?毕竟,生活并不总是围绕着平均值。想象一下,你正在分析收入数据,而这些数据往往会受到少数高收入者的干扰。或者考虑包含异常值的数据,比如某个社区突然出现了豪华公寓开发项目,导致房价上涨。在这种情况下,只关注平均值可能会产生偏差,从而得出误导性的结论。

分位数回归优点

进入分位数回归。与最小二乘法不同,分位数回归中可以探索数据分布的各个分位数(或百分位数)。这意味着我们可以了解数据不同部分的行为,而不仅仅是平均值。想知道数据中后 10% 或前 90% 的数据如何响应输入变量的变化吗?分位数回归可以满足您的需求。它在处理包含异常值或严重偏态的数据时尤其有用,因为它通过观察整体分布来提供更细致的图像。

俗话说,一图胜千言,我们通过几个简单的例子来了解分位数回归和最小二乘回归的具体内容。


Image
比较分位数回归和最小二乘回归

这两幅图展示了非常简单的回归模型,包含一个预测变量和一个响应变量。左图右上角有一个异常值(那边那个孤零零的点)。这个异常值会影响最小二乘法(红线)的估计值,导致其预测结果非常不准确。但分位数回归不受异常值的影响,其预测结果非常准确。右图的数据集是异方差的。这意味着什么?想象一下,你的数据形成一个锥形,随着X值的增加而变宽。更专业地说,响应变量的变异性并不遵循规则——它会随着X值的增大而扩大。在这里,最小二乘法(红色)和中位数(绿色)的分位数回归描绘了相似的路径,但它们只反映了部分情况。通过引入额外的分位数(蓝色,分别为10%、25%、75%和90%),我们能够捕捉数据在整个范围内的变化并观察其行为。

分位数回归实现

高维场景(预测变量的数量超过观测变量的数量)在当今数据驱动的世界中越来越常见,例如在基因组学等领域(成千上万的基因可能预测一个结果),或在图像处理领域(无数像素参与单个分类任务)。这些复杂的情况需要使用惩罚回归模型来有效地管理大量变量。然而,大多数现有的 R 和 Python 软件在这种高维环境下对分位数回归进行惩罚的选项有限。

这就是我的 Python 包**asgl出现的地方。asgl该包提供了一个全面的框架,用于拟合各种惩罚回归模型,包括稀疏组套索和自适应套索。它基于前沿研究构建,并与 scikit-learn 完全兼容**,从而可以与其他机器学习工具无缝集成。

代码示例

看看如何使用asgl自适应套索惩罚函数进行分位数回归。首先,确保asgl库已安装:

asgl是一款功能强大且功能强大的工具,旨在拟合各种回归模型,包括线性回归、分位数回归、逻辑回归以及各种惩罚回归模型,例如 Lasso、Ridge、Group Lasso、Sparse Group Lasso 及其自适应变体。该软件包尤其适用于在低维和高维框架中同时进行变量选择和预测。

pip install asgl

接下来,我们将使用合成数据演示实现:

import numpy as np
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from asgl import Regressor

# Generate synthetic data
X, y = make_regression(n_samples=100, n_features=200, n_informative=10, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Define and train the quantile regression model with adaptive lasso
model = Regressor(model='qr', penalization='alasso', quantile=0.5)

# Fit the model
model.fit(X_train, y_train)

# Make predictions
predictions = model.predict(X_test)

# Evaluate the model
mae = mean_absolute_error(y_test, predictions)
print(f'Mean Absolute Error: {mse:.3f}')

在此示例中,我们生成一个包含 100 个样本和 200 个特征的数据集,其中只有 10 个特征真正具有信息量,因此这是一个高维回归问题。asgl包中的Regressor类配置model='qr'为对中位数(通过选择)执行分位数回归(通过选择quantile=0.5)。如果我们对其他分位数感兴趣,只需将新的分位数设置在 (0, 1) 区间内的某个位置即可。我们求解自适应套索惩罚(通过选择penalization='alasso'),并且可以优化模型的其他方面,例如如何估计自适应权重等,或者使用默认配置。

写在最后

最后总结一下asgl优点:

  1. 可扩展性:该软件包可有效处理高维数据集,使其适用于广泛场景中的应用。
  2. 灵活性:支持各种模型和惩罚,asgl满足不同的分析需求。
  3. 集成:与 scikit-learn 的兼容性简化了模型评估和超参数调整

分位数回归通过压缩平均值并探索数据的完整分布,为数据驱动的决策开辟了新的可能性。更多内容可以参考:https://github.com/alvaromc317/asgl

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage