8.学习理论
1.交叉验证
k-折交叉验证
将数据集划分为k份,每次选取一份作为测试数据,其他的为训练数据。重复k次。计算每次错误的平均值。以此验证模型的性能。
-
随机将训练集 SSS 切分成 kkk 个不相交的子集。其中每一个子集的规模为 m/km/km/k 个训练样本。这些子集为 S1,⋯ ,SkS_1,\cdots,S_kS1,⋯,Sk
-
对每个模型 MiM_iMi,我们都按照下面的步骤进行评估(evaluate):
对 j=1,⋯ ,kj=1,\cdots,kj=1,⋯,k
-
在 S1∪⋯∪Sj−1∪Sj+1∪⋯∪SkS_1\cup\cdots\cup S_{j-1}\cup S_{j+1}\cup\cdots\cup S_kS1∪⋯∪Sj−1∪Sj+1∪⋯∪Sk (也就是除了 SjS_jSj 之外的其他数据),对模型 MiM_iMi 得到假设 hijh_{ij}hij 。接下来针对 SjS_jSj 使用假设 hijh_{ij}hij 进行测试,得到经验误差 ϵ^Scv(hij)\hat\epsilon_{S_{cv}}(h_{ij})ϵ^Scv(hij)
对ϵ^Scv(hij)\hat\epsilon_{S_{cv}}(h_{ij})ϵ^Scv(hij) 取平均值,计算得到的值就当作是模型 MiM_iMi 的估计泛化误差(estimated generalization error)
-
-
选择具有最小估计泛化误差(lowest estimated generalization error)的模型 MiM_iMi 的,然后在整个训练样本集 SSS 上重新训练该模型。这样得到的假设 (hypothesis)就可以输出作为最终结果了。
2.特征选择
向前搜索
-
初始化一个集合为空集 F=∅\mathcal F=\emptysetF=∅
-
循环下面的过程{
(a) 对于 i=1,⋯ ,ni=1,\cdots,ni=1,⋯,n 如果 i∉Fi\notin \mathcal Fi∈/F,则令 Fi=F∪{i}\mathcal F_i=\mathcal F\cup \{i\}Fi=F∪{i},然后使用某种交叉验证来评估特征 Fi\mathcal F_iFi
(b) 令 F\mathcal FF 为(a)中最佳特征子集
}
-
整个搜索过程中筛选出来了最佳特征子集(best feature subset),将其输出。
算法的外层循环可以在 F={1,⋯ ,n}\mathcal F=\{1,\cdots,n\}F={1,⋯,n} 达到全部特征规模时停止,也可以在 ∣F∣|\mathcal F|∣F∣ 超过某个预先设定的阈值时停止(阈值和你想要算法用到特征数量最大值有关)。
向后搜索
从F={1,...,n}\mathcal F = \{1, ..., n\}F={1,...,n} ,即规模等同于全部特征开始,然后重复,每次删减一个特征,直到 F\mathcal FF 为空集时终止。
过滤器特征选择
一种思路是使用 xix_ixi 和 yyy 之间的相关系数的值(或其绝对值),这可以在训练 样本数据中算出。这样我们选出的就是与分类标签(class labels)的关系最密切的特征值(features)。实践中,通常(尤其当特征 xix_ixi 为离散值(discrete-valued features))选择 xix_ixi 和 yyy 的互信息( mutual information, MI(xi,y){\rm{MI}}(x_i, y)MI(xi,y) ) 来作为 S(i)S(i)S(i) 。
MI(xi,y)=∑xi∈{0,1}∑y∈{0,1}p(xi,y)logp(xi,y)p(xi)p(y)
{\rm{MI}}(x_i, y)=\sum_{x_i\in\{0, 1\}}\sum_{y\in\{0,1\}}p(x_i,y)\log\frac{p(x_i,y)}{p(x_i)p(y)}
MI(xi,y)=xi∈{0,1}∑y∈{0,1}∑p(xi,y)logp(xi)p(y)p(xi,y)
(上面这个等式假设了 xix_ixi 和 yyy 都是二值化;更广泛的情况下将会超过变量的范围 。)上式中的概率p(xi,y)p(x_i,y)p(xi,y),p(xi)p(x_i)p(xi) 和 p(y)p(y)p(y) 都可以根据它们在训练集上的经验分布(empirical distributions)而推测(estimated)得到。
要对这个信息量分值的作用有一个更直观的印象,也可以将互信息(mutual information)表达成 KLKLKL 散度(Kullback-Leibler divergence,也称 KLKLKL 距离,常用来衡量两个概率分布的距离):
MI(xi,y)=KL(p(xi,y) ∥ p(xi)p(y))
{\rm{MI}}(x_i,y)={\rm KL}(p(x_i,y)\,\|\,p(x_i)p(y))
MI(xi,y)=KL(p(xi,y)∥p(xi)p(y))
3.贝叶斯统计和正则化
在本章的开头部分,我们谈到了使用最大似然(maximum likelihood,缩写为 ML)来进行参数拟合,然后根据下面的式子来选择参数:
θML=argmaxθ∏i=1mp(y(i)∣x(i);θ)
\theta_{\rm ML}=\arg \max_{\theta}\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)
θML=argθmaxi=1∏mp(y(i)∣x(i);θ)
给定一个训练集合 S={(x(i),y(i))}i=1mS = \{(x^{(i)},y^{(i)})\}^m_{i=1}S={(x(i),y(i))}i=1m,
p(S∣θ)=∏i=1mp(y(i)∣x(i),θ)p(S,θ)=p(S∣θ)p(θ)=∏i=1mp(y(i)∣x(i),θ)p(θ)p(S)=∫θp(S,θ)dθ=∫θ(∏i=1mp(y(i)∣x(i),θ)p(θ))dθ
\begin{aligned}
p(S|\theta)&=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)\\
p(S,\theta)&=p(S|\theta)p(\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)p(\theta)\\
p(S)&=\int_{\theta} {p(S,\theta)}d\theta=\int_{\theta} {\left(\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)p(\theta)\right)}d\theta
\end{aligned}
p(S∣θ)p(S,θ)p(S)=i=1∏mp(y(i)∣x(i),θ)=p(S∣θ)p(θ)=i=1∏mp(y(i)∣x(i),θ)p(θ)=∫θp(S,θ)dθ=∫θ(i=1∏mp(y(i)∣x(i),θ)p(θ))dθ
当我们被要求对一个新的 xxx 的值进行预测的时候,我们可以计算在参数上的后验分布 (posterior distribution):
p(θ∣S)=p(S∣θ)p(θ)p(S)=(∏i=1mp(y(i)∣x(i),θ))p(θ)∫θ(∏i=1mp(y(i)∣x(i),θ)p(θ))dθ
\begin{aligned}
p(\theta|S)
&=\frac{p(S|\theta)p(\theta)}{p(S)}\\
&=\frac{(\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta))p(\theta)}{\int_{\theta} {\left(\prod_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)p(\theta)\right)}d\theta}\qquad
\end{aligned}
p(θ∣S)=p(S)p(S∣θ)p(θ)=∫θ(∏i=1mp(y(i)∣x(i),θ)p(θ))dθ(∏i=1mp(y(i)∣x(i),θ))p(θ)
在上面的等式中,p(yi)∣x(i),θ)p(y^{i)}|x^{(i)},\theta)p(yi)∣x(i),θ) 来自你所用的机器学习问题中的模型。例如,如果你使用贝叶斯逻辑回归(Bayesian logistic regression),你可能就会选择 p(y(i)∣x(i),θ)=hθ(x(i))y(i)(1−hθ(x(i)))(1−y(i))p(y^{(i)}|x^{(i)},\theta)=h_\theta(x^{(i)})^{y^{(i)}} (1-h_\theta(x^{(i)}))^{(1-y^{(i)})}p(y(i)∣x(i),θ)=hθ(x(i))y(i)(1−hθ(x(i)))(1−y(i)) 其中,hθ(x(i))=1/(1+exp(−θTx(i)))h_\theta(x^{(i)})=1/(1+\exp(-\theta^Tx^{(i)}))hθ(x(i))=1/(1+exp(−θTx(i))).
若有一个新的测试样本 xxx,然后要求我们对这个新样本进行预测,我们可以使用 θ\thetaθ 上的后验分布(posterior distribution)来计算分类标签(class label)上的后验分布:
p(y∣x,S)=∫θp(y∣x,θ)p(θ∣S)dθ
\begin{aligned}
p(y|x,S)&=\int_\theta p(y|x,\theta)p(\theta|S)d\theta\qquad \\
\end{aligned}
p(y∣x,S)=∫θp(y∣x,θ)p(θ∣S)dθ
在上面这个等式中,p(θ∣S)p(\theta|S)p(θ∣S) 来自等式 (1)。例如,如果目标是要根据给定的 xxx 来预测对应的 yyy 的值,那就可以输出4^44:
4 如果 yyy 是一个离散值(discrete-valued),那么此处的积分(integral)就用求和(summation)来替代。
E[y∣x,S]=∫yyp(y∣x,S)dy E[y|x,S]=\int_y y p(y|x,S)dy E[y∣x,S]=∫yyp(y∣x,S)dy
这里我们简单概述的这个过程,可认为是一种“完全贝叶斯 (fully Bayesian)”预测,其中我们的预测是通过计算相对于 θ\thetaθ 上的后验概率 p(θ∣S)p(\theta|S)p(θ∣S) 的平均值而得出的。然而很不幸,这 个后验分布的计算通常是比较困难的。这是因为这个计算需要对 θ\thetaθ 进行积分(integral),而 θ\thetaθ 通常是高维度的(high-dimensional),这通常是不能以闭合形式 (closed-form)来实现的。
因此在实际应用中,我们都是用一个与 θ\thetaθ 的后验分布 (posterior distribution)近似的分布来替代。常用的一个近似是把对 θ\thetaθ 的后验分布(正如等式(2)(2)(2)中所示)替换为一个单点估计(single point estimate)。对 θ\thetaθ 的最大后验估计 (MAP,maximum a posteriori estimate)为:
θMAP=argmaxθ∏i=1mp(y(i)∣x(i))p(θ)
\theta_{MAP}=\arg \max_\theta \prod_{i=1}^{m} p(y^{(i)}|x^{(i)})p(\theta)
θMAP=argθmaxi=1∏mp(y(i)∣x(i))p(θ)
注意到了么,这个式子基本和对 θ\thetaθ 的最大似然估计(ML (maximum likelihood) estimate)是一样的方程,除了末尾多了 一个先验概率分布 p(θ)p(\theta)p(θ)。 实际应用里面,对先验概率分布 p(θ)p(\theta)p(θ) 的常见选择是假设 θ∼N(0,τ2I)\theta\sim N(0 , \tau ^2I)θ∼N(0,τ2I)。