[ESL] 08_模型推断和平均

模型推断

在这部分, 给出极大似然法的一个一般性的描述, 以及用于推断的贝叶斯方法.

最大似然推断

首先确定观测值的概率密度函数或者概率质量函数
z i ∼ g θ ( z ) , z_{i} \sim g_{\theta}(z) , zigθ(z),
这个表达式中 θ \theta θ 表示一个或多个未知的决定 Z Z Z 分布参数, 称为 Z Z Z的参数模型. 似然函数为
L ( θ ; Z ) = ∏ i = 1 N g θ ( z i ) . L(\theta;\bm{Z}) = \prod\limits^{N}_{i=1}g_{\theta}(z_{i}). L(θ;Z)=i=1Ngθ(zi).
对数似然为
ℓ ( θ ; Z ) = ∑ i = 1 N ℓ ( θ ; z i ) = ∑ i = 1 N log ⁡ g θ ( z i ) , \ell(\theta;\bm{Z}) = \sum\limits^{N}_{i=1}\ell(\theta;z_{i}) = \sum\limits^{N}_{i=1}\log g_{\theta}(z_{i}), (θ;Z)=i=1N(θ;zi)=i=1Nloggθ(zi),
其中每一个 ℓ ( θ ; z i ) = log ⁡ g θ ( z i ) \ell(\theta;z_{i}) = \log g_{\theta}(z_{i}) (θ;zi)=loggθ(zi) 称为对数似然组分. 最大似然法选择 θ = θ ^ \theta = \hat{\theta} θ=θ^ 来最大化 ℓ ( θ ; Z ) \ell(\theta;\bm{Z}) (θ;Z).
似然函数可用来评估 θ ^ \hat{\theta} θ^ 的准确性, 定义

  • 得分函数
    ℓ ˙ ( θ ; Z ) = ∑ i = 1 N ℓ ˙ ( θ ; z i ) \dot\ell(\theta;\bm{Z}) = \sum\limits^{N}_{i=1}\dot\ell(\theta;z_{i}) ˙(θ;Z)=i=1N˙(θ;zi)
    其中 ℓ ˙ ( θ ; z i ) = ∂ ℓ ( θ ; z i ) / ∂ θ \dot\ell(\theta;z_{i}) = \partial\ell(\theta;z_{i}) /\partial\theta ˙(θ;zi)=(θ;zi)/θ. 假设概率在参数空间的内部取得最大值, 则 ℓ ˙ ( θ ^ ; Z ) = 0 \dot\ell(\hat\theta;\bm{Z}) = 0 ˙(θ^;Z)=0.
  • 信息矩阵
    I ( θ ) = − ∑ i = 1 N ∂ 2 ℓ ( θ ; z i ) ∂ θ ∂ θ T , \bm{I}(\theta) = -\sum\limits_{i=1}^{N}\frac{\partial^{2}\ell(\theta;z_{i})}{\partial\theta\partial\theta^{\rm T}}, I(θ)=i=1NθθT2(θ;zi),
    I ( θ ) \bm{I}(\theta) I(θ) θ = θ ^ \theta = \hat{\theta} θ=θ^ 处取值, 则通常称为观测信息量.
  • Fisher信息量(或期望信息量) i ( θ ) = E [ I ( θ ) ] . \bm{i}(\theta) = \mathbb E[\bm I(\theta)]. i(θ)=E[I(θ)].
  • θ \theta θ 的真值为 θ 0 \theta_0 θ0.
    一个标准的结果表明: 最大似然估计量的样本分布服从极限正态分布 θ ^ ⟶ N ( θ 0 , i ( θ 0 ) − 1 ) ,   N ⟶ ∞ . \hat{\theta} \longrightarrow N\left(\theta_{0},\bm{i}(\theta_{0})^{-1}\right),\ N\longrightarrow\infty. θ^N(θ0,i(θ0)1), N.
    最后的区间检验结果也很好.

自助法和最大似然法

一般情况下, 参数自助法与最大似然一致. 特别地, 当模型有可加的高斯模型时, 参数自助法和最小二乘具有一致性.
本质上自助法是非参自助法或者参数自助法的计算机实现. 与最大似然法相比自助法的好处是允许我们在没有公式的情况下计算标准误差和其他一些量的最大似然估计.

  • 非参自助法(nonparametric bootstrap): 通过从训练集中有放回地采样. 该方法与模型无关.
  • 参数自助法(parametric bootstrap): 考虑到自助法的方差, 从特定的含参的模型中进行采样, 得到新的数据集.

