JMP > 大規模データセットからの予測シグネチャの特定 > 明らかな過剰適合の問題JMPコミュニティの皆さん、こんにちは。
臨床試験に参加した患者のベースラインにおけるバイオマーカー測定値約 4,000 個を含む大規模なデータセットがあります。このデータの中から、どのバイオマーカーの組み合わせが 12 週間後の臨床結果を予測できるかを特定する必要があります。
私はかなり単純なアプローチを使用しましたが、その結果、明らかに過剰適合した出力が生成されました。
- 4,000 個のバイオマーカーすべてをスクリーニング > レスポンス スクリーニングで実行します。レスポンスは 12 週目のバイナリ臨床出力です。
- 上位10~20のバイオマーカーを選択する(FDRに基づく)
- 選択したバイオマーカー(モデル効果として)をフィットモデル > ステップワイズプラットフォームで使用します。ここで、Yは12週目のバイナリ臨床出力です。基準 = BICを最小化します。
- モデルを生成する
このアプローチは、12 週目の臨床反応に対する優れた「予測子」 (ROC AUC > 0.940) を生成しましたが、ランダムに生成された「ダミー」変数でテストすると、高い ROC AUC も生成されました (ROC AUC ~0.870)。後者は、私の方法が過剰適合のため、非常に不適切であることを示しています。
発見と検証の患者サブグループ (全人口の 50%) を扱う実現可能性を検討しましたが、過剰適合の問題は解決されませんでした。
JMP Pro が提供する高度なモデリング プラットフォームを使用する以外に、このような質問に取り組むためのより優れたテクニックが JMP にはあるでしょうか?
助けてくれてありがとう。
最高、
TS
データの探索と視覚化Re: JMP > 大規模なデータ セットからの予測シグネチャの識別 > 明らかなオーバーフィッティングの問題例をありがとう。 いくつかの観点から、詳しく見てみましょう。 そして、彼らは同じ結論に導くはずです: データには金はありません.
最初の観点から、データをトレーニングと検証に分割します。スクリプトの結果に基づいて適合モデルを使用しようとしないでください。
2番目の視点は、訓練/値分割なしで古き良きロジスティック回帰を当てはめ、警告サインがあるかどうかを確認することです.
最初の警告サイン: モデル全体のテスト。これは、モデルがランダムな推測よりも優れている可能性が高いことを示しています。

2 番目の警告サイン: 効果テストとパラメーターの重要性。 これが効果テストです。 赤は2つだけ。 あの二人が金なら残りはガレキ。 瓦礫は私たちに金だと思わせます。 それらを削除しますか?

さて、水門ボックスの反対側から出てくるのは、次の Whole Tests と Effect Tests です。 そして、これらの p 値に注意してください。 それらは約 0.05 と 0.10 です。 フェンスの上で、通常の方法で。 それらを保持する必要がありますか? それらを削除すると、ランダムな推測が得られます。 本当に飼いたいと思って、どうなるか見てみましょう。


ROCとAUCはどうですか?

したがって、AUC は 0.59 です。 金? モデルフィッティングはモデルがフェンスの上にあると言っているので、それは通常の手段でもフェンスの上にあると思います。 証拠が必要ですか? はい、証明できます。 JMP Pro をお持ちの場合は、AUC 値をブートストラップできます。 AUC 値を右クリックし、[ブートストラップ] を選択します。 私はそれに10000のドローを与えました。 0.5 はブートストラップ サンプルの範囲内です。 したがって、残りの2つの要素が金であるとどれだけ信じたいかということになります.

私が行ったことは、AUC の周りにブートストラップ信頼区間を置くことです。 ROC の周りにも信頼区間を作ることができるので、素敵なハーフ シェルはそれほど印象的ではないことがわかるかもしれません。 ただし、そうするには多大な労力が必要です。 代わりに 1 つのポイント ROC を見てみましょう: 0.5 カットオフしきい値に対応するポイントです。 手順は次のとおりです。
まず、Confusion Matrix をオンにします。

