JMP で制約付き応答 (出力の合計 = 1) を持つ線形または非線形モデルを構築するにはどうすればよいでしょうか?多くの場合、カテゴリ間の割合を表す連続応答変数をモデル化する必要があります。この場合、各サンプルの応答の合計は 1 になる必要があります (例: P1=10%、P2=25%、P3=35%、P4=30%)。
Python では、softmax 出力層を使用して、合計が 1 になる制約を適用します。
- 予測される応答の合計が 1 になることを保証しながら、JMP でこのようなモデル (線形またはニューラル ネットワーク) を構築するにはどうすればよいですか?
- 推奨されるワークフローはありますか (例: 多項式ロジスティック回帰、適切なリンク関数を備えたニューラル ネット)?
- 最後に、各カテゴリの予測割合を表示するプロファイラー(クラス確率を表示するカテゴリプロファイラーに似ています)を入手できますか?
アドバイスや例があれば教えていただけると嬉しいです!
高度な統計モデリングRe: JMP で制約付き応答 (出力の合計 = 1) を持つ線形または非線形モデルを構築するにはどうすればよいでしょうか?こんにちは、
おそらくあなたが探しているものを実行するための非常に簡単な方法は、最高の y 値に対応する名義応答列を作成し、名義ロジスティック回帰を使用してそれを x に適合させることです (添付の表を参照)。
これは必要な機能ですか?ユースケースを正確に理解できるよう教えていただけますか?このデータは何を表し、そこから何を学ぼうとしているのですか?
Re: JMP で制約付き応答 (出力の合計 = 1) を持つ線形または非線形モデルを構築するにはどうすればよいでしょうか?こんにちは、ハドリーさん。
ご協力ありがとうございます。残念ながら、ご提案いただいた内容は私の具体的なニーズには合致しておりません。
私の目標:合計が 1 になる制約付きで出力を予測する必要があります。これは、人口比率や混合処方をその特性に基づいてモデル化する場合、よくあることです。
私の解決策:中心対数比(CLR)変換を手動で実装しました。ワークフローは次のとおりです。
- 出力を中心対数空間に変換する
- 変換された変数にモデルを適合させる
- 制約が尊重されるように逆変換を適用する
変換のコードは次のとおりです。
<SPAN>// Adjust zeros </SPAN><SPAN>epsilon = 0.0000001; </SPAN><SPAN>p1_adj = If(:p1 == 0, epsilon, :p1); </SPAN><SPAN>p2_adj = If(:p2 == 0, epsilon, :p2); </SPAN><SPAN>pk_adj = If(:pk == 0, epsilon, :pk); </SPAN>
<SPAN>// Scaling </SPAN><SPAN>sum_adj = p1_adj + p2_adj + ... + pk_adj; </SPAN><SPAN>p1_norm = p1_adj / sum_adj; </SPAN><SPAN>p2_norm = p2_adj / sum_adj; </SPAN><SPAN>pk_norm = pk_adj / sum_adj; </SPAN>
<SPAN>// Geometric mean </SPAN><SPAN>geom_mean = (p1_norm * p2_norm * ... * pk_norm)^(1/k); </SPAN>
<SPAN>// CLR transformation </SPAN><SPAN>y1_clr = Log(p1_norm / geom_mean); </SPAN><SPAN>y2_clr = Log(p2_norm / geom_mean); </SPAN><SPAN>yk_clr = Log(pk_norm / geom_mean); </SPAN>
<SPAN>// Inverse transformation (after prediction) </SPAN><SPAN>sum_exp = Exp(:y1_clr_pred) + Exp(:y2_clr_pred) + ... + Exp(:yk_clr_pred); </SPAN><SPAN>p1_pred = Exp(:y1_clr_pred) / sum_exp; </SPAN><SPAN>p2_pred = Exp(:y2_clr_pred) / sum_exp; </SPAN><SPAN>pk_pred = Exp(:yk_clr_pred) / sum_exp;</SPAN>
追加リクエスト:プロファイラーを使用して、各出力の積み重ねた割合を表示したいと考えています。これは、名目ロジスティックが各ラベルの積み重ねた確率を表示するのと同様です。ご提示のソリューションは積み重ねの視覚化に対応していますが、各出力の正確な割合ではなく、最も高いカテゴリの確率のみを予測しています。
参考までに、手動変換の例を添付しました。
よろしくお願いします、