ベルヌーイ応答に対する機械学習へのベイジアンアプローチ私は約150の特徴または共変量について約2000の観測値を持つデータセットを持っています。 私は0/1の結果を予測しようとしています。 結果は疾患のリスクスコア、R1です。 このアッセイでは、データベース内のすべての特徴値(F1、...、F150)と、関連する疾患のリスク値(R0)が生成されます。 その考えは、R0はR1に対して非常に予測的であり、そして我々が機能F1、...、F150を使用するならば、我々がR0に適用できるある種の更新規則があるかもしれないということです。 少し違った言い方をすれば、R1の事前分布のためにBernoulliパラメータとしてR0を使うことを考えていて、どういうわけかF1、...、F150の値に基づいてR0で使う更新式を訓練します。
トレーニングアルゴリズムは、スコアの事前値を指定できるようにする0/1確率スコアモデルを構築できるようにする必要があります。 これはかなり単純なベイズ問題のように思えます。 しかし、私は以前にこれをしたことがなく、機能情報がどのようにパラメーター更新式に組み込まれるのかわからない。
2番目の確率スコアを生成しますか?
ロジット変換に入る前に線形予測子を使用しますか?
R0を何らかの加法的な方法で修正するのでしょうか、それとも何らかの刺激的な要因で修正するのでしょうか。
明らかに私は答えよりももっと質問があります。 誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。 もしJMPがこのようなことを許すなら、私はそれについて聞きたいです。
再:ベルヌーイ応答に対する機械学習へのベイジアンアプローチはい、100%の特徴量を使ってp0を計算します。 システムは実際には何千もの機能を生成しますが、p0をオフラインで計算するためのアルゴリズムを検証できる必要があります。 それで我々は(コードを読むことによって)p0を計算するために使われたすべての特徴を見つけてそれらを保存した。 覚えておいて、機能の関数としてのp0の「計算」は複雑すぎて暗黙のうちに書き留めることができません(並列および直列構成の数百のバイナリ分類器、私はシステムを構築しませんでした)。 しかし、オフラインシミュレーションを実行し、p0の計算を検証するために必要かつ十分な特徴をすべて取り込んだことはわかっています。
私の目標は、p0を計算するためのモデルについて何も変更しないことです。 偶然にも、まったく同じ機能が他の病気を予測することを可能にする「魔法の」情報を含んでいるかどうかを確かめることです。 私が考えているのは、それはありそうもないです。特に、これらの機能は、いくつかの最適かつ最小限の方法でD0を予測するために特別に生成されているからです。 おそらくこの仮定をテストするための情報理論的な方法がいくつかあります。
繰り返しになりますが、私は、その概念がうまくいかないこと、あるいはうまくいかないことのどちらかを示すために、公正かつ原則的な方法を考え出す必要があります。 たくさんの赤旗を生成するのは簡単でした(例として共変量ドリフト)。 ある種の修正された「ベイジアン」アプローチを使用しようとする試みは、機能が生成するように設計されている最良の統計を使用し、それから独立した残余情報があるかどうかを確認する私の方法です。助けて D1を予測します。 私は懐疑的ですが、私は他の人(経営者)が機械学習が想像上可能な問題を魔法で解決できるという独断的な見方をしているグループの中にいます。 彼らは、これらのモデルの大部分(LASSO、ridge、PLS)が単なる単純な主効果(一般化)線形モデルに過ぎないことを理解していません。
もう一度、私はあなたの関与に感謝します。 とても役に立ちました。
再:ベルヌーイ応答に対する機械学習へのベイジアンアプローチ私は少し混乱しています - あなたはあなたのモデルが100%の機能を使用していると言っています(それらのうち150!) 私が実行したほぼすべての機械学習モデルは、すべての機能を使用することはありません。可能な限りそれらすべてを入力できますが、使用されることはめったにありません(決して行われません)。 いずれにせよ、モデルが複雑すぎると思う場合は、各機能を個別に削除して(面倒ですが、誰かがこれをスクリプト化することをお勧めします)、パフォーマンスがどれだけ低下するかを確認できます。これの代替バージョン - 私は他のソフトウェアで見たがまだJMPで見ていない - はそれぞれの機能を(一度に一つずつ)ランダムなデータに置き換えて性能を比較することである。
また、すでに持っているモデルに何かを追加することで、より良い予測が得られるかどうかを確認したいようです(すべての機能が既に含まれている場合は追加する必要がありますか?)。 これを行うには多くの方法があると思いますが、追加の機能を使用するのではなく、異なるモデルを試したり、それらを組み合わせるためにある種のアンサンブル方法を使用したりすることについてもっと考えています。これを行う1つの方法は、ベイジアンモデルの平均化です。しかし、最初のモデルを事前に使用してから「ベイジアンアップデート」を作成するための機能を追加するという最初の考えは、私には意味がありません。
再:ベルヌーイ応答に対する機械学習へのベイジアンアプローチありがとうデール、
私はおそらくあなたと全く一致しています。 このプロジェクトの目的は、すでにD0の学習に使用されていた機能に、D1の予測に使用できる「直交」情報があるかどうかを確認することです。 言い換えると、p0のオリジナルモデルのノイズは、特徴に100%基づいた非常に複雑なモデルであり、p1のトレーニングに使用できる情報が含まれています。 p0はD0には非常に有用であることがすでに証明されているので、初期推定値として保持したいと思います。
先に進んで、機能に基づいてp1のモデルを訓練するためにLASSO(またはridgeまたはPLSまたは...)のようなものを巧妙に使用すると、p0のみを使用してD1を予測するよりもパフォーマンスが良くなります。 しかし、私は無意識のうちにすべての履歴書が進行しているときにノイズについてトレーニングすることに懐疑的です。 さらに、私は独立した実験からの証拠を持っていますp1のモデルは共変量シフトを被るがp0は異なるデータセットに対して非常に弾力性があります。
もちろん、whoeの概念について親指を立てるか立てるかを決めるのは私にかかってくるので、私は同時に概念に挑戦すると同時にそれに最良の機会を与えたいと思います。 だからこそ、私はこの「ベイジアン」アプローチに傾いています。 これはベイジアンと呼ぶのは少しストレッチです。Bernoulliイベントを観測することはできず、前のパラメータのモデル内の述語を見ることしかできないためです。
あなたの考えに感謝します。
再:ベルヌーイ応答に対する機械学習へのベイジアンアプローチ私は決してベイズの専門家ではありませんが、あなたがやりたいことは正しくないようです。ベイジアン更新とは通常、追加のデータポイントなど、新しい情報を取り込むことです。追加機能を追加する理由オリジナルのモデルに入れてください。あるいは、ブーストツリーのようなものを使用している場合、アルゴリズムはすでに、誤った分類を行っている程度に基づいて予測を「更新」するためにこの機能を使用します。言い換えれば、私はあなたが「ベイジアン」に見える装置を提案していると思いますが、実際にはモデル内の他の特徴を考慮して、各特徴がモデルにどれだけ寄与しているかを調べるだけです。これは基本的にすべての予測モデルがそのままの状態で実行されることです - 手動でいくつかの機能を除外し、予測変更がどのように予測モデルが自動的に行うことを手動で行うように見えるかを見るために追加します。
私がこれについて間違っているならば、誰かが私をまっすぐにしてください。