分位数回归 Quantile Regression && 期望回归 Expectile Regression

分位数回归 Quantile Regression

  • 先说一下线性回归 & 多项式回归:假定一个函数 f(x) ,让函数尽可能拟合训练数据,确定函数的未知参数。一般通过最小化MSE来进行:
    MSE
  • 线性回归&多项式回归 得到的y本质上就是一个期望。f(x)本质上是一个条件期望函数,在x等于某个值的条件下,根据数据,求y的期望值。
为什么会有分位回归Quantile Regression
  • 不希望仅仅研究y的期望,而是希望能探索y的完整分布状况。(一般通过了解y的某个分位数来了解分布)。假如我们有一个如图分布的数据,先做普通的回归分析拟合f(x)曲线
    线性回归
  • 从拟合的曲线可以看到问题,我们只拟合了均值,但随着x增大,实际值y的分布范围越来越大。即便y的分布变宽了,拟合的f(x)也还是按照蓝线那样以同样的斜率稳定上升。如果我们是按照0.9分位数回归,重新得出新函数f(x)图像:
    0.9分位数回归
  • 上图可以看出,比起普通的回归分析,能进一步显示出来y的变化幅度增大了。所谓0.9分位数回归,是希望回归曲线之下能够包含90%的数据点(y),这也是分位数的概念,分位数回归Quantile Regression知识把分位数的概念融入到了普通的线性回归而已。我们进一步的可以看看0.1到0.9的不同分位数回归曲线是长什么样子
    0.1 0.2 0.3.. 0.8 0.9分位数回归的曲线
  • 通过看不同的分位数回归曲线,可以完整的反应出来,随着x的增大,y的不同范围的数据是不同程度的变化的,而这个结论通过之前的线性回归&多项式回归都无法得到,这就是分位数回归的作用
分位数回归QuantileRegression的Loss函数
  • 本质上是一个加权最小二乘法(虽然形式有一点点不一样)。y是观测值,y尖尖是模型的预测值f(x)=b0+b1*x,q是分位数(取值0到1),I是指示函数(当括号内的条件成立时为1,否则为0)。这个损失函数会根据不同的q,对不同的数据点做不同的加权,如果y在q的左侧,损失函数给1-q的权重,如果y在q的右侧,损失函数给q的权重。
    对于第q个分位值,求分位数回归曲线(也就是求曲线f(x)的内在参数比如a0+a1*x的b0和b1)

一个简单的python实现可以用加权最小二乘法确定第q分位数的线性模型

import numpy as np
from scipy.optimize import minimize

def quantile_loss(q, y, y_pred):
    residual = y - y_pred
    return np.sum((1 - q) * residual[residual >= 0]) + np.sum(q * residual[residual < 0])

def linear_quantile_regression(q, x, y):
    # 定义目标函数
    def objective(beta):
        y_pred = beta[0] + beta[1] * x
        return quantile_loss(q, y, y_pred)

    # 初始猜测值
    initial_guess = np.array([0.0, 0.0])

    # 最小化目标函数
    result = minimize(objective, initial_guess, method='SLSQP')

    # 返回最优参数
    return result.x

# 生成一些示例数据
np.random.seed(0)
x = np.random.rand(100)
y = 2 * x + 1 + np.random.randn(100)

# 计算第 0.5 分位数的线性模型参数
q = 0.5
beta = linear_quantile_regression(q, x, y)
print("第", q, "分位数的线性模型参数:", beta)
  • 对比之前求求期望的最小二乘法,就编程我们熟悉的加权最小二乘法了,本质上他们都一样,而且最小化这个函数同样可以求出分位点。
    用二次方的加权最小二乘法,也可以求解同样的问题
  • 代码实现只需要把 quantile_loss 改成 quantile_ols_loss 即可
def quantile_ols_loss(q, y, y_pred):
    residual = y - y_pred
    return np.sum((q * residual[residual >= 0])**2) + np.sum(((1 - q) * residual[residual < 0])**2)
  • 不管是上面两种哪种形式,比如我们使用p=0.8,name我们最小化Loss求f(x)的参数,得到回归曲线f,应该有80%的数据点在曲线的下方。
  • 【结论】分位数回归QuantileRegression,不能说是一种回归模型,而是一类回归模型,或者说是一种改进思想,我们可以把它应用到线性回归、多项式回归、核回归等等。
  • 【本质】和线性回归最本质的区别就是把损失函数从最小二乘法改成加权最小二乘法,从而通过不同分位数得到不同的结果,在根据结果进行分析。

期望回归 Expectile Regression

  • 期望回归只在估计给定概率水平下的条件期望,而不是估计给定分位数下的条件中位数。
  • Expectile Regression也是统计中一种常用的估计随机变量的统计量方法。
