📜  概率密度估计和最大似然估计(1)

📅  最后修改于: 2023-12-03 14:55:52.313000             🧑  作者: Mango

概率密度估计和最大似然估计

概率密度估计和最大似然估计是统计学中很常见的两个概念。在机器学习、数据分析中,这两个概念也都有着广泛的应用。本文将对它们进行简要介绍。

概率密度估计

概率密度估计(Probability Density Estimation, PDE)是一种用于确定概率密度函数(Probability Density Function, PDF)的过程。它是在一堆样本中,根据概率分布情况,对整个样本中的可观察变量,推测出它的PDF概率密度函数。

PDE的方法很多,其中一种常见的方法是核密度估计(Kernel Density Estimation, KDE)。核密度估计是利用样本数据点,通过在每个数据点周围放置核函数,再将所有核函数加起来得到PDF。其中,核函数可以选择不同的参数,来更好地拟合概率密度函数,从而减轻过度拟合和欠拟合现象。

以下是 Python 中 Scikit-Learn 库中的核密度估计的示例代码:

from sklearn.neighbors import KernelDensity
import numpy as np

# 示例数据
x_data = np.array([0.5, 1.2, 1.7, 3.4, 4.3, 4.5, 4.7, 5.1, 6.0, 6.2, 6.7, 8.0])
x_data = x_data.reshape(-1, 1)

# 核密度估计模型
kde = KernelDensity(kernel='gaussian', bandwidth=0.5).fit(x_data)

# 打印估计出的概率密度函数
print(np.exp(kde.score_samples(x_data)))
最大似然估计

最大似然估计(Maximum Likelihood Estimation, MLE)是一种通过似然函数来估计未知的模型参数的数学方法。它考虑到的是在给定参数下,样本的概率最大,也就是说,MLE方法通过已观察到的样本,尝试找到一个参数使它们的出现概率最大。

通常情况下,我们可以先定义一个模型,比如高斯模型,模型包含了一些参数,比如均值和方差。我们的目标就是尝试找到最优的参数来最好地拟合实际数据。

以下是 Python 中 Scipy 库中的最大似然估计的示例代码:

from scipy.optimize import minimize
from scipy.stats import norm
import numpy as np

# 示例数据
sample_data = np.array([0.5, 1.2, 1.7, 3.4, 4.3, 4.5, 4.7, 5.1, 6.0, 6.2, 6.7, 8.0])

# 给定一个高斯分布
def gaussian_log_likelihood(params):
    mean, std = params
    log_density = np.log(norm.pdf(sample_data, loc=mean, scale=std))
    return -np.sum(log_density)

# 初始参数
params = [0, 1]

# 最优化
results = minimize(gaussian_log_likelihood, params)

# 打印估计的均值和方差
print(results.x)
总结

概率密度估计和最大似然估计在机器学习、数据分析等领域中有着广泛的应用,它们能够帮助我们更好地理解数据和模型,并最终得到更好的结果。