贝叶斯方法

贝叶斯的主要思想: 对于数据, 我们需要确定一个已知参数的采样模型 P r ( Z ∣ θ ) {\rm Pr}(\bm Z|\theta) Pr(Zθ) 以及参数的先验分布 P r ( θ ) {\rm Pr}(\theta) Pr(θ), 然后计算后验分布
P r ( θ ∣ Z ) = P r ( Z ∣ θ ) P r ( θ ) ∫ P r ( Z ∣ θ ) P r ( θ ) d θ . {\rm Pr}(\theta|\bm Z) = \frac{{\rm Pr}(\bm Z|\theta){\rm Pr}(\theta)}{\int{\rm Pr}(\bm Z|\theta){\rm Pr}(\theta)d\theta}. Pr(θZ)=Pr(Zθ)Pr(θ)dθPr(Zθ)Pr(θ).

光滑化例子

  1. 设置模型. Y = μ ( X ) + ε ;   ε ∼ N ( 0 , σ 2 ) , Y = \mu(X) + \varepsilon;\ \varepsilon\sim N(0,\sigma^{2}), Y=μ(X)+ε; εN(0,σ2), μ ( x ) = ∑ j β j h j ( x ) . \mu(x) = \sum\limits_{j}\beta_{j}h_{j}(x). μ(x)=jβjhj(x). 假设 σ 2 \sigma^{2} σ2 是已知的.
  2. 寻找先验分布.
    采取一个简单的方法: 给出系数 β \beta β 的先验分布, 而且这隐式地定义了 μ x \mu{x} μx 的先验分布

自助法与贝叶斯推断

自助法分布表示参数的(近似的)非参无信息后验分布. 但是自助法分布可以很方便地得到——不需要正式地确定一个先验而且不需要从后验分布中取样. 因此或许可以把自助法分布看成一个“穷人的”贝叶斯后验. 通过扰动数据, 自助法近似于扰动参数后的贝叶斯效应, 而且一般实施更简单.

EM算法与MCMC

EM算法

EM 算法是简化复杂极大似然问题的一种很受欢迎的工具. 在这里插入图片描述
从一个不同的角度来看 EM 过程, 看成一个联合最大化(joint maximization)算法, 或者说是轮换最大化过程 (alternative maximization procedure)
在这里插入图片描述

马尔科夫蒙特卡洛法(Markov chain Monte Carlo)

吉布斯采样(一个 MCMC 过程)与 EM 算法非常相关: 主要的区别在于前者从条件分布中采样而非对它们最大化.
在这里插入图片描述

平均

我们提出模型平均和改善的相关技巧, 包括 committee 方法, bagging, stacking 和 bumping.

袋装法

之前研究了自助法和贝叶斯方法之间的关系, 而且发现自助法均值近似于一个后验平均. 自助法整合 (Bootstrap aggregation)或者 Bagging 进一步探索这之间的联系.
bagging 估计定义为
f ^ b a g ( x ) = 1 B ∑ b = 1 B f ^ ∗ b ( x ) , \hat{f}_{\rm bag}(x) = \frac{1}{B}\sum\limits_{b=1}^{B}\hat{f}^{*b}(x), f^bag(x)=B1b=1Bf^b(x),
P ^ \hat{\mathcal P} P^为在每个数据点 ( x i , y i ) (x_i,y_i) (xi,yi) 上赋予相同概率 1 / N 1/N 1/N 的经验分布. 实际上, “真正”的 bagging 估计由 E p ^ E_{\hat\mathcal p} Ep^ 定义. 表达式是真实 bagging 估计的蒙特卡洛估计.

堆栈(贝叶斯模型平均)

  1. Committee方法: 从每个模型的预测中取简单的无加权, 本质上就是对每个模型赋予相等的概率.

作为模型平均的权重, 相比更简单的BIC近似, 不值得这样做.

  1. 从频率的角度来实现模型平均. 有简单的例子表明这效果并不好.
  2. 堆栈泛化(Stacked generalization). w ^ s t = arg ⁡ min ⁡ w ∑ i = 1 N [ y i − ∑ m = 1 M w m f ^ m − i ( x i ) ] 2 . \hat{w}^{st} = \arg\min\limits_{w}\sum\limits_{i=1}^{N}\left[y_{i} - \sum\limits_{m=1}^{M}w_{m}\hat{f}_{m}^{-i}(x_{i})\right]^{2}. w^st=argwmini=1N[yim=1Mwmf^mi(xi)]2.
    最终的预测为 ∑ m w ^ m s t f ^ m ( x ) \sum_{m}\hat{w}^{st}_{m}\hat{f}_{m}(x) mw^mstf^m(x), 通过采用交叉验证的预测值 f ^ m − i ( x ) \hat{f}_{m}^{-i}(x) f^mi(x), 堆栈避免了对高复杂度的模型赋予不公平的过高权重.

