MCMC(Markov Chain Monte Carlo) 是一种通过构建马尔可夫链来从概率分布中采样的算法,常用于无法直接计算或难以求解的概率分布的抽样问题。在贝叶斯统计中,MCMC 是从 后验分布(Posterior Distribution) 中采样的主要方法。
贝叶斯公式给出的后验分布往往是复杂的,难以直接进行解析求解。MCMC 通过随机抽样构建样本分布,使得样本逐渐收敛于后验分布,从而进行推断。
贝叶斯推断中,我们的目标是从后验分布 ( P(\theta | X) ) 中采样,其中 ( \theta ) 是模型的参数,( X ) 是观测数据。根据贝叶斯公式: [ P(\theta | X) = \frac{P(X | \theta) P(\theta)}{P(X)} ] 由于 ( P(X) ) 很难计算,因此我们使用 MCMC 来近似从后验分布中采样。
马尔可夫链是一种状态转移模型,具有记忆性,即下一个状态只依赖当前状态。MCMC 利用马尔可夫链在状态空间中随机游走来逼近目标分布。
蒙特卡洛方法通过随机采样和统计来近似计算复杂的概率分布或期望值。MCMC 通过不断产生样本来逼近期望的分布。
MCMC 的核心是通过逐步构建样本集合,使这些样本遵循目标的后验分布。随着迭代的增加,样本分布逐渐逼近后验分布。
Metropolis-Hastings 是最常用的 MCMC 算法之一,工作步骤如下:
- 初始化:随机选择初始参数 ( \theta_0 )。
- 提议新状态:从提议分布 ( q(\theta' | \theta^{(t)}) ) 中生成一个新状态 ( \theta' )。
- 接受或拒绝:
- 计算接受率: [ \alpha = \min\left(1, \frac{P(X | \theta') P(\theta') q(\theta^{(t)} | \theta')}{P(X | \theta^{(t)}) P(\theta^{(t)}) q(\theta' | \theta^{(t)})}\right) ]
- 以概率 ( \alpha ) 接受 ( \theta' ),否则保持当前状态。
- 重复:继续提议新状态,直到收敛。
吉布斯采样是一种特殊的 MCMC 算法,它逐一更新参数。在每次迭代中,吉布斯采样固定其他参数,只更新某一个参数的条件分布:
- 对每个参数 ( \theta_i ),根据其他参数 ( \theta_{-i} ) 从条件分布 ( P(\theta_i | X, \theta_{-i}) ) 中采样。
- 交替更新所有参数,直到收敛。
- 贝叶斯推断:MCMC 是贝叶斯统计中的核心工具,用于从复杂的后验分布中进行抽样。
- 高维数据:在高维数据中,MCMC 可以帮助处理无法解析的高维后验分布。
- 混合模型:例如高斯混合模型中的参数估计。
- 能处理高维、复杂分布的采样问题。
- 在贝叶斯推断中非常有效。
- 收敛性问题:可能需要大量迭代才能收敛。
- 计算复杂度:对于大规模数据集,MCMC 的计算开销可能很大。
Bagging(Bootstrap Aggregating)是一种通过组合多个模型来提高预测性能的集成学习方法。它通过对训练数据进行自助采样(bootstrap sampling),构建多个不同的数据集,然后在这些数据集上训练多个模型,最终通过投票或平均的方式得出最终预测结果。
Bagging 最常用于减小 方差(variance),从而提高模型的泛化能力,典型的例子是 随机森林(Random Forest)。
Bagging 的核心是从原始训练集进行 有放回抽样 来生成多个子集。这些子集可能包含重复的样本,也可能不包含某些样本。
对每个自助采样得到的子集,都训练一个独立的模型,通常使用同一种类型的基础模型(如决策树)。
对于分类任务,通常通过 投票 来得到最终的预测结果;对于回归任务,则通过 平均 来得到最终预测值。
Bagging 减少了模型的方差,因为它通过在不同的数据子集上训练不同的模型,避免了模型对某些特定样本的过度拟合。由于每个模型都有不同的训练数据,因此它们的预测误差之间是独立的,组合后的模型具有更好的稳定性和泛化能力。
- 减小方差:通过集成多个模型,Bagging 有效减少了模型的方差,降低了过拟合的风险。
- 适用于不稳定模型:Bagging 特别适合于那些对训练数据敏感的模型,如决策树。
- 计算成本高:Bagging 需要训练多个模型,计算成本相对较高。
- 不减少偏差:虽然 Bagging 可以有效减少方差,但它不能解决高偏差问题,因此当基础模型的偏差较高时,Bagging 效果有限。
在 随机森林(Random Forest) 中,Bagging 与决策树的随机选择特征相结合,不仅通过自助采样生成不同的数据集,还在每棵树的训练中随机选择一部分特征用于分裂,从而进一步增强模型的泛化能力。
- 决策树模型的集成:随机森林是 Bagging 的经典应用,用于解决分类和回归问题。
- 高方差模型:Bagging 适用于那些容易发生过拟合的高方差模型,如单棵决策树。