強調表示された数値を見てください。それらは、カットオフしきい値 0.5 に対応する真陽性率と偽陽性率です。
次のスクリーンショットの十字のように、ROC でこの点を見つけることができます。

ハイライトされた数値をブートストラップします。 そして、列「0」がブートストラップされた偽陽性率であり、列「1」がブートストラップされた真陽性率であるこの表を取得します。

列「1」と列「0」をプロットし、ROC に重ねます。 そして、ここに私が得るものがあります。 参考に対角線も入れておきます。

ブートストラップ サンプルによると、ROC の確率 0.5 しきい値ポイントは、対角線上では大きな可能性がありましたが、対角線の下では無視できない可能性があります。 モデルからすでに結論を出す必要があるとすれば、それは垣間見えることです。
したがって、この例から私が結論付けたいのは、モデルのオーバーフィットを結論付ける前に、モデルを本当に釘付けにする必要があるということです。 この場合、効果としてランダム ノイズを含めると過適合になります。
Re: JMP > 大規模なデータ セットからの予測シグネチャの識別 > 明らかなオーバーフィッティングの問題謎に追加するために、私が行ったシミュレーションを添付しました。今回はバリデーションカラムを使用しました。注目すべき点: ロジスティック回帰 (ファイルに保存されたスクリプト) は、トレーニング データの AUC が約 .71 であり、検証データの AUC がはるかに低い (.5 未満) ことを示しています。これはオーバーフィッティングの明らかな証拠です。ただし、モデルのスクリーニングも実行しました。すべての方法 (ロジスティック回帰を含む) で、トレーニング データの AUC は約 0.5 で、検証データの AUC はそれよりも低いことがわかりました。さらに、ロジスティック回帰モデルは有意ではありません (20 の確率因子に対して期待されるものについて、1 つまたは 2 つの因子のみが有意です)。私が理解できないことの 1 つは、モデル スクリーニング プラットフォーム内のロジスティック回帰プラットフォームとロジスティック回帰がなぜこのように異なる結果をもたらすのかということです。モデルのスクリーニングでは、個々のモデリング プラットフォームほどチューニング ハイパーパラメータが見つからないことを私は知っています (または信じています) が、トレーニング データの 0.7 と 0.5 の差は私には大きすぎるようです。
Re: JMP > 大規模なデータ セットからの予測シグネチャの識別 > 明らかなオーバーフィッティングの問題答えはわかりませんが、あなたが見つけたことを確認できます。バイナリ応答変数 (ランダム) と、200 個の観測値を持つ 20 個のランダム正規因子を作成しました。AUC=.71になりました!本当に驚くべきことだと思います。パフォーマンスの尺度としての AUC の制限と関係があるのではないかと思いますが、前述したように、この動作はよくわかりません。私の場合、過適合であってはなりません。他の人がこれについて何を言うことができるかを知りたい.
Re: JMP > 大規模なデータ セットからの予測シグネチャの識別 > 明らかなオーバーフィッティングの問題こんにちはデール
この比較的オープンな質問をフォローアップしていただきありがとうございます。 次の式を使用して確率変数を作成しました。
random uniform (0,1) > 0.5;
注目すべきは、ダミー変数の 8 つの異なるバージョン (つまり、式の再計算) で上記の「方法」を実行したところ、0.770 から 0.870 の範囲の ROC AUC 値が得られたことです。
私はそのような行動に出くわしたことはありませんが、1,200 を超えるバイオマーカー変数を扱ったことはありません。
ご協力いただきありがとうございます。
一番、
TS
Re: JMP > 大規模なデータ セットからの予測シグネチャの識別 > 明らかなオーバーフィッティングの問題ランダムに生成された応答変数について、もう少し詳しく教えていただけますか?具体的にどのように作成したのですか?