残念ながら、基本的な数学を知らずに機械学習を行うことはできません。それは、誰かにプログラミングの助けを求めるようなものですが、「変数」、「サブルーチン」、およびそのすべての 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 付近ではなく、事前確率が非常に小さい場合、シータのガウス事前分布はおそらく不適切です。負の確率で重みを予測し、明らかに間違っています。より適切なのは、対数シータのガウス事前分布 (「対数正規分布」) です。同じように差し込んで、計算を進めます。