机器学习(四)高斯判别分析

高斯判别分析(GDA)是一种统计方法,用于基于连续特征值进行分类。它假设特征值服从多变量正态分布,每个类别有自己的均值向量和相同的协方差矩阵。GDA模型可以通过极大似然估计求解参数,并可以转化为逻辑回归形式。在实践中,尽管逻辑回归更为常见,但GDA在模型假设正确时能提供更好的拟合度。

高斯判别分析 GDA

多元高斯分布

正态分布X∼N(μ,σ2)X\sim N(\mu,\sigma^2)XN(μ,σ2),他的概率密度函数为,φ(x)\varphi(x)φ(x)
φ(x)=1σ2πe−(x−μ)22σ2\varphi(x) = \frac{1}{\sigma\sqrt{2\pi} }e^{\frac{-(x-\mu)^2}{2\sigma^2} }φ(x)=σ2π1e2σ2(xμ)2

假设变量XiX_iXi之间相互独立且 Xi∼N(μi,σi2)X_i\sim N(\mu_i, \sigma_i^2)XiN(μi,σi2)

x=[x1,x2,...,xn]T;u=[μ1,μ2,...,μn]T;σ=[σ1.σ2,...,σn]Tx = [x_1,x_2,...,x_n]^T; u = [\mu_1,\mu_2,...,\mu_n]^T ;\sigma = [\sigma_1.\sigma_2,...,\sigma_n]^Tx=[x1,x2,...,xn]T;u=[μ1,μ2,...,μn]T;σ=[σ1.σ2,...,σn]T
则多元高斯分布的密度函数可以表示为:
在这里插入图片描述
对于上述指数部分,设
在这里插入图片描述
对其转换为矩阵表示形式
在这里插入图片描述
由Xi相互独立可知
在这里插入图片描述
所以多元高斯分布X∼N(μ,∑)X\sim N(\mu,\sum)XN(μ,)的密度函数为
在这里插入图片描述
Mean向量μ∈Rn协方差矩阵∑马氏距离r2=(x−μ)T∑−1(x−μ)Mean向量\mu \in \mathbb{R}^n \\协方差矩阵\sum\\马氏距离r^2=(x-\mu)^T\sum^{-1}(x-\mu)MeanμRnr2=(xμ)T1(xμ)
二元高斯分布
在这里插入图片描述
在这里插入图片描述

高斯判别分析模型

如果特征值x是连续v的随机变量,可以使用高斯判别分析模型完成特征值测分类。
假设特征值是二分类,结果服从0-1分布,(如果是多分类就服从二向分布)
模型:
y∼Bernoulli(ϕ)x∣y=0∼N(μ0,∑)x∣y=1∼N(μ1,∑)y\sim Bernoulli(\phi)\\x|y = 0 \sim N(\mu_0,\sum) \\x|y=1\sim N(\mu_1,\sum)yBernoulli(ϕ)xy=0N(μ0,)xy=1N(μ1,)

概率密度函数为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模型待估计的参数为φ,∑,μ0,μ1\varphi,\sum,\mu_0,\mu_1φ,,μ0,μ1,模型有两个不同的期望,有一个相同的协方差。
给定m个样本,该模型的极大似然函数的对数方程为:
在这里插入图片描述
在这里插入图片描述
解析解:
在这里插入图片描述

GDA 和logistic回归

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GDA可以写成逻辑回归的形式,但是GDA有更严格的模型假设,设p(x∣y)p(x|y)p(xy)为高斯混合分布的。如果混合高斯模型假设是正确的正确的,那么GDA有更高的拟合度。
实践中,逻辑回归比使用GDA更加普遍。

### 关于机器学习中的高斯判别分析 #### 理论基础 高斯判别分析(Gaussian Discriminant Analysis, GDA)是一种基于生成模型的方法,在处理二分类或多分类问题上表现良好。此方法假设给定类别的样本特征遵循多维正态分布,即对于每一个类别 \(c\) ,\(P(x|y=c)\) 是一个多维正态分布函数[^1]。 具体来说,如果考虑的是二元分类,则有: \[ P(x | y = 0) \sim N(\mu_0,\Sigma),\quad P(x | y = 1) \sim N(\mu_1,\Sigma) \] 其中,\(\mu_c\) 表示第 c 类的数据均值向量;而 \(\Sigma\) 则代表共同协方差矩阵。通过估计这些参数并应用贝叶斯决策规则来决定新实例所属的类别[^2]。 #### 参数估计与实现方式 为了构建高斯判别分析模型,需要完成以下几个步骤: - **数据预处理**: 对训练集进行标准化或归一化操作以确保各维度具有相同尺度。 - **参数拟合**: 使用极大似然法估算每种类别下的平均向量和共享协方差矩阵。这可以通过遍历所有属于同一标签的数据点来进行统计汇总得到[^3]。 ```python import numpy as np from scipy.stats import multivariate_normal def fit_gda(X_train, y_train): phi = sum(y_train)/len(y_train) mu_0 = X_train[y_train==0].mean(axis=0) mu_1 = X_train[y_train==1].mean(axis=0) sigma = ((X_train[y_train==0]-mu_0).T.dot((X_train[y_train==0]-mu_0)) + (X_train[y_train==1]-mu_1).T.dot((X_train[y_train==1]-mu_1))) / len(X_train) return {'phi': phi, 'mu_0': mu_0, 'mu_1': mu_1, 'sigma': sigma} gda_params = fit_gda(X_train, y_train) ``` 接着就可以利用已知参数计算任意输入 x 属于两个可能类别的后验概率,并据此作出预测[^4]: ```python def predict_proba(gda_params, X_test): mvn_0 = multivariate_normal(mean=gda_params['mu_0'], cov=gda_params['sigma']) mvn_1 = multivariate_normal(mean=gda_params['mu_1'], cov=gda_params['sigma']) p_y0_x = (1-gda_params['phi']) * mvn_0.pdf(X_test) p_y1_x = gda_params['phi'] * mvn_1.pdf(X_test) proba = p_y1_x/(p_y0_x+p_y1_x) return proba proba_predictions = predict_proba(gda_params, X_test) ``` #### 应用场景 当面对有限数量的小规模数据集时,尤其是那些能够很好地由单一模式描述的情况,比如医学诊断、金融风险评估等领域内的某些特定任务,高斯判别分析往往能提供较为理想的性能。这是因为相比于逻辑回归这样的判别型算法,它更依赖于对底层分布的理解而不是仅仅关注边界划分。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值