单高斯模型
时间: 2025-05-30 11:31:14 浏览: 6
### 单高斯模型的概念
单高斯模型(Single Gaussian Model, SGM)是一种概率统计模型,它假设数据服从单一的正态分布。相比于混合高斯模型(Gaussian Mixture Model, GMM),SGM 的结构更加简单,仅由一个均值向量 \( \mu \) 和协方差矩阵 \( \Sigma \) 描述[^1]。
其概率密度函数可以表示为:
\[
p(x|\mu,\Sigma) = \frac{1}{(2\pi)^{D/2} |\Sigma|^{1/2}} e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)}
\]
其中:
- \( D \) 是特征维度;
- \( x \) 表示输入数据点;
- \( \mu \) 是均值向量;
- \( \Sigma \) 是协方差矩阵。
这种模型适用于描述具有单一模式的数据分布,在许多场景下可以用作基础建模工具[^3]。
---
### 单高斯模型的实现方法
以下是使用 Python 实现单高斯模型的一个例子,主要涉及计算数据的均值和协方差,并利用这些参数构建概率密度函数。
```python
import numpy as np
class SingleGaussianModel:
def __init__(self):
self.mu = None # 均值向量
self.sigma = None # 协方差矩阵
def fit(self, X):
"""
计算并存储数据X的均值和协方差
:param X: 输入数据,形状为(n_samples, n_features)
"""
self.mu = np.mean(X, axis=0) # 计算每列的均值
self.sigma = np.cov(X.T) # 计算协方差矩阵
def predict_proba(self, X):
"""
使用已学习到的均值和协方差预测新数据的概率密度
:param X: 新数据,形状为(n_samples_new, n_features)
:return: 每个样本对应的概率密度
"""
if self.mu is None or self.sigma is None:
raise ValueError("模型未拟合,请先调用fit()方法")
d = len(self.mu) # 特征数
det_sigma = np.linalg.det(self.sigma) # 协方差行列式
inv_sigma = np.linalg.inv(self.sigma) # 协方差逆矩阵
proba = []
for sample in X:
diff = sample - self.mu
exponent = -0.5 * np.dot(np.dot(diff, inv_sigma), diff.T)
coefficient = 1 / ((2 * np.pi)**(d / 2) * np.sqrt(det_sigma))
proba.append(coefficient * np.exp(exponent))
return np.array(proba)
# 示例:如何使用这个类
if __name__ == "__main__":
data = np.random.randn(100, 2) # 生成二维随机数据
model = SingleGaussianModel()
model.fit(data) # 学习模型参数
new_data = np.random.randn(5, 2) # 测试新的数据点
probabilities = model.predict_proba(new_data) # 输出每个测试点的概率密度
print(probabilities)
```
上述代码定义了一个 `SingleGaussianModel` 类,用于拟合数据并计算新数据点的概率密度[^3]。
---
### 参数估计的方法
对于单高斯模型而言,通常采用最大似然估计(Maximum Likelihood Estimation, MLE)来求解均值和协方差矩阵。MLE 的目标是最小化负对数似然函数,具体推导过程如下:
设观测数据集合为 \( \{x_1, x_2, ..., x_n\} \),则联合概率密度可写成独立同分布的形式:
\[
L(\theta | X) = \prod_{i=1}^n p(x_i|\mu,\Sigma)
\]
取对数得到对数似然函数:
\[
\ln L(\theta | X) = -\frac{nD}{2}\ln(2\pi) - \frac{n}{2}\ln(|\Sigma|) - \sum_{i=1}^n \frac{(x_i-\mu)^T\Sigma^{-1}(x_i-\mu)}{2}
\]
通过对 \( \mu \) 和 \( \Sigma \) 进行偏导数运算,最终得出最优解为:
\[
\hat{\mu} = \frac{1}{n} \sum_{i=1}^n x_i
\]
\[
\hat{\Sigma} = \frac{1}{n} \sum_{i=1}^n (x_i - \hat{\mu})(x_i - \hat{\mu})^T
\][^1]
这正是我们在代码中使用的公式。
---
### 应用场景
单高斯模型广泛应用于异常检测、语音识别等领域。例如,在异常检测中,可以通过比较某一点的概率密度是否低于阈值来判断该点是否属于正常范围;在语音信号处理中,则常用来表征特定音素的声学特性[^3]。
---
阅读全文
相关推荐

















