天天看點

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

拓端資料部落公衆号

歸一化資料是資料科學中的一項常見任務。有時它可以讓我們加快梯度下降的速度或提高模型的準确性,在某些情況下,它絕對是至關重要的。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

一些歸一化技術,如取對數,在大多數情況下可能有效,但在這種情況下,我決定嘗試對任何資料都有效的方法,不管它最初是如何分布的。我下面要介紹的方法是基于逆變換抽樣:主要思想是根據資料的統計特性,構造這樣的函數F,是以F(x)是正态分布。下面是如何做的。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

我所說的算法是基于逆變換抽樣法。這種方法被廣泛用于僞随機數生成器,從任何給定的分布中生成數字。有了均勻分布的資料,你總是可以把它轉化為分布,有任何給定的累積密度函數(或簡稱CDF)。CDF顯示了分布的資料點中有多大比例小于給定值,基本上表示了分布的所有統計特性。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

具有零平均數和機關方差的正态分布的CDF。它顯示,幾乎所有的點都大于-4,小于4,其中50%的點小于0

其主要思想是,對于任何連續分布的資料xᵢ,CDF(xᵢ)是均勻分布的。換句話說,要想得到均勻分布的資料,隻需取每個點的CDF。這句話的數學證明超出了本文的範圍,但是上述操作本質上隻是對所有數值進行排序,并将每個數值替換為其數字,這給了它一個直覺的感覺。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

将一些混亂的資料轉化為統一的資料

在上面的圖中,你可以看到它是如何工作的。我生成了一些混亂的分布資料,然後計算了它的CDF(紅線),并用它轉換了資料。現在資料是均勻分布的。

計算CDF比它看起來更容易。記住,CDF是比給定資料小的一部分。

一般來說,CDF是一個雙射函數,這意味着轉換是可逆的。我們可以利用這一事實将得到的均勻分布轉化為我們想要的任何分布,例如正态分布。為了做到這一點,我們需要計算我們想得到的分布的反CDF。一般來說,這不是最簡單的任務。我們需要的函數被稱為百分點函數,簡稱PPF。幸運的是,任何主要分布的PPF都可以通過SciPy庫獲得,人們不需要自己去計算它。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

具有零平均數和機關方差的正态分布的PPF。它顯示第50個百分位數是0,超過60%的點位于-1和1之間。

下面是對它的解釋:對于0和1之間的任何參數x,PPF傳回點适合x'th百分位的最大值。同時,作為CDF的反函數,它看起來像第一張圖檔中的函數,隻是旋轉了90°。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

從均勻分布中獲得正态分布

現在我們有了一個漂亮的正态分布,如願以償。最後,要做一個函數來轉換我們的初始資料,我們所要做的就是把這兩個操作合并到一個函數中。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

将初始雜亂的分布轉化為均值為零、方差為機關的正态分布

上圖中的紅線代表最終的變換函數。

請注意,最後的變換總是單調的。這意味着沒有兩個點在轉換後被調換。如果一個點的初始特征值大于另一個點的初始特征值,在轉換之後,轉換後的值對該點來說也會更大。這一事實使得該算法可以應用于資料科學任務。

總而言之,與更常見的方法不同,本文描述的算法不需要對初始分布進行任何假設。同時,輸出的資料極其精确地遵循正态分布。這種方法已被證明可以提高模型的準确性,這些模型假定輸入資料分布。

R語言進行資料結構化轉換:Box-Cox變換、“凸規則”變換方法

全文連結:http://tecdat.cn/?p=22251

原文出處:拓端資料部落公衆号

R語言進行資料結構化轉換:Box-Cox變換、“凸規則”變換方法

線性回歸時若資料不服從正态分布,會給線性回歸的最小二乘估計系數的結果帶來誤差,是以需要對資料進行結構化轉換。

在讨論回歸模型中的變換時,我們通常會簡單地使用Box-Cox變換,或局部回歸和非參數估計。

這裡的要點是,在标準線性回歸模型中,我們有

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

但是有時候,線性關系是不合适的。一種想法可以是轉換我們要模組化的變量,然後考慮

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

這就是我們通常使用Box-Cox變換進行的操作。另一個想法可以是轉換解釋變量,

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

例如,我們有時會考慮連續的分段線性函數,也可以考慮多項式回歸。

“凸規則”變換

“凸規則”(Mosteller. F and Tukey, J.W. (1978). Data Analysis and Regression)的想法是,轉換時考慮不同的幂函數。

1.“凸規則”為糾正非線性的可能變換提供了一個起點。

2 .通常情況下,我們應該嘗試對解釋變量進行變換,而不是對因變量Y進行變換,因為Y的變換會影響Y與所有X的關系,而不僅僅是與非線性關系的關系

3.然而,如果因變量是高度傾斜的,那麼将其轉換為以下變量是有意義的

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

更具體地說,我們将考慮線性模型。

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

根據回歸函數的形狀(上圖中的四個曲線,在四個象限中),将考慮不同的幂。

例如讓我們生成不同的模型,看看關聯散點圖。

> plot(MT(p=.5,q=2),main="(p=1/2,q=2)")
> plot(MT(p=3,q=-5),main="(p=3,q=-5)")
> plot(MT(p=.5,q=-1),main="(p=1/2,q=-1)")
> plot(MT(p=3,q=5),main="(p=3,q=5)")      
【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

如果我們考慮圖的左下角部分,要得到這樣的模式,我們可以考慮

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

或更一般地

其中

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

和都大于1.并且

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

越大,回歸曲線越凸。

讓我們可視化資料集上的雙重轉換,例如cars資料集。

> tukey=function(p=1,q=1){
+ regpq=lm(I(y^q)~I(x^p) )
+ u=seq(min(min(  x)-2,.1),max( x)+2,length=501)
+ polygon(c(u,rev(u)),c(vic[,2],rev(vic[,3]))^(1/q)
+ lines(u,vic[,2]^(1/q)
+ plot(x^p,  y^q )
+ polygon(c(u,rev(u))^p,c(vic[,2],rev(vic[,3])) )
+ lines(u^p,vic[,2])
      

例如,如果我們運作

> tukey(2,1)      

我們得到如下圖,

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

左側是原始資料集,右側是經過轉換的資料集,

【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

其中有兩種可能的轉換。在這裡,我們隻考慮了汽車速度的平方(這裡隻變換了一個分量)。在該轉換後的資料集上,我們運作标準線性回歸。我們在這裡添加一個置信度。然後,我們考慮預測的逆變換。這條線畫在左邊。問題在于它不應該被認為是我們的最佳預測,因為它顯然存在偏差。請注意,在這裡,有可能考慮另一種形狀相同但完全不同的變換

> tukey(1,.5)      
【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

Box-Cox變換 

當然,也可以使用Box-Cox變換。此外,還可以尋求最佳變換。考慮

> for(p in seq(.2,3,by=.1)) bc=cbind(bc,boxcox(y~I(x^p),lambda=seq(.1,3,by=.1))$y)
> contour(vp,vq,bc)      
【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法
【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

顔色越深越好(這裡考慮的是對數似然)。 最佳對數在這裡是

> bc=function(a){p=a[1];q=a[2]; (-boxcox(y~I(x^p),data=base,lambda=q)$y[50]
> optim(bc,method="L-BFGS-B")      
【視訊】逆變換抽樣将資料标準化和R語言結構化轉換:BOX-COX、凸規則變換方法

實際上,我們得到的模型還不錯,