堆栈的思想实际上比上面所描述的更一般, 可以采用任意学习的方法, 学习方法被堆栈到其它方法上面来给提升预测的效果.

随机搜索

在bagging中, 我们抽取自助样本并且对每个样本拟合模型. 但是不是对这些预测值进行平均, 而是选择拟合训练数据最好的自助样本的模型. 通过打乱数据, bumping试图将拟合过程移动到模型空间的好区域中. 技巧是在自助样本上优化一个不同的, 更方便的准则, 接着选择在训练样本上对于期望的准则产生最优结果的模型.

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在FreeSWITCH的ESL(Event Socket Library)中,esl_event结构体是一个非常重要的数据结构,用于表示从FreeSWITCH接收到的事件。该结构体的成员组成如下: ``` typedef struct esl_event { char *event_name; // 事件名称 char *event_subclass; // 事件子类别 char *event_header; // 事件头 char *event_body; // 事件内容 char *event_plain_body; // 事件的裸数据 int event_type; // 事件类型 int event_id; // 事件ID char *event_uuid; // 事件UUID char *event_channel_uuid; // 事件所属通道的UUID char *event_app; // 事件所属应用名 char *event_app_data; // 事件所属应用的数据 char *event_flags; // 事件标志 char *event_priority; // 事件优先级 char *event_call_direction; // 呼叫方向 char *event_context; // 事件所属上下文 char *event_extension; // 事件所属扩展 char *event_caller_id_name; // 主叫方名称 char *event_caller_id_number; // 主叫方号码 char *event_destination_number; // 目的地号码 char *event_network_addr; // 事件来源网络地址 char *event_rdnis; // 事件RDNIS char *event_destination_name; // 目的地名称 char *event_app_response; // 应用响应 char *event_job_uuid; // 任务UUID char *event_job_command; // 任务命令 char *event_job_data; // 任务数据 char *event_job_priority; // 任务优先级 } esl_event_t; ``` 各成员的意义如下: - event_name: 事件名称,例如CHANNEL_CREATE、CHANNEL_DESTROY、DTMF等。 - event_subclass: 事件子类别,用于进一步区分事件类型。 - event_header: 事件头部分,包括事件类型、事件子类别等信息。 - event_body: 事件内容,包括事件所属通道、事件发生时间、事件相关参数等信息。 - event_plain_body: 事件的裸数据,即原始的事件内容。 - event_type: 事件类型,用于区分不同类型的事件。 - event_id: 事件ID,用于标识一个事件。 - event_uuid: 事件UUID,用于标识一个事件在FreeSWITCH中的唯一性。 - event_channel_uuid: 事件所属通道的UUID,用于标识事件所属的通道。 - event_app: 事件所属应用名,表示事件发生时所在的应用。 - event_app_data: 事件所属应用的数据,表示事件发生时应用的相关数据。 - event_flags: 事件标志,标识事件的一些特殊属性。 - event_priority: 事件优先级,用于标识事件的优先级。 - event_call_direction: 呼叫方向,表示事件所属呼叫的方向。 - event_context: 事件所属上下文,表示事件所在的上下文。 - event_extension: 事件所属扩展,表示事件所在的扩展。 - event_caller_id_name: 主叫方名称,表示事件所属呼叫的主叫方名称。 - event_caller_id_number: 主叫方号码,表示事件所属呼叫的主叫方号码。 - event_destination_number: 目的地号码,表示事件所属呼叫的目的地号码。 - event_network_addr: 事件来源网络地址,表示事件发生的网络地址。 - event_rdnis: 事件RDNIS,表示事件所属呼叫的RDNIS。 - event_destination_name: 目的地名称,表示事件所属呼叫的目的地名称。 - event_app_response: 应用响应,表示事件所属应用的响应。 - event_job_uuid: 任务UUID,表示事件所属任务的UUID。 - event_job_command: 任务命令,表示事件所属任务的命令。 - event_job_data: 任务数据,表示事件所属任务的数据。 - event_job_priority: 任务优先级,表示事件所属任务的优先级。 通过以上成员,可以获取到事件的各种信息和参数,从而实现对事件的处理和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值