データをシミュレーションしてモデルを構築するためのより大きなデータセットを生成するJMP コミュニティの皆様
構築中のモデルをより適切にトレーニングするために、シミュレートされたデータを生成する方法を見つけようとしています。
数千のデータポイントという適切なサイズのデータセットがありますが、モデルを改善するために、元のデータと同様の構造を維持するシミュレートされたデータを生成したいと考えています。 予測モデルをトレーニング、検証、テストするためのより大きなセットを用意するために、同様の構造を持つ約 20,000 ~ 50,000 のデータ ポイントが必要です。
視覚的に説明するため、データは次のようになります。

プロファイラー プラットフォームの「シミュレーター」機能を使用しようとしましたが、そこで生成されたデータは元のデータと同様の構造 (変化) を保持していません。標準ではあまりにも「洗い流されて」しまいます。入力と応答からの逸脱。 このセットからモデルを構築し、ソース データの元のモデルと比較しようとすると、元のモデルの方が予測のデータの構造を維持しているため、元のモデルのスコアが上回ります。 シミュレートされたデータセットから生成されたモデルは、基本的にすべての構造が失われているため、そうではありません。
また、「シミュレート」機能 (レポート ウィンドウで列を右クリック) を使用しても、希望する場所に到達できません。
私は人々が JMP を使って何をしたかについて少し調査し、いくつかの潜在的な手がかりを見つけましたが、今のところ私が探しているものを実際に追跡している人はいません。誰かがこれに対する解決策を持っている場合、またはそれをコード化する方法について正しい方向を教えてくれる場合は、感謝します。
ありがとう
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは@Mark_Baileyそして@Peter_Bartell 、
フィードバックを提供し、このトピックに関する議論を続けるために、ARIMA プラットフォームを使用して妥当なモデル データを取得することができました。 同様のデータセットを再作成するのはうまくいきますが、予測は苦手ですが、それは問題ありません。 このモデルからの予測式を適用すると、実際のデータセットでかなりうまく機能するため、潜在的に有用な前進の道が得られます。
これが最終的に私が希望する方法であるとは確信が持てないので、JMP 内の他のシミュレーション オプションと比較したいと思います。 プロファイラーからの確率的シミュレーションが役に立たないことは、以前に説明した理由からわかっています。 さらに、これは、私が希望しているフィッティングを改善するためにモデルを調整するための最良のアプローチではありません。
私の特定のモデリングでは、ブートストラップ フォレスト モデルを使用しており、モデルを調整して改善したいと考えています。 私は部分的にチューニングテーブルを使用してこれを行いました。 ただし、これに関してはいくつかの制限があり、特にチューニング テーブルで (メモリ的に) 実行できる回数には制限があります。 私は通常、チューニング テーブルで余裕のある回数だけモデリングを実行します。 これにより、フォレスト内のツリーの数、分割ごとにサンプリングされる用語の数、ブートストラップ サンプル、ツリーごとの最小分割数、および分割の最小サイズが絞り込まれます。 これは、解決策を見つけるためにモデル プラットフォームのパラメーターを最適化するのに役立つ可能性がありますが、必ずしも私が持っているデータに基づいて最適化されたモデルを意味するわけではありません。
モデルを構築するときは、応答列によって階層化されたトレーニング セットとテスト セットに分割する検証列を作成します。 次に、モデルの検証のために特定の % を抑制したトレーニング データのみに基づいてモデルを構築します。 モデルの出力は、選択した検証列によって異なります (いくつか作成しました)。 典型的な出力を以下に示します (応答列または因子列の情報を共有できないのは申し訳ありません)。 ブースストラップ フォレストの仕様の詳細は、元のトレーニング データと検証データがどのように階層化されたかに応じて変わります。