期望回归的损失函数
  • y是观测值,y尖尖是模型的预测值,q是期望的概率水平(通常是0~1),F(y|y尖尖)是给定y尖尖的累积分布函数。
    期望回归Loss
  • 计算累积分布函数:需要做估计,可以通过标准化残差来实现。残差就是观测值减去预测值,\sigma 是残差的标准差

    标准化残差

  • 这样的话期望回归的损失函数就可以重写,其中I(\epsilon_i>=0)是指数函数,当括号内条件成立时为1,否则为0

    重写期望回归的Loss

  • 之前是把残差大于0的loss加权(1-q),现在是残差大于0的值normalize之后mean,作为q权重的惩罚项,也就是如果异常值很大,loss的权重就越小

  • 代码实现只需要把 quantile_loss 改成expectile_ols_loss即可,q的物理含义从分位数变成期望水平。

def expectile_ols_loss(q, y, y_pred):
    residual = y - y_pred
    epsilon = residual / np.std(residual)
    return np.sum((residual)**2 * (q - np.mean(epsilon[epsilon >= 0])))

QuantileRegression和ExpectileRegression的区别

  • 定义
    (1)分位数回归通过最小化选定分位数处的因变量和模型预测之间的绝对误差来估计回归系数。例如,如果我们关注中位数,那么分位数q=0.5,分位数回归就会尝试找到一条线,使得50%的数据点位于这条线的上方,50%位于下方,同时最小化这些点到线的垂直距离之和。
    (2)期望回归是一种相对较新的统计建模方法,它介于分位数回归和均值回归之间。它的目标是估计条件期望的“中心”或“典型”值,这个值在某种程度上介于中位数和均值之间。通过最小化加权的绝对残差之和来计算回归系数。权重是根据残差的绝对值来确定的,使得较小的残差获得更大的权重。这种方法的结果是:模型倾向于关注数据的中心部分,而不是极端值
  • 用途
    (1)分位数回归特别适用于分析具有异方差性或非正态分布(不同分位值没有很均匀)的数据,以及在处理异常值的时候,比传统最小二乘法更为稳健。它可以用于预测不同分位数的值,从而得到关于因变量y更全面的分布信息。
    (2)期望回归适用于哪些对异常值敏感但又希望保持对数据整体分布的关注的情况。它可以提供比中位数回归更丰富的信息,因为它不仅关注中间部分的数据,还考虑到了数据的其他部分。

之所以期望回归可以提供更丰富的信息,是因为在建模过程中对数据的不同部分给予了不同的关注,而不仅仅集中在中间部分(中位数)。
(1)数据分布:中位数对数据的上半部分和下半部分给予相同的关注,但不考虑数据的分布形状。期望回归通过加权绝对残差,可以在一定程度上模拟数据分布的形状,从而提供更多关于数据整体特征的信息。
(2)异常值:期望回归处理异常值更文件。因为中位数回归完全忽略位于选定分位数之外的数据点,而期望回归对残差加权,异常值大的会让loss权重变小,可以减少异常值的影响,同时不像均值回归那样受到异常值的支配。
(3)灵活:期望回归通过调整权重,可以灵活的在中位数(q=0.5的时候)和均值之间进行权衡。比如,如果数据分布是对称的,期望回归的结果更接近中位数;如果数据是偏斜的,期望回归可能更接近均值。可以在不同的数据分布里捕捉数据本质。

  • 例子
    (1)分位数回归:例如,在收入数据中,Quantile Regression 可以帮助你估计特定分位数下的收入水平,如第 25%、第 50%(中位数)和第 75% 分位数的收入。
    (2)期望回归:例如,在房屋价格数据中,Expectile Regression 可以帮助你估计给定预期房价的条件平均水平,而不仅仅是单一的分位数。

  • 总结
    (1)分位数回归关注与数据的不同部分
    (2)期望回归试图找到一个平衡点,既不是完全集中在中位数,也不是完全集中在均值。
    (3)这两种方法都可以提供比传统最小二乘回归更稳健的估计,特别是在数据分布不均匀或者存在异常值的情况下。

参考一张图

from https://medium.com/@joachimiak.krzysztof/expectile-regression-an-alternative-for-quantile-regression-48298fb6eaa0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • [toc] 一、分位数回归概念 分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。 以往...
    longgb246阅读 57,747评论 0 9
  • 一、分位数回归概念 分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。 以往的回归模型实...
    小白一枚ha阅读 10,369评论 0 6
  • 问题:如何做到对目标值的区间范围的预测 使用神经网络做回归任务,我们使用MSE、MAE作为损失函数,最终得到的输出...
    AlchemistMartin阅读 9,547评论 1 8
  • 一、知识点 之前讲完了历史模拟法和蒙特卡罗模拟法计算VaR和ES,接下来要讲的是分位数回归法。回归法的目标和做法是...
    九日照林阅读 4,891评论 0 1
  • 由于各种原因,回归系数可能不稳定。回归分析要求因变量Y为正态分布,并对异常值较为敏感,异常值问题和共线性问题、异方...
    spssau阅读 30,725评论 0 9