2016-05-18_22h13_56

データ解析を行っていると、使っているデータセットにおいて変数 (特徴量・記述子・パラメータ) の間にどの程度の非線形性があるか知りたいときがあります。実際、何人もの方から非線形性の調べ方について質問がありました。

しかし、実は変数の数が4つ以上のときに明確な調べ方はありません

変数の数が3つまでであれば、プロットして目で見て確認することができます。直線の上にあるようなデータであれば線形といえますし、曲線の上にあるようなデータであれば変数間に非線形性があるといえます。

では、変数の数が4つ以上のときにはどうすればよいでしょうか?

一つに、線形手法と非線形手法をそれぞれ使用して、それらの結果を比べて確認する方法があります。それらの結果に違いがなければ変数間の関係は線形ですし、違いがあれば非線形です。

例えば、データセットに

  • 主成分分析 (Principal Component Analysis, PCA)
  • カーネル主成分分析 (Kernel Principal Component Analysis, KPCA)

を両方行います。例えば5つの主成分で表したきの累積寄与率を比べて、それらに違いがなければ5次元に表現されたときの変数間の関係は線形と考えられます。違いがあれば非線形と考えられます。

もう一つの例として回帰分析を行うとき、データセットに対して部分的最小二乗法 (Partial Least Squares, PLS) とサポートベクター回帰 (Support Vector Regression, SVR) を両方行います。それらのクロスバリデーション後の決定係数r2CVやRMSECVを比べ、それらに違いがなければ変数間の関係は線形と考えられます。違いがあれば非線形と考えられます。

これによって非線形性を調べられそうですね。

しかしながら問題があります。

  • 非線形性をどうやって定量的に数値で表すかわからない
  • 線形手法と非線形手法とを比べるときに、線形・非線形の差ではなく、手法そのものの差も入ってきてしまう
  • 変数の数が異なるときに、非線形性をどうやって比べればよいのかわからない

順に説明します。

線形手法と非線形手法とを比べるときに、線形・非線形の差ではなく、手法そのものの差も入ってきてしまう

例えば、PLSとSVRとを比べたとき、仮にPLSのRMSECVよりSVRのRMSECVのほうが小さかった場合、その差は変数間の非線形性からきているのか、PLSとSVRという手法としての差からきているのかわかりません

ただこの問題は、例えば線形カーネルのSVRと非線形カーネルのSVRとを比べれば解決できるかもしれません。

非線形性をどうやって定量的に数値で表すかわからない

例えば、PLSのRMSECVが0.2でSVRのRMSECVが0.1であったら、どれだけ非線形性があるの?ってことです。0.2と0.15では?0.3と0.29では?といった疑問に現状では答えられません。

0だったら完全に線形、1だったら完全に非線形、といったような指標があればよいのですが現状ではありません

そもそも、『完全に非線形』とはどのような状況を表すのかもわかりません

変数の数が異なるときに、非線形性をどうやって比べればよいのかわからない

変数の数が異なる二つのケースの間で比べるときはどうすればいいの?

そもそも比べていいの?

ってことです。

例えば、10変数のPCAとKPCAとの差と、100変数のPCAとKPCAとの差が同じであったときに、二つのケースの非線形性は同じといえるのでしょうか?


これらの3つの未解決問題は取り組むべき研究テーマといえます。