X と Y が一貫した関係をもつようなデータセットの作り方

説明変数 X と目的変数 Y の間で回帰モデル Y = f(X) を構築するとき、X と Y の間の関係は一貫している必要があります。下の図をご覧ください。

 

 

上の (a) の図では、X と Y の間の関係は一貫していません。X の値が p のときに、Y の値として 2通りの候補があります。この赤丸のようなサンプルは、回帰モデルを構築するときに、モデルの推定精度を下げる原因になります。一方で、上の (b) の図では、X と Y の間の関係は、一貫しています。曲線的で、非線形の関係ですが、ある一つの関係性をもって、X と Y の値が変化していることがわかります。回帰モデルを構築するときには、(b) の図のように X と Y の間の関係が一貫している必要があります。

上の (a) の図における赤丸のサンプルのように、いくつかの外れ値があるということでしたら、たとばこちらのような手法を使うことで外れ値を検出したり、

外れ値検出 (Outlier Detection) もしくは 外れサンプル検出 (Outlier Sample Detection) ~他の値・サンプルと大きく異なる値・サンプルを見つけよう!~
今回は、外れ値検出 (Outlier Detection) もしくは 外れサンプル検出 (Outlier Sample Detection) についてです。他の値と大きく異なる値を見つけたり、他のサンプルと大きく異なるサンプルを見つけたりす...
One-Class Support Vector Machine (OCSVM) で外れ値・外れサンプルを検出したりデータ密度を推定したりしよう!
今回は、One-Class Support Vector Machine (OCSVM) についてです。OCSVM は SVM を領域推定問題に応用した手法であり、外れ値・外れサンプルを検出できたり、データ密度を推定できたりします。データ密...
回帰分析のときにアンサンブル学習で自動的かつロバストに外れサンプルを見つける Python プログラムを公開します
今回は外れサンプルを検出するお話です。外れ値ではなく外れサンプルです。外れ値は、他の値と (大きく) 離れた値のことであり、外れ値がデータ解析のときに悪影響を及ぼすことがあります。ただ、回帰分析のときには、大事なのは説明変数 X と目的変数...

 

検出した外れ値に対してこちらの手法で値を補完することができます。

[Pythonコードあり] iterative Gaussian Mixture Regression(iGMR)で欠損値を補完しましょう!(目的変数があってもなくても構いません)
下図のような欠損値 (欠損データ) のあるデータセットがあるとします。穴あきのデータセットですね。 こんなときに、穴の空いたところである欠損値を補完する方法を提案します。上の図のようなデータセットを下図のようにできます。 たとえば、論文や特...

 

この記事でさらに考えることは、あるデータセット内において、X と Y の関係性が異なる複数の (サブ) データセットがあるような状況です。たとえば下の図のような状況です。

 

 

このような状況では、A のサンプル群だけ、B のサンプル群だけ、それぞれ取り出す必要があります。なお、今回は見やすいように、A を赤色で、B を青色で色分けしていますが、実際には (たとえばすべて黒色で) 色では見分けることができません。

上の図のように、X が一つ、Y が一つであれば、図示して A のサンプル群だけ、B のサンプル群だけを選ぶことはできますが、実際には X は複数ありますので、目で見て確認することができません。与えられたデータセットにおいて X と Y の関係が一貫しているサンプル群のみを取り出す必要があります。さらに、一つのサンプル群だけ取り出せばよいわけではなく、複数のサンプル群を取り出します。

図を見て分かる通り、X だけではサンプル群を分けることは不可能です。X と Y の関係性が一貫しているかどうかがカギになるので、Y を使用する必要があります。たとえば、X に変数として Y を追加してから、クラスタリングをすることで、上手くサンプル群を分けられるかもしれません。ただ、このクラスタリングにおいては、サンプル同士の類似度 (距離や相関など) に基づいて分けれれるだけで、X と Y の関係の一貫性については考慮されていません。

ちなみに、このようなデータセットの整理・作成は、ソフトセンサー解析、プロセス管理 (異常検出など) といった時系列データの解析で行われることが多いです。また、あるサンプルを考えたとき、複数のサンプル群 (サブデータセット) に含まれることを許容してもよいといえます。上の図において、A の一番右のサンプルなど、A に含まれ、かつ B にも含まれるようなサンプルがあってもよいということです。このような状況において、わたしは以下の手順でサブデータセットを作成します。

 

  1. 時間的に連続した、少数のデータセットを選択し、サブデータセットとする (たとえば 30 サンプル。このサンプルにおいては、X と Y の関係は一貫していると仮定)
  2. サブデータセットを用いて回帰モデルを構築する (基本的に非線形の手法で構築します)
  3. 次の時刻の X の値をモデルに入力して、Y の値を予測する
  4. Y の予測誤差の絶対値が、モデルを構築したデータセットでクロスバリデーションをしたときの予測誤差の標準偏差の 3 倍以内である場合、サブデータセットに追加して に移る。3 倍を超えた場合は終了する

 

あるサンプルをサブデータセットに追加するかどうかにおいて、Y の誤差が小さいということは X と Y の関係性が一貫しているということです。このようにして、30 サンプルから、一つずつサンプルを増やしながらサブデータセットを作成します。修了したら、最初の 30 サンプルの開始時刻を少しズラして、再度サブデータセットを作成します。ここでサンプルの重複を許すわけです。このようなサブデータセットの作成を繰り返します。

ご参考になれば幸いです。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました