"极大似然函数"和"似然函数"是统计学和机器学习中常见的两个概念,它们之间的区别在于它们在不同上下文中的使用方式:
似然函数(Likelihood Function):
极大似然函数(Maximum Likelihood Function):
总之,似然函数描述了数据在给定参数下的概率分布,而极大似然函数是似然函数中使其取得最大值的参数值,用于参数估计。估计参数是机器学习和统计推断中的常见任务,而似然函数和极大似然函数是在这些任务中起关键作用的概念。
让我们通过一个简单的例子来说明似然函数和极大似然估计(Maximum Likelihood Estimation,MLE)的概念。
假设我们有一个硬币,我们想知道它的正面出现的概率(通常用参数 p p p 表示),即我们想估计硬币是不是公平的。我们进行了一系列投掷,并记录了每次投掷的结果。
我们的观测数据如下:
现在,我们想使用似然函数和极大似然估计来估计硬币正面出现的概率 p p p。
似然函数(Likelihood Function):
似然函数表示在给定参数 p p p下,观测到数据的可能性。对于硬币投掷,似然函数可以表示为:
L ( p ∣ 数据 ) = p ⋅ ( 1 − p ) ⋅ p ⋅ p ⋅ ( 1 − p ) L(p \,|\, \text{数据}) = p \cdot (1-p) \cdot p \cdot p \cdot (1-p) L(p∣数据)=p⋅(1−p)⋅p⋅p⋅(1−p)
这里的 p p p 表示正面出现的概率, 1 − p 1-p 1−p 表示反面出现的概率。似然函数描述了在不同 p p p 值下观测到数据的概率。在这个例子中,我们假设每次投掷都是独立的。
极大似然估计(Maximum Likelihood Estimation,MLE):
我们的目标是找到使似然函数取得最大值的参数 p p p,即极大似然估计。为了找到这个参数值,我们可以对似然函数求导,然后令导数等于零,找到使似然函数最大化的 p p p值。
d d p L ( p ∣ 数据 ) = 0 \frac{d}{dp} L(p \,|\, \text{数据}) = 0 dpdL(p∣数据)=0
解这个方程,我们可以得到极大似然估计的结果。在这个例子中,通过求解,我们可以找到使似然函数最大化的 p p p 值,即硬币正面出现的概率的估计值。
请注意,这个例子是一个简单的二项分布问题,但它演示了似然函数和极大似然估计的基本思想:似然函数用于描述数据在不同参数下的概率分布,而极大似然估计用于寻找最可能产生观测数据的参数值。
我们来计算一下似然函数并找到使其最大化的参数值 p p p。在上面的例子中,似然函数表示为:
L ( p ∣ 数据 ) = p ⋅ ( 1 − p ) ⋅ p ⋅ p ⋅ ( 1 − p ) L(p \,|\, \text{数据}) = p \cdot (1-p) \cdot p \cdot p \cdot (1-p) L(p∣数据)=p⋅(1−p)⋅p⋅p⋅(1−p)
为了找到 (p) 的最大似然估计,我们需要求解以下方程:
d d p L ( p ∣ 数据 ) = 0 \frac{d}{dp} L(p \,|\, \text{数据}) = 0 dpdL(p∣数据)=0
首先,对似然函数求导:
d d p L ( p ∣ 数据 ) = d d p [ p 3 ( 1 − p ) 2 ] \frac{d}{dp} L(p \,|\, \text{数据}) = \frac{d}{dp} [p^3 (1-p)^2] dpdL(p∣数据)=dpd[p3(1−p)2]
使用链式法则:
d d p [ p 3 ( 1 − p ) 2 ] = 3 p 2 ( 1 − p ) 2 − 2 p 3 ( 1 − p ) \frac{d}{dp} [p^3 (1-p)^2] = 3p^2(1-p)^2 - 2p^3(1-p) dpd[p3(1−p)2]=3p2(1−p)2−2p3(1−p)
现在,我们将导数等于零,以找到使似然函数最大化的 (p) 值:
3 p 2 ( 1 − p ) 2 − 2 p 3 ( 1 − p ) = 0 3p^2(1-p)^2 - 2p^3(1-p) = 0 3p2(1−p)2−2p3(1−p)=0
我们可以继续化简这个方程,但它的解是复杂的,并且不容易用简单的代数方法求解。通常,我们会使用数值方法(如迭代或数值优化算法)来找到最大似然估计的数值解。
在这个特定问题中,我们可以使用计算工具(如Python中的NumPy和SciPy库)来进行数值计算。让我使用Python来演示如何计算这个估计值:
import numpy as np
from scipy.optimize import minimize
# 定义似然函数
def likelihood_function(p):
return -p**3 * (1-p)**2
# 使用数值优化方法找到最大似然估计
result = minimize(likelihood_function, x0=0.5, bounds=[(0, 1)])
# 最大似然估计的结果
mle_estimate = result.x[0]
print("最大似然估计的结果 (p) =", mle_estimate)
上述代码使用SciPy库的minimize
函数来找到使似然函数最大化的 (p) 值。最终,得到的最大似然估计的结果 (p) 大约是 0.6 左右。这表示在我们的观测数据下,硬币正面出现的概率的估计值约为 0.6。请注意,这个值是一个估计值,因为我们在实际观测中可能会得到不同的结果。