2016-06-22_21h18_44

みなさんは、あるデータセットが与えられたときに、モデル構築用データセットとモデル検証用データセットをどう分けてますか?ランダムに分けていますか?

ランダムに分けている方がほとんどです。ただ、ランダムに分けると、特にデータセットのサンプル数が小さいときに、モデル構築用データセットとモデル検証用データセットとで偏りがあることもありますよね。これでは、たとえばモデル検証用データセットのサンプルをぜんぜん正確には推定できない、といった誤った結論におちいってしまう可能性があります。これは避けたいです。

また、ランダムに選んでいるので、毎回結果が異なってしまうのも変な感じです。

なので、もう少し工夫してモデル構築用データセットとモデル検証用データセットとを分けましょう。モデル構築用データセットのサンプルは、なるべく広くばらついている方がよいですよね。これによって、広いデータ領域における説明変数 (記述子・特徴量・入力変数) と目的変数との関係を求められます。

そのようなモデル構築用データセットのサンプルを選ぶには、ズバリKennard-Stone (KS) アルゴリズムを使いましょう!

Kennard-Stone (KS) アルゴリズムのメリット

KSアルゴリズムは、すべてのサンプルの中からまんべんなくサンプルを選ぶアルゴリズムです。つまり、データセットのサンプル全体から、なるべくばらつきが大きいようにサンプルを選ぶことができます。そして選び終わったら、

  • 選ばれたサンプル → モデル構築用データセット
  • 選ばれなかったサンプル → モデル検証用データセット

とします。これで、モデル構築用データセットとモデル検証用データセットとが偏ることはありません。さらに、乱数を用いていませんので、毎回同じ結果になります。

Kennard-Stone (KS) アルゴリズムとは?

具体的にKSアルゴリズムは、以下の手順になります。

  1. データセットのサンプルの平均を計算し、平均とのユークリッド距離が一番大きいサンプルを選択する
  2. まだ選択されていない各サンプルにおいて、これまで選択されたすべてのサンプルとの間でユークリッド距離を計算し、その距離の最小値を代表距離とする
  3. 代表距離が最も大きいサンプルを選択する
  4. 2. と3. を繰り返す

これによって、必要なサンプル数になるまでサンプルを選択します。

たとえばモデル構築用データセットであれば、もちろんすべてのサンプル数にもよりますが、モデル構築用データセットのサンプル数はすべてのサンプル数の 2/3 程度がよいでしょう。

また上では『ユークリッド距離』で説明しましたが、『マハラノビス距離』や『1-タニモト係数』など、サンプル間が類似しているほど値が小さくなる指標であれば何でもOKです。

Kennard-Stone (KS) アルゴリズムのデメリット

KSアルゴリズムは、データセットにおけるすべてのサンプル間の距離を計算しなければなりません。なので、サンプル数が膨大になったときに、パソコンのメモリによっては計算できない可能性もあります。注意してください。

Kennard-Stone (KS) アルゴリズムのプログラム公開中!

KSアルゴリズムを実行するプログラムはこちらにあります。noteでもSPIKEでもAnyPayでも言語が同じであれば同じものです。

MATLAB言語(note): https://note.mu/notes/n15980a97db70

MATLAB言語(SPIKE): https://spike.cc/shop/univprof/products/NSToCvga

MATLAB言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/efSwVk2wfi

R言語(note): https://note.mu/notes/n3eb279935738

R言語(SKIPE): https://spike.cc/shop/univprof/products/AZaXzeAQ

R言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/pua5ZIzdh5

Python言語(note): https://note.mu/univprof/n/n768be1252865

Python言語(SPIKE): https://spike.cc/shop/univprof/products/yT6I0bmJ

Python言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/g3LfVIpQvh

まとめ

みなさんも、偏りなくモデル構築用データセットとモデル検証用データセットとを分けるため、ぜひKSアルゴリズムを活用しましょう。さらに、サンプル数が多すぎてデータ解析・分析に時間がかかりすぎてしまうときは、KSアルゴリズムを使ってサンプルを選択してから解析・分析する、といったことも行われます。

ぜひKSアルゴリズムで快適にデータ解析・分析してください!

ご案内。

オススメ記事セレクション。

twitterでも発信中。

フォローしていただけると嬉しいです。


無料メルマガでブログにない情報を配信中。

無料メルマガの登録はこちら