2
0

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 1 year has passed since last update.

該当レコードは学習には用いない調整済み残差でPRESSを求める(SPSS Modeler データ加工逆引き8-15)

Last updated at Posted at 2023-06-14

該当レコードは学習には用いない調整済み残差でPRESS(予測残差平方和)を求める

スクリーンショット 2023-06-14 15.20.08.png

*予測残差平方和はSPSS Statistics 29.0.1で以下の通り、標準搭載されましたがSPSS Modelerではノードを繋いで求める必要があります。

スクリーンショット 2023-06-14 17.38.41.png

1.想定される利用目的

・回帰モデルを複数作成した際の評価に利用

2.サンプルストリームのダウンロード

①一般的なスコアリングを用いる場合

②該当レコードは学習には用いない調整済み残差で求める場合(Modelerスクリプトを利用)

3.サンプルストリームの説明

①一般的なスコアリングを用いる場合

スクリーンショット 2023-06-14 16.01.26.png

a.入力するデータは以下の通りです。
スクリーンショット 2023-06-14 16.05.29.png

b.[データ型]ノードを以下のように設定します。馬力を予測するモデルを作成します。
スクリーンショット 2023-06-14 16.05.45.png

c.[線型回帰]ノードを配置して実行します。

d.モデルナゲットを右クリックして[プレビュー]を選択します。予測フィールドが追加されました。
スクリーンショット 2023-06-14 16.06.19.png

e.[フィールド作成]ノードを編集します。残差と予測の差を2乗します。
スクリーンショット 2023-06-14 16.06.35.png

[プレビュー]を実行します。
スクリーンショット 2023-06-14 16.07.04.png

f.[レコード集計]ノードを編集します。残差平方和を求めます。
スクリーンショット 2023-06-14 16.07.21.png

[テーブル]を実行します。
スクリーンショット 2023-06-14 16.07.44.png

②該当レコードは学習には用いない調整済み残差で求める場合

300回ループさせて、全レコード(行)に対して該当レコードを含まない学習データで作成した予測値と残差を利用します。SPSS StatisticsのPRESSと同じ演算方法です。

スクリーンショット 2023-06-14 16.03.27.png

g.[条件抽出]ノードを配置します。条件はブランクのまま [モード]を[破棄]にします。
スクリーンショット 2023-06-14 17.55.06.png

h.[条件抽出]ノードを配置します。条件はブランクのまま [モード]を[含める]にします。
スクリーンショット 2023-06-14 17.55.26.png

i.[フラットファイル]ノードを編集します。ファイル名とパスを指定して[データのインポートノードを生成]にチェックをして実行します。
スクリーンショット 2023-06-14 17.57.09.png

j.インポートノードが自動生成されました。先のiで指定した[データのインポートノードを生成]のチェックを外してから
後続としてeとfを複製して接続します。

Modelerスクリプトでループを設定する

スクリーンショット 2023-06-14 18.15.35.png

Pythonモードで以下のようにスクリプトを記述します。[このスクリプトを実行]を選択します。

スクリーンショット 2023-06-14 18.10.21.png

pythonスクリプト
stream = modeler.script.stream()
dis= stream.findByType("select","out")
inc= stream.findByType("select","one")
output = stream.findByType("outputfile",None)

num = 1
while num <= 300 :
    dis.setPropertyValue("condition",u"ID = "+ str(num) )
    inc.setPropertyValue("condition",u"ID = "+ str(num) )
    stream.findByType("regression",None).run(None)	

    if num == 1:
     output.setPropertyValue("write_mode", "Overwrite")
    else:
     output.setPropertyValue("write_mode", "Append")
    stream.findByType("outputfile",None).run(None)	
    num = num + 1

stream.findByType("table",None).run(None)	

ループ処理を実行する

画面の▶︎ボタンを押すと300回モデルをループしながら作成します。

スクリーンショット 2023-06-14 18.17.28.png

処理が終了するとPERSSが表示されます。
スクリーンショット 2023-06-14 18.51.34.png

注意事項

以下StatisiticsのPRESS(表示が誤訳になっています)との比較です。Statisticsの予測の少数桁数がModelerと異なった影響でわずかに差が生じました。

スクリーンショット 2023-06-14 18.56.00.png

4.参考情報

PRESSを扱った記事

Modelerスクリプトを扱った記事

SPSS Modeler ノードリファレンス目次

SPSS Modeler 逆引きストリーム集(データ加工)

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?