4

私は何ヶ月もの間、これに対する答えを見つけようとしてきました (機械学習アプリケーションで使用するため)。それほど難しい問題ではないように思えますが、私はソフトウェア エンジニアであり、数学は決して私の強みの一つ。

シナリオは次のとおりです。

私は (おそらく) 不均等に重み付けされたコインを持っており、それが表になる確率を計算したいと考えています。このコインが入った箱と同じ箱のコインの平均確率はpであり、これらの確率の標準偏差 ( sと呼びます) も知っています。

(平均値と標準偏差以外の他のコインの確率の要約プロパティが役立つ場合は、おそらくそれらも取得できます。)

コインをn回投げて、表がh回出る。

単純なアプローチは、確率がちょうどh/nであるというものですが、n が小さい場合、これは正確ではない可能性があります。

nが小さい場合でも、 psを考慮してより正確な確率推定値を得る計算効率の良い方法 (つまり、非常に大きな数または非常に小さな数を含まない)はありますか?

ほとんどの数学表記は不可解であることがわかったので、答えが数学表記ではなく疑似コードを使用できれば幸いです;-)


その他の回答: SO には類似した回答が他にもいくつかありますが、提供された回答は不十分です。たとえば、これは、倍精度浮動小数点数で表現できるよりもはるかに小さい数値をすばやく含むため、計算効率がよくありません。そして、これは間違っていることが判明しました。

4

5 に答える 5

3

残念ながら、基本的な数学を知らずに機械学習を行うことはできません。それは、誰かにプログラミングの助けを求めるようなものですが、「変数」、「サブルーチン」、およびそのすべての if-then について知りたくないのです。

これを行うためのより良い方法は、ベイジアン積分と呼ばれますが、"maximum a postieri" (MAP) と呼ばれるより単純な近似があります。事前分布を入れることができることを除いて、通常の考え方とほとんど同じです。

派手な言葉ですが、h/(h+t) の式はどこから来たのでしょうか? もちろん当たり前のことなのですが、「前もってない」場合に得られる答えであることがわかります。そして、以下の方法は、事前確率を追加するときの次のレベルの洗練です。ベイジアン統合への移行は次の段階ですが、それは難しく、おそらく不必要です。

私が理解しているように、問題は 2 つあります。まず、コインの袋からコインを 1 枚引き出します。このコインには、シータと呼ばれる「ヘッズネス」があるため、フリップのヘッド シータの一部が得られます。しかし、このコインのシータは、平均Pと標準偏差Sのガウス分布であると私が推測するマスター分布から来ています.

次に行うことは、シバン全体、すべてのデータを見る非正規化確率 (可能性と呼ばれる) の合計を書き留めることです: (h 頭、t 尾)

L = (シータ)^h * (1-シータ)^t * ガウス (シータ; P、S)。

Gaussian(シータ; P, S) = exp( -(シータ-P)^2/(2*S^2) ) / sqrt(2*Pi*S^2)

これは、「最初にガウス分布から 1 つの値のシータを引き出し、次にそのシータを使用してコインから h の表と t の裏を引き出す」という意味です。

MAP の原則によると、シータがわからない場合は、わかっているデータで L を最大化する値を見つけてください。あなたは微積分でそれを行います。簡単にするコツは、最初に対数を取ることです。LL = log(L) を定義します。L が最大化されると、LL も最大化されます。

LL = h log(シータ) + t log(1-シータ) + -(シータ-P)^2 / (2*S^2)) - 1/2 * log(2*pi*S^2)

微積分を使って極値を探すと、dLL/dtheta = 0 のようなシータの値が見つかります。対数を含む最後の項にはシータがないため、無視できます。

dLL/dシータ = 0 = (h/シータ) + (P-シータ)/S^2 - (t/(1-シータ)) = 0.

この方程式をシータで解くことができれば、表の数 h と裏の数 t が与えられた場合のシータの MAP 推定値が得られます。

高速な近似が必要な場合は、ニュートン法の 1 つのステップを実行してみてください。ここでは、シータ = h/(h+t) の明らかな (最尤と呼ばれる) 推定値で提案されたシータから始めます。

そして、その「明白な」推定値はどこから来るのでしょうか? 上記のことを行い、ガウス事前分布を入れない場合: h/theta - t/(1-theta) = 0 は、theta = h/(h+t) になります。

よくあることですが、0.5 付近ではなく、事前確率が非常に小さい場合、シータのガウス事前分布はおそらく不適切です。負の確率で重みを予測し、明らかに間違っています。より適切なのは、対数シータのガウス事前分布 (「対数正規分布」) です。同じように差し込んで、計算を進めます。

于 2009-11-08T19:54:13.853 に答える
2

p推定確率の事前確率として使用できます。これは基本的に、疑似カウント平滑化を行うのと同じです。つまり、使用します

(h + c * p) / (n + c)

あなたの見積もりとして。hnが大きい場合、これはちょうどになりますh / nhnが小さい場合、これはちょうどc * p / c = pです。選択はcあなた次第です。あなたはそれを基にすることができsますが、結局あなたはどれだけ小さいかが小さすぎるかを決定しなければなりません。

于 2009-11-08T19:07:23.963 に答える
2

この質問には十分な情報がありません。

箱には何枚のコインが入っていますか? 2 の場合、いくつかのシナリオ (たとえば、1 つのコインが常に表で、もう 1 つは常に裏) では、p と s を知っていると便利です。それが数を超えている場合、特に一部のコインのみがわずかに重み付けされている場合、それは役に立ちません。

小さい n とは何ですか? 2? 5? 10? 100? 重み付けされたコインが表/裏になる確率は? 100/0、60/40、50.00001/49.99999? 重み付けはどのように分散されますか? すべてのコインは 2 つの可能な重みのいずれかですか? それらはベルカーブに従っていますか?等

要約すると、重み付けされた/重み付けされていないコイン、重み付けされたコインの分布、およびボックス内のコインの数の違いはすべて、これを高い信頼度で解決するために必要な n を決定します。

あなたがやろうとしていることの名前は、ベルヌーイ試行です。名前を知っていると、より良いリソースを見つけるのに役立ちます。


コメントへの返信:

p の差がそれほど小さい場合は、多くの試行を行う必要があり、それを回避することはできません。

偏りが均一に分布していると仮定すると、p は 0.5 のままで、すべての標準偏差から、少なくとも一部のコインには小さな偏りがあることがわかります。

繰り返しますが、コインの重み付けによって、これらの状況下でトスの回数が決定されます。500 回トスしても、0.51/0.49 のスプリットを検出する強い確信 (約 2/3) は得られません。

于 2009-11-08T17:11:32.310 に答える