人間だったら考えて

考えて考えて人間だったら考えて

z-scoreに変換しても相関係数は変わらない

この記事は何?

機械学習の前処理として特徴量のスケーリングを行うことがありますが,スケーリング手法の1つとしてz-score変換があります.
z-scoreは平均が0,標準偏差が1となるようにスケーリングを行います,z-scoreを10倍して50を加えるとお馴染みの偏差値になります.

特徴量XYの相関係数を\rhoとします.このとき,Xをz-score化したX'Yの相関係数\rho'を考えます.
直感的には\rho\rho'は等しくなるんじゃないかなと思いますが,本当に等しくなるのか確かめてみたときのメモです

証明

結論から先に言うと,\rho\rho'は等しくなります.

z-score変換は,平均を引いて標準偏差で割って求めるため,線形変換です.
そこで,X'=aX+bとし,\rho=\rho'となることを示します.


\rho'= \frac{{\rm cov}[X', Y]}{\sqrt{ V[X' ]V[Y] }}\\
 = \frac{E[X'Y] - E[X']E[Y]}{\sqrt{ V[X' ]V[Y] }}\\
 = \frac{E[aXY+bY ] - E[aX+b]E[Y]}{\sqrt{ V[X' ]V[Y] }}\\
 = \frac{aE[XY] + bE[Y] - (aE[X]+b)E[Y]}{\sqrt{ V[X' ]V[Y] }}\\
 = \frac{a(E[XY]-E[X]E[Y])}{\sqrt{ V[X' ]V[Y] }} \\
 = \frac{a(E[XY]-E[X]E[Y])}{\sqrt{ V[aX+b ]V[Y] }} \\
 = \frac{a(E[XY]-E[X]E[Y])}{a\sqrt{ V[X ]V[Y] }} \\
 = \frac{E[XY]-E[X]E[Y]}{\sqrt{ V[X ]V[Y] }} \\
 = \rho

というわけで,\rho=\rho'となることが示されました.
これで安心して相関係数を計算できますヽ(^o^)丿

追記(2016/11/20)

上式では,aの正負によっては\rho=-\rho'になることがありますね…
z-scoreではaは正なので(標準偏差は正)問題は無いのですががが