私が今興味を持っているのは、おそらくモデル統計量のシミュレート オプションを使用して、モデルを調整して適合性を向上させることです。 これは、トレーニング セットと検証セットの N を変更するか、個々のツリーの RMSE などによって行うことができます。 このアプローチを使用してブートストラップ フォレストの仕様を変更できないことはわかっていますが (チューニング テーブルがそれを行います)、モデル (数値など) をチューニングできる方法で使用したいと考えています。 r^2 を最大化するために、トレーニングと検証に使用されるサンプルの数、または分割の数。
要約すると、データのトレーニングに役立つシミュレーション手法を使用したいと考えています。 プロファイラーからのシミュレート プラットフォームが機能しないことはわかっています。そのため、モデル統計には ARIMA (可能) またはブートストラップ シミュレート オプションが残ります。 モデルを調整するために後者のシミュレーション方法を最適に使用する方法がわかりません。
シミュレーションによるモデルの調整に関するご意見やフィードバックをいただければ幸いです。
よろしくお願いいたします。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは@GM 、
ご意見とご提案ありがとうございます。 多変量データの意図された目標と説明については正しいです。 データが生成される順序は、適切な予測因子とはならないようです。 他にも測定されるプロパティがあり、これらを集合的に使用すると、モデル/予測したい「y」の合理的な予測が提供されます。 より適切になるようにモデルをトレーニングしようとするときに問題が発生します。 データをシミュレートしてこれを実行したいと考えていますが、これは予想していたよりも困難であることが判明しています。
MVN アプローチは、プロファイラーのシミュレート オプションよりもデータの多変量相関の一部を保持する点で優れています。 このオプションは、指定された標準偏差で平均を作成するだけです。
残念ながら、MVN スクリプトと生成されたデータを使用してモデルを構築しようとすると、元のデータのみから構築された同様のモデルよりもパフォーマンスが大幅に低下します。
これまでのところ、ARIMA モデルは、データの短期的な変動だけでなく、より長期的な範囲の構造の一部も捉えるのに優れていることがわかりました。 また、データの予測の予測もうまくいきませんが、私が考えているのは、これを使用して元のデータに追加される新しいデータを生成し、より大きなデータセットを構築し、そのより大きなデータセットでモデルをトレーニングすることです。
これから試してみようと思うのは、ARIMA レポートから「列を保存」し、予測値を抽出して、それを元のデータ テーブルと連結することです。 次に、新しいデータ テーブルの行をランダム化し、そのより大きなデータ セットを使用してモデルを構築したいと思います。 別のオプションとしては、複数の検証列を生成し、異なる相互検証行で同じモデルを実行し、結果のモデルを平均することも考えられます。
この議論に対するすべての貢献に感謝します。 適切な解決策はまだ見つかっていませんが、多くのことを学び、いくつかの新しいアイデアを考え出して試しています。
ありがとう!
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーション議論によると、他の予測変数を使用してモデル化したい結果変数があるようですが、時間やデータが生成される順序は予測変数ではありません。多変量正規分布を使用して、NxP (N= 行、P = 変数 (y および x )) 行列をシミュレートしたい場合があります。このリンクは、多変量正規分布をシミュレートするための JSL を提供します。 http://www.jmp.com/support/notes/36/140.html推定された共分散行列に基づいて変更する必要がありますが、データが多変量正規分布に従っている場合は機能するはずです。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは@Mark_Bailey 、
適切な予測変数には間違いなくいくつかの欠陥がある可能性があります。 しかし、私たちが行った他の分析に基づくと、私たちが検討した他の多くのセットよりも、私たちが行ったセットの方が間違いなく適しているようです。
複雑さと相互検証に関しては、私はそれを確実に考慮します。 過学習のリスクを軽減するために、トレーニング/検証/テスト列を生成します。 ブートストラップ フォレスト モデリングは、一般化回帰モデルやニューラル ネット モデリングなどよりもはるかに広範囲にわたるかなり複雑な決定木予測式を生成します。 モデルを相互に比較するときもパフォーマンスが向上します。 通常、調整行列を使用してブートストラップ フォレスト プラットフォームを実行すると、約 60 以上のツリーがあり、分割ごとに最大 4 つの項がサンプリングされていることがわかります。 用語ごとの分割数はさまざまですが、多くの場合、1,000 から 3,000 の範囲になります。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションまず第一に、ARIMA およびその他の時系列モデルは、短期的な摂動といくつかの周期的な傾向を前提としているため、長期的な予測には適していません。
現在のモデルの「適合性の欠如」問題 (観測された応答の極端な変動が予測に欠けている) は、データを追加しても解決できない可能性があります。 十分な予測子が不足している可能性があります。 バイアスを減らすための 1 つの方向は、現在の特徴セットを使用して基底拡張にさらに多くの項を含めることです。 いくつかのモデリング手法について言及していますが、調査したこれらのモデルの複雑さについては何も述べていません。 複雑さが増すと、過剰適合のリスクが交差検証によって対処され、バイアスの問題が解決される可能性があります。 バイアスを軽減するもう 1 つの方向は、観察された応答からの逸脱を最終的に説明する欠落している特徴を探すことです。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは@Mark_Bailey 、
最終的には、入力される要素を考慮して将来の値を予測する強力なモデルを構築したいと考えています。 ARIMAとFDEについて調べてみました。 FDE がおそらく適切なアプローチではないことに私も同意します。 ただし、ARIMA モデリングは、モデルをトレーニングするための新しいデータを生成するための経路を提供する可能性があると思います。
いくつかの要素は、応答とほぼ並行して測定されます。 すべての測定はソース材料を使い果たしますが、他の測定を実行できるようにするために大量のサンプルがサンプリングされます。私たちは、最も強力な予測能力を持つ一連の要因を特定しました。 これらの係数と応答を使用して、一般化回帰法、ブースト ツリー、ブースストラップ フォレスト、ニューラル ネット、その他の分割手法を使用して、いくつかの異なるモデルをチェックしました。 モデルを比較すると、ブートストラップ フォレストが他のフォレストよりも一貫して優れたモデリング結果を提供していることがわかります。 テストを控えて調整テーブルを使用してモデルを実行し、フィット パラメーターを最適化することで、このモデルをさらに改善できます。
しかし、それでも私が感じているのは、このモデルは実際にはデータの高値と安値を、私たちが期待している(またはできる)と考えているほどには捕捉していないということです。 構造の一部をキャプチャしますが、高音と低音を取得するのはそれほど得意ではありません。 したがって、より良いモデルを構築するために、より多くのイベントを含む大規模なデータセットをシミュレートしたいと考えています。 また、実際の値のデータセットを実際に構築するには長い時間がかかるため、モデルをトレーニングするためのデータのシミュレーションが役立ちます。
この点では ARIMA プラットフォームが役立つと思います。 因子と応答の予測値を生成するためにテストしてみました。 これにより、実際のデータを模倣した因子と応答の新しい値のセットが生成されます。 次に、シミュレートされたデータと実際のデータを新しいデータ テーブルに連結して、2 倍の大きさの新しいデータ セットを生成できます。
残念ながら、ARIMA モデリングは因子や応答の多くの新しい値をうまく予測できないため、予測期間の生成に実際に使用することはできません。 それでも、シミュレートされたデータセットを構築するためのこの代替アプローチは役立つかもしれないと思います。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションより多くのデータをシミュレートすることが役立つかどうかは明らかではありません。 データをシミュレートできれば、データのモデルが得られます。 「構造」は母集団の変化です(平均が一定のモンテカルロ シミュレーションでは再現されません)。
この応答と同時に予測変数 (因子) の候補を測定していますか? 相関関係、関連性、考えられるモデルを調べたことがありますか?
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは@Peter_Bartellそして@Mark_Bailey 、
この問題についての議論は、分析を改善する方法についてのアイデアを与えてくれるので、本当に感謝しています。
データはプロセスから取得されますが、リアルタイムではありません。 これらはデータベースに収集され、後でアクセスされます。 各ポイントが前のポイントの後に本当に連続しているかどうかは保証できません。 通常、ポイント間には時間間隔がありますが、プロセスに数時間または数日の中断がある場合、データベースは中断したところから再開します。 したがって、厳密には時系列ではありません。 ただし、実際には、ARIMA モデルが実際のデータと同様の応答を再現できるのであれば、これで十分なはずです (私はそう思います)。
データは同じソースからのものです。 プロセスからサンプルが採取され、測定が行われます。
自己相関の推定はまだ試していません。 実際のデータを模倣した入出力データを生成するには、モンテカルロ シミュレーションが最適な方法かもしれません。 JMP で MC シミュレーションができるとは知りませんでした。 以前にも他の問題でこれらのことを行ったことがありますが、JMP は使用していませんでした。 これらは私が調べなければならないことです。
目標は、応答を適切に予測できるモデルを開発することです。 これにより、要因だけを (より簡単に) 監視できるようになりました。 モデルが警告を予測する場合は、より困難な取り組みを実行できます。
FDE と ARIMA については読む価値があると今でも思っています。いくつかのアイデアが生まれるかもしれません。 私のやや曖昧な説明が意味をなすことを願っています。 開示に関する懸念についてご理解いただきありがとうございます。
ありがとう
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーション同意する@Mark_Bailey上記の最後の段落...以前の投稿で述べたように...これまで共有した内容から...FDE または時系列分析があなたの目標に最も適切なアプローチであるとは思えません。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションデータは時間順にプロットされていないということですか? それらは同じソース (単一ソース) からのものではありませんか?
各測定値は独立していると言うとき、たとえ 1 の遅れであっても、自己相関を推定したことがありますか? 「独立した」とはデータが別々に収集されたことを意味するかもしれませんが、私は統計的な独立性、つまり相関関係の欠如について話しています。
シミュレートされたデータは私が期待したものです。 安定した平均と分散を持つ単一の母集団が存在します。 モンテカルロ シミュレーションには、因子と応答の両方に対するランダムな摂動が含まれます。
データには見られるがシミュレーションには見られない「構造」は、他の「推定可能な原因」の結果です。 原因は、時間的にも規模においてもランダムに発生する可能性があります。 シミュレーションには彼らの貢献を含める必要があります。 それらが何であるか知っていますか? それらはどのようにして起こるのでしょうか? それらをモデル化するにはどうすればよいでしょうか?
測定の本当の性質や詳細を開示できないことは理解していますが、データと何を行っているかについての感覚を与えるために、たとえ話を使用できるかもしれません。 たとえば、原子力潜水艦内の 3 本の魚雷発射管の圧力を時々測定しているかもしれません...
実際のデータのシミュレーションをお手伝いできると仮定すると、そのデータに対してどのような分析やモデリングを使用する予定ですか?
Peter は非常に役に立ちますが、問題についてさらに詳しく知るにつれて、これらの提案が役立つかどうかは疑問です。 関数データ分析は、関数、プロファイル、または曲線を対象としています。 何百ものデータ系列のサンプルがあり、その形状と、その形状が要因によってどのように影響を受けるか、またはその形状が結果をどのように予測するかをモデル化したいとします。 拡張したいデータ シリーズが 1 つあるようです。 FDA は、元の領域を超えて予測することはありません。 ARIMA モデルは等間隔の点を前提としています。 自己相関、摂動、季節性をモデル化して、遠くない将来を予測できます。 一方、ARIMA モデルに基づくモンテカルロ シミュレーションは可能です。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーション@SDF1 : あなたの「長距離構造」というフレーズには、さまざまな風味、ニュアンス、問題が含まれている可能性があります。 たとえば、季節性は構造の 1 つの形式である可能性があります。 ARIMA 時系列手法は、季節性の影響やプロセスにおける長期的な傾向や周期的な動きをモデル化するのに非常に適しています。 JMP サンプル データ ディレクトリのクラシック seriesg.jmp データ テーブルを参照してください。
まず最初に、JMP ドキュメント内の JMP/JMP Pro の機能を読むことをお勧めします。 FDE のリンクは次のとおりです。
https://www.jmp.com/support/help/14/function-data-explorer.shtml
時系列分析のリンクは次のとおりです。
https://www.jmp.com/support/help/14/time-series-analysis.shtml
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは、ピーターさん
これらのプラットフォームのいずれかで長距離構造を維持できますか? 私は今後もそれらを読み続けます。独自のソリューションのコーディング方法に関するアイデアが得られるかもしれません。
ありがとう!
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーション観察が時系列ではないことを考慮して、Functional Data Explorer または時系列分析に関する以前の推奨事項を撤回します。 どちらの手法も、観測間の時間にわたる何らかの構造を前提としています...そしてこれらの観測は互いに独立しているため...FDE または時系列の使用は推奨されません。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションハイマーク、
データは時間に依存しません。 各測定は前の測定とは独立していますが、一般にデータは次々に収集されます。 これらは時系列であると考えることができますが、技術的には連続的ではない可能性があるため、厳密にはそうではありません。 しかし、さらに重要なのは、各測定値が応答の独立した測定値であることです。
下の図で、シミュレーションされたデータが構造を失っていることについて私が言いたいことを説明していただければ幸いです。

