ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

连续变量的转换:ECDF、Box-Cox、Yeo-Johnson

2020-12-17 12:04:54  阅读:628  来源: 互联网

标签:Box ECDF le ln ne 连续变量 正态分布 lambda


前言

构造连续变量的衍生变量。在机器学习问题中,我们希望数据是服从正态分布的(或者一些常见的简单的分布)。然而,现实数据常常不服从正态分布。我们尝试进行转换,使之服从(至少更接近)正态分布。值得注意的是对于 X X X和 y y y的转换是不一样的。

基于ECDF的转换

ECDF的英文是Empirical cumulative distribution function。CDF就是统计中常说的累计分布,即 P ( X ≤ x ) = F ( x ) P(X \le x) = F(x) P(X≤x)=F(x)。我们假设这个函数是可逆的。同时,我们知道如果有变量 u ∼ U [ 0 , 1 ] u \sim U[0,1] u∼U[0,1],那么
P ( F − 1 ( u ) ≤ x ) = F ( x ) P ( U ≤ F ( x ) ) = F ( x ) P(F^{-1}(u) \le x) = F(x) \\\\ P(U \le F(x)) = F(x) P(F−1(u)≤x)=F(x)P(U≤F(x))=F(x)
我们希望对于任意分布 X ∼ F ( X ) X \sim F(X) X∼F(X),我们都可以将其转换成为另一个分布 G ( X ) G(X) G(X)。所以我们需要从 X X X中得到一个均匀分布。下面数学公式的构造了一个均匀分布。
P ( G − 1 ( F ( X ) ) ≤ x ) = G ( x ) P(G^{-1}(F(X)) \le x) = G(x) \\\\ P(G−1(F(X))≤x)=G(x)
上面概率公式中间的数学推导如下。
P ( F ( X ) ≤ x ) = P ( X ≤ F − 1 ( x ) ) = F ( F − 1 ( x ) ) = x P(F(X) \le x) = P(X \le F^{-1}(x)) \\\\ = F(F^{-1}(x)) \\\\ = x P(F(X)≤x)=P(X≤F−1(x))=F(F−1(x))=x
但是存在一个问题,如果 F ( X ) F(X) F(X)不是单调递增的,比如在某些 x x x值上函数值保持不变,那么严格来说不存在逆函数。我们需要替换成广义的逆,即最小 X X X使得 y = F ( X ) y = F(X) y=F(X)成立的值。

另外一个问题是,我们如何知道 X X X原来的分布呢?我们只能使用分位数进行估计。

幂变换

在机器学习问题中,我们也会遇到 y y y值不服从正态分布的情况,最常见的就是长尾数据。在统计中,幂变换是一族函数,可用于使用幂函数创建数据的单调变换。这是一种用于稳定方差,使数据更像正态分布的数据转换技术。可以提高关联度量(如变量之间的Pearson相关性)的有效性以及用于其他数据稳定程序。

Box-Cox变换

英文是Box-Cox Transformation。要求 y > 0 y > 0 y>0。这里只介绍单变量Box-Cox变换。

当 λ ≠ 0 \lambda \ne 0 λ​=0时有 y = ( y λ − 1 ) / λ y = (y^{\lambda}-1)/\lambda y=(yλ−1)/λ;当 λ = 0 \lambda = 0 λ=0时 y = l n ( y ) y = ln(y) y=ln(y)。

Yeo-Johnson变换

英文是Yeo-Johnson Transformation。
y = ( y λ − 1 ) / λ ; i f   λ ≠ 0 , y > 0 y = l n ( y + 1 ) ; i f   λ ≠ 0 , y > 0 y = − [ ( − y + 1 ) − 2 λ − 1 ] / ( 2 − λ ) ; i f   λ ≠ 2 , y < 0 y = − l n ( − y + 1 ) ; i f   λ ≠ 2 , y < 0 y = (y^{\lambda}-1)/\lambda; \quad if \ \lambda \ne 0, y > 0 \\\\ y = ln(y+1); \quad if \ \lambda \ne 0, y > 0 \\\\ y = -[(-y+1)^{-2\lambda}-1]/(2-\lambda); \quad if \ \lambda \ne 2, y < 0 \\\\ y = -ln(-y+1); \quad if \ \lambda \ne 2, y < 0 \\\\ y=(yλ−1)/λ;if λ​=0,y>0y=ln(y+1);if λ​=0,y>0y=−[(−y+1)−2λ−1]/(2−λ);if λ​=2,y<0y=−ln(−y+1);if λ​=2,y<0

Reference

  • NLP实战高手课,第三章,王然,极客时间
  • Power transform,wikipedia

标签:Box,ECDF,le,ln,ne,连续变量,正态分布,lambda
来源: https://blog.csdn.net/qq_40136685/article/details/111312200

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有