PLS プラットフォームは検証なしで再調整されています + ブートストラップの使用方法は?こんにちは、
1) 私は PLS を行っており、42 個の観測値があります。 可能な予測子の数は、変数をどれだけ事前に選択するかに応じて、24、79、240 の範囲になります。 私の Y はカテゴリカルで、2 または 3 のいずれかです。 プラットフォームの起動を実行した後、NIPALS/SIMPLS 部分に進みます。使用する検証のタイプ (Kfold、leave on、eholdout) や選択した因子の数に関係なく、常にエラーが発生します。「最良のモデルは0 因子、検証なしで再調整しています。」これを解決するために何ができるか提案はありますか? 本当はPLSを使いたいのですが、検証なしでモデリングすると過学習になってしまいます…。
2) 結果が得られれば、予測式が得られます。 それをブートストラップするにはどのような手順になりますか? 結果をブートストラップする手順については多くの不確実性があります。 JMP が検証プロセスにブートストラップを導入してくれればいいのにと思います。 ブートストラップされた係数を平均する必要があると想定していますが、そのテーブルをブートストラップしてモデル全体を再実行することになるでしょうか。 k-fold 検証 (うまくいった場合)? その場合、中心化されスケーリングされたデータを使用するか、それとも元の係数を使用する必要がありますか? 結果を数式として手動で入力する必要があるため、元の係数をブートストラップする必要があると想定していますが、中心にスケーリングされたデータを使用してモデルを実行し、元の係数を提供するのか、それとも元の係数を使用してモデルを実行するのか? プロセスの観点から見ると、手順全体がまったくわかりません。つまり、必要な結果に到達するために段階ごとに何が起こるのかがわかりません。助け/洞察をいただければ幸いです。
ありがとう、
ウリエル。
予測モデリングと機械学習Re: PLS プラットフォームは検証なしで再調整されています + ブートストラップの使用方法は?こんにちは@utkcito 、
これで、「ブートストラップ」が元々何を意味していたのか理解できました。ブートストラップ プラットフォームを実行することは良いアプローチですが、ニューラル ネットワーク、GenReg、ブースト ツリーを使用して予測モデルを実行し、XGBoost アドオンを取得することもできます。検証テストセットの異なる予測式を比較するために使用します。 その際、最適なフィット感が得られるように設定を調整する必要があります。デフォルトのフィット感は必ずしも良好であるとは限りません。
ただし、ツリー アプローチの優れた点の 1 つは、モデルを作成するためにさまざまなデシジョン ツリーを使用する集約的なアプローチであることです。 要因が寄与においてそれほど重要ではない場合、それらは自動的に押し下げられ、モデル全体への寄与が高いとは示されません。 それでも、ランダムな開始と決定プロセスのため、ブートストラップ フォレストとブースト ツリーのアプローチは特に安定しているわけではありません。同じ設定を何百回も実行すると、実際にはわずかに異なる答えと式が得られることがわかります。 そのため、出力レポート (ブートストラップ フォレストなど) で "SS" または "部分" をブートストラップして、その要素がモデル内で実際にどの程度強いかをより適切に推定することが良いのです。
そうは言っても、相互検証方法を使用して、過剰適合を確実にしないようにする必要があります。 また、比較的短いデータ テーブル (測定値がそれほど多くない) では、前の返信で述べた自動検証方法を使用しない限り、leave-one-out アプローチを使用せずにそれを行うのは困難です。 K 分割相互検証も良いアプローチになるかもしれません。
入力データがどのようなものであるかはわかりませんが、それは JMP で「関数データ」と呼ばれるもののようです。スペクトルや、各波長 (または X 値) が隣接する波長と相関しているその他の等間隔のデータのようなものです。 関数型データ エクスプローラーを使用して、より適切な予測子のサブセットを生成することを検討することをお勧めします。 または、PCA は、予測子の次元を削減し、より小さい直交ベクトルのセットを使用してデータをモデル化するための優れたアプローチでもあります。
あなたのポイントについて:
1) *2 階乗アプローチから非常に多くの異なる交差項を含める理論的 (生物学的、化学的、物理的) 理由はありますか? それらを含める理論的な理由がない場合、あまり意味がなく、誤った予測子が導入される可能性があります。
2) PLS プラットフォームでは、レポートの「説明された変動の割合」で累積 Y 応答を確認することも重要です。 予測変数の線形結合が Y の応答の多くを説明していない場合、説明される変動の割合は非常に低くなります。これは、予測変数が Y の変動を説明する線形結合として特に優れた仕事をしていないことを示しています。プラットフォームはおそらくより良く機能するでしょう。 応答測定値が非常に少ない場合、これほど多数の予測変数を適合させようとすると、十分な自由度がないため、おそらく過剰適合につながるでしょう。 PLS とともに、多変量解析の因子分析プラットフォームを検討することも検討してください。 サイトカイン変数が多すぎると自由度が失われるのではないかと考えています。 2 つの点を持って直線を近似すること、または 3 つの点を持って放物線を近似することを想像してください。これはまさにこれらの多項式を近似するために必要な最小点の数であるため、完全な近似が得られますが、自由度が失われ、誤差を推定できなくなります。またはフィット品質。 これがPLSプラットフォームで起こっていることだと思います。
3) コミュニティページが最高です。 私は常にそれらをチェックしていますが、特に JMP でコーディングしている JSL スクリプトについてはそうです。 ほとんどの場合、他の人が解決したコードのスニペットが存在し、それはまさに私の仕事に必要なものです。 また、特に何か新しいことを学ぶときは、質問に目を通し、何が役立つかを考えるのも楽しいです。
幸運を祈ります!、
DS
Re: PLS プラットフォームは検証なしで再調整されています + ブートストラップの使用方法は?DSさん、こんにちは。
1) 24 ~ 237 個の変数がある理由は、まさに変数選択の量に依存するためです。 24 はブートストラップ フォレストの後なので、*2 階乗を実行できます。 237 はサイトカインのセット全体です。
2)」予測変数も応答と共変動する必要があります。そうでないと、エラーが発生します。これは、応答の変動を説明する予測変数の線形結合が存在しないことを意味します。」それについてもう少し詳しく説明してもらえますか? 私は、共分散は相互に存在し、つまり多重共線性があり、PLS はその共分散の基礎となる因子を作成することによって変数間のその共分散を使用すると考えました。 彼らが同意しなければならないと言うとき、あなたが何を言っているのか理解できません。応答。 24、79、または 237 のサイトカイン変数 (実際には長期測定の平均値、中央値、IQR です) のうち、それらの線形結合が反応の変動 (ICU での重篤な病気) を説明できないとは考えにくいです。実際、他の設定でもそうすることはすでに確立されているので、なぜJMPがそうするのか理解できません。
3) ブートストラップを運用する方法の説明をありがとう。それははるかに理にかなっていて、試してみたところ、うまくいきました。 私はいつも、JMP の正式なドキュメントが役に立たないこと、JMP の仕組みや動作させるための詳細がほとんどないこと、そしてフォーラムやチュートリアルなどが実際にどれほど役立つかに驚きます。
どうもありがとう!
ウリエル。
Re: PLS プラットフォームは検証なしで再調整されています + ブートストラップの使用方法は?こんにちは@utkcito 、
まず、PLS はデータに使用するのに最適なプラットフォームではない可能性があります。 これを GenReg または Stepwise として実行して、モデル内でどの予測子が実際に重要であるかを確認する方がよい場合があります。 予測子の数が 24 から最大 240 までの範囲にあるのは非常に奇妙だと思います。 可能な予測子の数に比べて観測値が非常に少ないため、モデルに不必要な要素を追加しすぎていないことを確認するために、実際に予測子のスクリーニングを行う必要があります。 PLS はこれを処理できますが、予測変数も応答と共変する必要があります。そうでないと、エラーが発生します。つまり、応答の変動を説明する予測変数の線形結合が存在しないことを意味します。 ただし、PLS を使用する必要があり、他に選択肢がない場合は、応答をカテゴリ (2 または 3) から順序 (2 または 3) に変更することを検討することをお勧めします。 より良い数値解が見つかるかもしれません。 を調べて使用することも強くお勧めします。自動検証予測変数の大規模なリストを確認するアプローチです。
第二に、JMP がフィッティングを実行するとき、バックグラウンドでは常に中心とスケーリングされたデータを使用して推定値のより良い値を取得し、実際の推定値を逆計算すると考えられます。 したがって、最終的に何をブートストラップするかは実際には重要ではありませんが、中心化されスケーリングされたデータよりも実際の推定ブートストラップの方が意味があり、解釈しやすい場合があります。 そしてはい、推定をブートストラップすると、実行している検証に関係なくフィッティングが再実行されます。
最後に、推定値をブートストラップするには、JMP レポートの列推定値を右クリックして、[ブートストラップ] を選択します。 速い場合はおそらく 5000 を入力しますが、遅い場合は 2500 のままにしておきます。 「分数重量」ボックスに必ずチェックを入れてください。 フィットを複数回再実行し、予測子の各係数の値の分布を取得します (出力データ テーブルで「分布」スクリプトを実行するだけです。 次に、分布と統計が表示されるので、要約統計を右クリックして「結合データテーブルにする」を選択します。 ゼロ以外の割合を表示するように概要統計もカスタマイズしてください。
結合されたデータ テーブルには、推定値の平均とゼロ以外の割合が含まれます。 ここでは、平均値 (典型的な値) と、その推定値がゼロ以外になる頻度 (パーセント単位) がわかります。その数値が小さい場合、推定値は多くの場合ゼロになります。 それが大きい場合、ほとんどの場合、ゼロではありません。 これは、モデル内でどの項が必要か、どの項が不要であるかを判断する良い方法です。
お役に立てれば、
DS