色々な手法で相関係数を計算するおわりに参考文献はじめに昨年,非線形データの相関係数を計算する記事を書きました。手法があるのですが,紹介は宿題にしましたその時の宿題を片付けようと思います。比較も行いたいと思いますので,次回を御期待下さい相関係数データとデータの関連性を表す相関係数については,当ブログで何度か取り上げて来ました。PythonやR言語で相関係数を計算してみよう相関係数とは、2つの変数に線形関係があるかどうかを判定するための値です。Learningでの予測モデル予測モデルを作成する前に本当に基本給とボーナスは強い関係があるかRを利用して相関係数で確認してみましょう。ついて説明したいと思います。注:本記事では,分かりやすさのため,理論的・数学的な厳密さはこだわらず,イメージが湧きやすいように表現しています。「正確に言うと違う」という部分が多々ありますが,ご容赦下さい。上に掲載したブログの記事では,線形データに対するピアソンの積率相関係数(以下,ピアソン)を計算した例を紹介しています。ここでは,ピアソン以外の相関係数を紹介したいと思います。「順位化」とは,データの集合に対し,データの値の大小関係を用いて,データが集合の中で何番目に大きいか(あるいは小さいか)という値に変換することを言います。この変換により,一般に外れ値に強くなり,データ集合全体の傾向が掴みやすくなります。ピアソンの計算式に,実際の値ではなく順位化した値を代入して計算した係数を「スピアマンの順位相関係数(以下,スピアマン)」と言います。下は,Wikipediaによるピアソンとスピアマンの比較の例です。最初の例は,非線形データに対する対応についてです。X座標が増加するにつれY座標も増加しているので,X座標とY座標との間には相関関係があると考えるのが自然ですが,ピアソンでは0.88という値に留まっているのに関わらず,スピアマンでは1.0という値が計算されるとされています。Link次の例は,外れ値の影響についてです。図の左側を見るとX座標が増加するにつれY座標が増加しており,明らかに正の相関があることが見て取れます。図の右側にいくつか外れ値があり,その影響でピアソンは0.67という低い値になっていますが,スピアマンでは0.84という高い値を示しています。Linkでは,スピアマンなら何でも大丈夫かというと,そんなことはありません。次の例は,X座標が増加するにつれ,Y座標は減少してから増加に転ずるデータです。X座標とY座標に関連性があるのは確かですが,ピアソンでは-0.13,スピアマンでも-0.099と関連性が無いような値が計算されています。相互情報量)相互情報量は次式で定義され,一般化された相関係数として使用されています。)対数関数の引数が1となることから相互情報量がゼロになることから,相互情報量の値を計算することにより,2つの分布が独立かどうか(相関があるかどうか)が推定できます。相互情報量は機械学習を始め色々な用途に使われているのですが,相互情報量なら何でも大丈夫かと言うとそんなことはありません。次の図は三角関数のグラフに,右に行くに連れ大きなノイズを加えたデータです。ノイズが混入することにより関数としての変数xとyの関連性が弱くなっていくので相関係数は右に行くに連れ小さくなって欲しいです。いくつかの手法で係数を計算すると以下のようになります。相互情報量=0.9R-AMIC=0.48ヒルベルト・シュミット独立性規準=0.02R-AMIC(以前のブログで説明したもの)やヒルベルト・シュミット独立性規準(のちほど説明)は右に行くほど順調に値が小さくなっており関連性が弱くなっていることを判定していますが,相互情報量は真ん中から右に行くと逆に値が大きくなってしまいます。この結果から,相互情報量はピアソンに比べると非線形データに対応していることは分かります。距離共分散)距離共分散は統計的な特性関数から計算される量で,距離分散で正規化することで距離相関を計算することができます。ような量を計算することにより,2つの分布が独立かどうか(相関があるかどうか)が推定できます。次の図はWikipediaによるもので,データの分布が直線以外でも相関係数がゼロにはならない値を取ることが示されています。Linkこの距離共分散の計算は,ハイパーパラメータの選択により後に述べるHSICと等価になることが知られており,結局は行列計算に帰着することができます。最大情報量係数)最大情報量係数は,入力されたデータの空間をグリッドに区切り,各グリッドの中で相互情報量を計算します。その際,様々な区切り方を試して相互情報量が最も大きくなる区切り方を探索します。次のイメージ図では,データが3つある空間で左は4×4=16のグリッドに,右は2×2=4のグリッドに区切っています。0.5で右の方が密度が高くなっており,情報量が大きくなります。この例では縦と横を同じ数で区切っていますが,より複雑な区切り方をすることで相互情報量のみだとうまくいかなかったノイズの混入した非線形データに対応します。ヒルベルト・シュミット独立性規準)ヒルベルト・シュミット独立性規準は,カーネル法によって入力データをカーネル計算,すなわち行列計算に帰着させることでデータ同士が独立かどうか(相関があるかどうか)を計算します。アイディアとしては,まず線形代数における次のような事実を思い出します。入力データxとyが独立なら,期待値をE(x)として次の共分散がゼロに近い値を取るピアソンは,この共分散を正規化したものに他なりません。この性質は入力データが多次元でも成り立ち,計算結果は相互共分散行列と呼ばれる行列になります。2次元の場合,相互共分散行列は2×2の対角行列になり,相関を表す主要な成分である対角成分では無い値を計算すると次のようになります(正規化していないピアソンの値に等しくなります)。再生核ヒルベルト空間)の中で相互共分散行列のようなものが定義でき,次のようになります。従って距離共分散の場合と同様のイメージで,2つのデータが独立なら同時生起確率がp(x,y)=p(x)p(y)となる(すなわちp(x,y)-p(x)p(y)がゼロに近くなる)ことと対応して,この量を計算することで2つの分布が独立かどうか(相関があるかどうか)が推定できます。基底関数に関係なくカーネル関数の評価に帰着しますので,最終的にヒルベルト・シュミット独立性規準は行列計算に帰着することができます。バギング最近傍予測独立性テスト)こちらは最近傍探索をした結果を並べ替え検定を計算して独立性を計算するようですが,配布されているプログラムが動かなかったので確認していません。こちらの論文は昨年2017年に発表になっており,非線形データの相関を計算する研究は続いているということだと考えております。色々な手法で相関係数を計算するいくつかの2次元の線形・非線形,ノイズ混入有り・ノイズ混入無しのデータを用意し,横軸と縦軸の関連性を計算してみた結果が次の表です。(各データの詳細については,文献[佐藤,2018]を御参照下さい)青い矢印は相関の無いデータであり,相関係数は小さくなければなりません。それ以外は相関があるデータで,相関係数は大きい値を取るのが正解です。数値に引いてある赤い下線は,その手法で計算した値のうち大きな値上位2つを示しており,青い下線は小さな値下位2つを示しています。分かる結果としては,次のようなものが上げられます。線形の相関がある直線のデータに対しては,全ての手法が大きな相関値を出しているノイズが混入していない人口データに対しても,全ての手法が大きな相関値を出している。ピアソンとスピアマンは-1から1の値を取るもので(他の手法はマイナスの値は取らない),プラスの値を取っていることは年代が上がるほど人口が増加するという誤った結論を出している疑似相関に引っかかっている手法が多い全ての例において,開発したR-AMICのみが期待通りの結果が出ているただし,これらの手法は互いに関係があり,最終的にはほとんど同じ精度になると思われます。相互情報量を推定するのにカーネル法を使うことがある,カーネル法の双対空間の概念は情報幾何学に他ならない,共通の情報量規準でモデル選択をすることができる,など多くの類似点があります。おわりにピアソンの積率相関係数,スピアマンの順位相関係数といった線形データに対する相関係数の計算方法に加え,非線形データに対する相関係数について紹介しました。最終結果としては微差で我々が開発したR-AMICが最も良い結果を出しているのですが,実のところどの手法も互いに関係のある沢山の理論で結びついており,どれか一つが万能で圧倒的な正確性を持つということはありません。それぞれ,計算コストや設定しなければならないパラメータなどが違いますので,やはり目的に合った手法を使わなければなりません。弊社では,これらの手法を簡単に使えるAPIを開発しておりますので,利用してみたい方がおられましたらこちらからご連絡を下さい。