Edited at

scikit-learnで予測モデルの構築と交差検証 その1

More than 3 years have passed since last update.


1.予測モデルの構築

通常、予測モデルを構築・評価するためには、訓練データを使用して予測モデルを構築し、テストデータを使用してその予測性能を評価する。

この時に、解析を行うための標本データが十分ではない場合や、予測モデルの汎用性能を向上させるため、標本データをあらかじめ分割し、その一部を訓練データに、残りをテストデータとして使用する手法が採用されることがある。


2.交差検証

交差検証のうち、「K-分割交差検証」は、標本データをあらかじめK個に分割し、そのうち1つをテストデータとして使用し、残りのK-1個を訓練データとして使用する手法のこと。

実際には、K個に分割された標本データそれぞれをテストデータとしてK回検証を行い、そこから得られたK回の結果を平均して1つの推定を得る。


3.データの正規化

データの値のレベル感を調整することを「正規化」と呼ぶ。

レベル感が揃っていないと、ある項目の値が他の項目の値に比べ大きすぎたり、または小さくなりすぎたりしてしまう。

ただし、決定木やランダムフォレストといった、値の大小関係だけを見て分割するルールを生成するアルゴリズムの場合は正規化は必要なくなる。

サポートベクターマシン(SVM)などではこの正規化を行うことによって、データのレベル感を調整し、性能を向上させることが必要となる。


4.評価の基準

予測モデルは、予測と実測のクラスラベルの組み合わせを集計した「混同行列」を用いて、以下のような指標で評価することができる。

なお、ここでは予測と実測のクラスラベルの組み合わせを4分割した混同行列を

・Aと予測して実際にA(tp)

・Aと予測して実際はB(fp)

・Bと予測して実際はA(fn)

・Bと予測して実際にB(tn)

とする。


適合率

適合率はAと予測したもののうち、実際にAであった割合を定量化した指標で

tp / (tp + fp)で表す。


再現率

再現率は実際のAのうち、Aと予測したものの割合を定量化した指標で

tp / (tp + fn)で表す。


F-値

F-値は適合率と再現率の「調和平均」で定義され

2 / (1/適合率 + 1/再現率) = 2tp / (fp + 2tp + fn)となる。


正解率

正解率はAとBの両方で予測と実績が一致したものの割合で

(tp + tn) / (tp + fp + fn + tn)となる。

その2ではPythonを用いて実際に訓練データとテストデータの作成、予測モデルの構築を行ってみる。

参考

http://scikit-learn.org

http://gihyo.jp/dev/serial/01/machine-learning/0021