3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SPSS Modelerでクロスバリデーションをする

Last updated at Posted at 2021-04-16

SPSS Modelerでクロスバリデーション(交差検証)を行ってみます。

■テスト環境
Modeler 18.2.2
Windows 10

サンプルストリーム

#1. ホールド・アウト法
クロスバリデーションを説明する前にホールド・アウト法を確認しておきます。通常SPSS Modelerではホールド・アウト法でモデルの頑健性を確認することが多いと思います。
データを学習データとテストデータに分けて、テストデータでの精度やAUCを比較し過学習をしていないか、未知のデータに対しても性能が期待できるかを確認する方法です。

例えば、学習データを70%、テストデータを30%にわけ、70%の学習データでモデルを作成して、テストデータで精度やAUCを確認します。
学習データでに精度(例では80%)とテストデータでの精度(例では76%)を比較して、下がり過ぎていないか、十分な精度かを確認して、本番適用すべきかを考えます。

image.png

Modelerではデータ区分ノードでホールド・アウトの割合を決めて、精度分析ノードで確認します。
image.png

#2. クロスバリデーション
しかしながら、

  • そもそも学習に使えるデータが少ない場合
  • 判別したいカテゴリの割合がデータが少ない場合(めったにコンバージョンしない、故障しないなど)
    テストデータを準備することが難しいことがあります。

こういう時にクロスバリデーションを使います。

クロスバリデーションではスコアリングモデル自体は全データをつかって作成します。
そして、データをK個に分割してK個パターンの検証用学習データと検証用テストデータをつくり、それぞれで検証用モデルとテストデータ精度を算出し、その平均で元々のスコアリングモデルを評価します。

以下の図で解説します。
まず、全データを学習データとしてモデルを作成しました。この学習データの精度は81%になっています。
そしてその学習データを3分割し、3パターンの検証用学習データと検証用テストデータをつくり、3つのモデルを作って、3つのテストデータ精度を算出して、その平均として、全体精度73%を計算しています。未知のデータに対しては、学習データでの精度である81%よりも、クロスバリデーション結果の精度である73%に近い性能のモデルだろうと考えることになります。

image.png

Modeler 18.2.2の自動分類ノードのクロスバリデーションの機能を使ってこれを行ってみます。

自動分類ノードのモデルタブで交差検証にチェックをつけて、分割数を入力します。ここでは上の例に合わせて3にしています。(デフォルトは5です。)
image.png

次にエキスパートタブで使いたいモデリング手法を選びます。ここではCHAIDを選びました。クロスバリデーションが目的であれば、通常は一つのモデリング手法を選び、モデルを作成します。
image.png

できたモデルをみるとクロスバリデーションで算出された精度とAUCが表示されます。
image.png

なお、このモデルの中身を見た場合はスコアリング・モデルが表示されます。ルートノードをみると全件が対象になっているのがわかります。一つ一つの検証モデルを参照することはできません。

image.png

また、このモデルの精度分析ノードでの結果は全データをつかって作成したスコアリングモデルの精度やAUCが表示されます。

image.png

#3. クロスバリデーション(数値予測)
数値予測についても、自動数値ノードによってクロスバリデーションが行えます。

モデルタブに交差検証のチェックがあり、分割数を指定できます。
image.png

エキスパートタブで使いたいモデリング手法を選びます。

image.png

作成されたモデルをみると検証用モデルに対する、相関(予測値と実測値)と相対誤差(1-R2乗)の平均が表示されますので、これでモデルを評価します。
image.png

やはり、精度分析ノードで確認する指標は全データでつくったスコアリング・モデルに対する指標になります。
image.png

#4. Modeler 18.2.2より前のバージョンでのクロスバリデーション
自動分類ノードと自動数値ノードで行うクロスバリデーションはModeler 18.2.2からの機能です。

しかしながら、C5.0には交差検証の機能は以前のバージョンから可能でした。
image.png

それ以外のモデルで交差検証を行う場合にはスクリプトで行うことができます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?