プロファイラーでシミュレーターを開き、各予測子 (いくつかあります) に現実的な SD (実際のデータから導出された) の正規分布を与え、50K の応答を含むテーブルを生成することで、これを生成しました。 平均、最大値、最小値は元のデータに近い可能性がありますが、他の構造は失われます。 この新しいデータ セットには、元のデータ セットと同じ種類の「長距離」構造が含まれていません。この構造は、データの実際の値と同様に、シミュレートされたデータ セットでキャプチャすることが重要です。 完全に一致する必要はありませんが、少なくとも同様の構造を持っています (比較については元の投稿を参照してください)。
JMP に組み込まれている 2 つのシミュレーター オプションが適切ではないことに同意します。 列の式やスクリプトの作成について参考にする特定のトピックについて何か提案はありますか? 私は、これを処理できる組み込みの公式を知りません。 このようなスクリプトを作成するのは問題ありませんが、どこから始めればよいのかを知る必要があります。 関数データ エクスプローラーと ARIMA モデリングに関する Peter Bartell からのもう 1 つの提案を調べて、それらが処理できるかどうかを確認する必要があります。
ありがとう!
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションでは、応答は時間に依存する信号なのでしょうか? 予測因子はあるのでしょうか、それとも重要なのは自己相関なのでしょうか?
どういう意味 "残念ながら、プロファイラーのシミュレーション機能を使用してより大きなデータ セットを生成しようとすると、新しい出力データには元のデータの関連構造がまったく表示されません。 」 望ましい構造の性質は何ですか?
データは時系列とどう違うのでしょうか?
Prolfier または JMP Pro Simulate プラットフォーム機能のシミュレーターがあなたのニーズを満たすとは思えません。 列式またはスクリプトは、おそらく最も満足のいくアプローチです。
一部の詳細は公開できないので (了解)、「20 問」をプレイする必要があります。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションハイマーク、
コメントしてくれてありがとう。
生成されるデータは非常に遅いです。つまり、実際に元のデータを取得するまでに数日、数週間かかるということです。 したがって、50K のサイズのデータセットを構築することは現実的ではありません。 私は Pro (Pro 14.1.0 を実行) モデリング関数の一部を使用して、データを適切に予測するだけでなく、データ内の構造も捕捉するモデルの生成を試みています。 元の構造を模倣するより大きなデータセットがあれば、モデルを改善するのに非常に役立ちます。 サンプル サイズを増やし (トレーニング、検証、テスト サイズの拡大も含む)、データの構造をキャプチャすることは、より優れたモデルをトレーニングするのに役立つでしょう - 少なくとも私は思います。
厳密には時系列ではありませんが、そのように見ることもできます。 データ イベントは必ずしも時間的に相互に結びついているわけではありません。 別の投稿者は時系列分析を提案したので、それを検討してみます。
残念ながら、プロファイラーのシミュレーション機能を使用してより大きなデータ セットを生成しようとすると、新しい出力データには元のデータの関連構造がまったく表示されません。 非常によく適合する新しいモデルをその上に構築できますが、元のデータを使用して新しいモデルを元のモデル (元のデータに基づいて構築) と比較すると、新しいモデルはそれほどよく適合していません。
申し訳ありませんが、これ以上具体的には言えませんが、データの詳細についてはお話しできません。 私のコメントがあなたが指摘した点を理解できることを願っています。
ありがとう!
私がやりたいことからすると、プロファイラーのシミュレーション機能は正しい方法のように思えますが、それでは私が得ようとしているものは得られません。 Platorm シミュレーションは間違いなく正しい方法ではありません。少なくとも、私が求めているものを得るためにそれを調整する方法はわかります。
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションこんにちは、ピーターさん
コメントありがとうございます。 元の投稿に、JMP Pro 14.1.0 を実行していることを追加するのを忘れていました。
次のアップデートの公開まで待たなければならないかもしれませんが、少なくともある程度の内容を読んでフォローアップすることはできます。
ありがとう!
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションまず第一に、モデルを改善するためにシミュレートされたデータをどのように使用しますか? 特定のモデリング アプローチの実現可能性を実証するのに十分なデータが必要ですか? 特定のモデルに十分なサンプル サイズを評価するためですか? 単にサンプルサイズを増やすだけなのでしょうか?
次に、単一の時系列があるように見えます。 その解釈は正しいでしょうか?
第三に、プロファイラーのシミュレーション機能は、適合または保存されたモデルで動作することを目的としています。 予測変数と応答の変動は、パラメトリック分布モデルの観点から説明できます。 そのメカニズムが時系列モデルで機能するかどうかはわかりません。 (他の専門家がここに参加することもできます。)
プラットフォーム シミュレーションは、確率コンポーネントを含む保存モデルに基づいてデータをリサンプリングし、プラットフォームで選択された統計の経験的なサンプリング分布を生成することを目的としています。
SAS プログラムを入手して、JMP 列の式またはスクリプトに適用できる時系列データをシミュレートできると思います。 (約束はできません。)
私は正しい道を進んでいますか?
Re: モデルを構築するためのより大きなデータセットを生成するためのデータのシミュレーションJMP Pro バージョン 14.2 をお持ちの場合、問題は Functional Data Explorer に最適なアプリケーションのように思えます。 別のオプションとしては、何らかの ARIMA 構造を使用した時系列モデリング アプローチが考えられます。 時系列アプローチには JMP Pro は必要ありません。