不幸的是,如果你不知道一些基本的数学知识,你就无法进行机器学习——这就像在编程方面向某人寻求帮助,但不想知道“变量”、“子例程”和所有那些 if-then 的东西。
更好的方法称为贝叶斯积分,但有一种更简单的近似方法,称为“最大后验”(MAP)。除了您可以放入先验分布之外,这与通常的想法非常相似。
花哨的话,但你可能会问,h/(h+t) 公式是从哪里来的?当然这很明显,但事实证明这是当你“没有先验”时得到的答案。当您添加先验时,下面的方法是更复杂的一个级别。下一个将是贝叶斯积分,但这更难,也许是不必要的。
据我了解,问题有两个方面:首先,您从硬币袋中取出一枚硬币。这枚硬币有一种叫做 theta 的“头晕”,因此它给出了翻转的头部 theta 分数。但是这枚硬币的 theta 来自主分布,我想我假设它是具有平均 P 和标准偏差 S 的高斯分布。
你接下来要做的是写下看到整个 shebang 的总非归一化概率(称为可能性),所有数据:(h 头,t 尾)
L = (theta)^h * (1-theta)^t * Gaussian(theta; P, S)。
高斯(theta; P, S) = exp( -(theta-P)^2/(2*S^2) ) / sqrt(2*Pi*S^2)
这就是“首先从高斯绘制 1 个 theta 值”然后使用该 theta 从硬币中绘制 h 个正面和 t 个反面的含义。
MAP 原理说,如果您不知道 theta,请在已知数据的情况下找到使 L 最大化的值。你用微积分做到这一点。让它变得简单的诀窍是你先取对数。定义 LL = log(L)。只要 L 最大化,LL 也会最大化。
所以 LL = h log(theta) + t log(1-theta) + -(theta-P)^2 / (2*S^2)) - 1/2 * log(2*pi*S^2)
通过微积分寻找极值,您可以找到 dLL/dtheta = 0 的 theta 值。由于对数的最后一项中没有 theta,您可以忽略它。
dLL/dtheta = 0 = (h/theta) + (P-theta)/S^2 - (t/(1-theta)) = 0。
如果你能解出这个方程的 theta,你会得到一个答案,即在给定正面数量 h 和反面数量 t 的情况下,theta 的 MAP 估计值。
如果您想要一个快速的近似值,请尝试执行牛顿方法的一步,在该方法中,您从建议的 theta 开始,在 theta = h/(h+t) 的明显(称为最大似然)估计值处。
这个“明显”的估计是从哪里来的?如果您执行上述操作,但不输入高斯先验:h/theta - t/(1-theta) = 0,您将得出 theta = h/(h+t)。
如果你的先验概率真的很小,通常情况下,而不是接近 0.5,那么在 theta 上的高斯先验可能是不合适的,因为它预测一些负概率的权重,显然是错误的。更合适的是对数θ('对数正态分布')的高斯先验。以相同的方式插入它并完成微积分。