過去の投稿に画像リンク切れ多数ありご迷惑おかけしています.

パーティションのk分割交差検証(重要)

JMPJMPではじめるデータサイエンスJMPではじめる統計的問題解決入門

先週の続きです.結論から先に言うと,パーティションのk分割交差検証はJMP16から廃止されました.先週の記事では不正確なことを書いてしまったので,今日はそれを訂正するとともに,なぜ廃止されたのかという背景や今後の対処法について考えてみます.

最初に,JMP15までのパーティションのk分割交差検証のアルゴリズムについて説明します.実は『JMPではじめるデータサイエンス』のp206に書いてあることは,正しくないことが判明しました.ここに書かれている説明は教科書通りなのでなんの不思議もないし,SAS社からも確かにこの説明を受けていたのだけど,真実はどうやら違うらしい.

理由はどうあれ,間違ったことを書いてしまったのでお詫びいたします.ただ,一般的なk分割交差検証の説明としては間違ってないし,現にステップワイズではこのとおりになっているので,ここの記述はこのままにして,注釈でもつけようかと思ってます.

それでは,どういうアルゴリズムなのかというと,データをk分割はするけれど,モデルは全体で作って,そのモデルをk個のデータセットで検証してk個のR2乗値を計算しているだけということらしい.ようするにモデルは1個だけなんです.分岐停止の判定は,このk個のR2乗値の平均を指標としているようです.

ちょっと待って.これ全然k分割交差検証じゃないじゃん.SAS社もこのことには最近まで気付いていなかったんじゃないかな?「パーティション」は古くからJMPに実装されているプラットフォームなので,もしかしたら計算負荷の低減などの理由でこの簡易的なアルゴリズムが実装され,それが今まで残ってしまっていたのでは無いかと推察します.

JMP16になって,ここに修正が入ったというより,それならばということで廃止になった...ということなんだと思います.ただ,JMP Pro 16では,教科書通りのk分割交差検証が実装されているのですよ.と言っても,Proでもパーティションにはk分割交差検証のメニューは見当たらず,先週お話しした「モデルのスクリーニング」で他に選択したモデリング手法とともにk分割交差検証が適用可能になってます.

上述したように,ステップワイズのk分割交差検証は教科書通りのアルゴリズムなのでそのまま残っているに,なぜパーティションだけが冷遇されるのか.ここからは想像ですが,SAS社は「パーティション」をモデリング手法と位置付けているので,そもそもオーバーフィッティングしやすいk分割交差検証は使って欲しくないのかもしれません.実際,「パーティション」は「ニューラル」と一緒に「予測モデル」のサブメニューに入っています.

これは,余計なお世話ですね.そもそも拙著では,「パーティション」は「モデルのあてはめ」の「モデル効果の構成」に入れる情報を取得するための手法と位置付けているので,これだけでモデルを作ろうとは思ってないです.確かにモデルも作れてしまう器用な手法ですけど,そのモデルはプロファイルで可視化して交互作用を観察するためと考えてます.

だから,オーバーフィッティングしても構わないのですよ.誤解の無いように補足すると,「列の効果」でデータを把握する目的なら,JMP15までのk分割交差検証でも十分に役立ったのです.JMP15と並行して使うのもありだけど,正直面倒かな.残念だけど,こればかりはしょうがない.なんで廃止という手荒なことをやったんだろう.JMP15以前との整合性を保つためとも思えないし.

先週も書いたように,「パーティション」の真髄は対話的に分岐していくことにあるので,この変更は歓迎すべきかもしれない.とはいっても,一度覚えてしまうとマニュアル分岐は面倒だと思うのも事実です.そこで,JMP16に移行中の拙著の読者のために,幾つかの対策を考えてみます.

1.JMP15を併用する.当面はこれが一番簡単です.

2.JMP Pro16が使えれば,上述したように「モデルのスクリーニング」から教科書通りにk分割交差検証が実行できます.

3.実は,k分割交差検証はプログラムとしては残っています.環境設定のプラットフォームから「パーティション」を選んで「k分割交差検証」のチェックを入れれば,k分割交差検証が復活します.但し,パーティションを起動すると直ちに分割数を聞いてくるので,『実行』ボタンが最初から表示されています.もちろんマニュアルで『分岐』できるので問題はありません.

4.これも実はなんですけど.裏コマンドがあってシフトキーを押しながら『分岐』ボタンを押すと,分岐数を聞いてきます.ここに,例えばサンプルサイズを入れて「分岐の最小サイズ」を1にしておけば,サンプル毎に分岐が実行され,いわゆるオーバーフィッティングモデルができます.このモデルでも「列の寄与」や「プロファイル」で交互作用の挙動を見るくらいならなんの問題もありません.

5.正攻法は,起動パネルで素直に検証セットを設定することです.例えば,0.2を入力すれば1/5のデータが検証データに使われるので,『実行』ボタンが表示されます.このとき,外れ値の影響を低減するために「分析のやり直し」を何回かやって,その結果から総合的に判断するといいです.

急いで書いたので,説明が不足しているかも.もしもこの説明ではわからないという人がいれば問い合わせてください.拙著もどこかのタイミングで修正しなければならないけど,ページを追加することは難しいので,どうしたものか考えてます.このブログに誘導するくらいしか手がないような気もする.

それではまた.

統計的問題解決研究所

コメント