Cross validation / multual information / Bayesian statistics and regularization
在之前我们讨论了最小化风险函数,但很多时候这样做的效果并不好,这是由于bias and variance
的权衡。因此,我们需要进行模型选择,来自动的选择最合适的模型。
Cross validation
假设我们有一些有限的模型,如何来选择哪个模型能够使得其泛化能力最好?
常用的方法是交叉验证:
- hold-out cross validation
- 使用一部分数据(70%)作为train data进行训练,使用剩下的数据作为validation data进行验证,选择在验证集上误差最小的模型
- k-fold cross validation
- 在
hold-out cross validation
中,我们的30%的数据实际上都被浪费了。而如果数据量本来就很小,那么这样做并不合理。因此,更常用的是每次使用30%的数据作为验证集,训练多次得到其平均误差。 - k=10是常用的做法,但计算量会很大
- 在
- leave-one-out cross validation.
- 可以令k=m,也就是划分的数量和数据集大小一样,每次只用一个样本作为验证。
- 只适合在数据量非常少的情况下使用。
Feature selection
如果我们有很多feature,但很可能大部分feature对于我们的分类任务都没有太大帮助。因此,我们要选择最为合适的feature子集,但其选择空间有2n2^n2n,是在太大了。
因此,有几种启发式的feature selection方法:
- Wrapper model feature selection
- forward search
- 很简单的想法,我们每次尝试加入一个feature,如果加入这个feature能在验证集上表现得更好,那么我们就要他;如果表现得更差,那么就抛弃他
- backward search
- 同样的想法,每次删去一个feature,看训练集上的表现是否提高
- forward search
- Filter feature selection
- 在之前的算法中,计算量非常大。因此,一个直观的想法是定义一个score function,来衡量某个feature能表示的信息量大小,即S(i)S(i)S(i),然后,选择kkk个能使得score 最大的feature。
- 一般来说,S(i)S(i)S(i)是根据xix_ixi和yyy之间的相关性来度量的
- mutual information
- MI(xi,y)=∑xi∈{0,1}∑y∈{0,1}p(xi,y)logp(xi,y)p(xi)p(y)\operatorname{MI}\left(x_{i}, y\right)=\sum_{x_{i} \in\{0,1\}} \sum_{y \in\{0,1\}} p\left(x_{i}, y\right) \log \frac{p\left(x_{i}, y\right)}{p\left(x_{i}\right) p(y)}MI(xi,y)=∑xi∈{0,1}∑y∈{0,1}p(xi,y)logp(xi)p(y)p(xi,y)
- 可以发现,mutual information可以表示为KL散度的形式:
- MI(xi,y)=KL(p(xi,y)∥p(xi)p(y))\operatorname{MI}\left(x_{i}, y\right)=\mathrm{KL}\left(p\left(x_{i}, y\right) \| p\left(x_{i}\right) p(y)\right)MI(xi,y)=KL(p(xi,y)∥p(xi)p(y))
- 因此,mutual information衡量了分布p(xi,y)p(x_{i}, y)p(xi,y) 和 p(xi)p(y)p(x_{i}) p(y)p(xi)p(y) 的差异。
Bayesian statistics and regularization
- 频率学派
- 认为参数是已知的,我们需要做的只是从数据中学习参数,一般使用极大似然估计等方式
- 贝叶斯学派
- 认为参数也是随机变量,因此我们有一个先验分布,我们需要求解的是在已知数据的情况下参数的分布(后验分布):
- 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{\left(\prod_{i=1}^{m} p\left(y^{(i)} | x^{(i)}, \theta\right)\right) p(\theta)}{\int_{\theta}\left(\prod_{i=1}^{m} p\left(y^{(i)} | x^{(i)}, \theta\right) p(\theta)\right) d \theta} \end{aligned}p(θ∣S)=p(S)p(S∣θ)p(θ)=∫θ(∏i=1mp(y(i)∣x(i),θ)p(θ))dθ(∏i=1mp(y(i)∣x(i),θ))p(θ)
- 当我们想要得到一个新的xxx的输出时,对后验分布进行积分:
- p(y∣x,S)=∫θp(y∣x,θ)p(θ∣S)dθp(y | x, S)=\int_{\theta} p(y | x, \theta) p(\theta | S) d \thetap(y∣x,S)=∫θp(y∣x,θ)p(θ∣S)dθ
- 分母其实就是 P(S), 而我们就是要让P(S)在各种参数的影响下能够最大(这里只有参数θ)。因此我们只需求出随机变量θ中最可能的取值,这样求出θ后,可将θ视为固定值,那么预测时就不用积分了,而是直接像最大似然估计中求出θ后一样进行预测,这样就变成了点估计。这种方法称为最大 后验概率估计(Maximum a posteriori)方法:
- θMAP=argmaxθ∏i=1mp(y(i)∣x(i),θ)p(θ)\theta_{\mathrm{MAP}}=\arg \max _{\theta} \prod_{i=1}^{m} p\left(y^{(i)} | x^{(i)}, \theta\right) p(\theta)θMAP=argmaxθ∏i=1mp(y(i)∣x(i),θ)p(θ)
- 很神奇的是,我们这个形式与最大似然的形式非常相似,除了最后的p(θ)p(\theta)p(θ)
- 一般来说,我们可以将先验假设成:θ∼N(0,τ2I)\theta \sim \mathcal{N}\left(0, \tau^{2} I\right)θ∼N(0,τ2I),也就是很多的feature的参数值都为零(消除这个feature)。使用这个假设,那么MAP比最大似然有更小的norm,也就是更不容易过拟合。
- 实际上,对于线性回归而言,最大似然实际上就是使得其误差平方和最小;在MAP中,就是在误差平方和后再加入一个正则项λ∣∣θ∣∣2\lambda||\theta||^2λ∣∣θ∣∣2
- 一个很好的例子是Bayesian logistic regression对于文本分类是一种很有效的算法,即使当feature远远大于样本数量时。
- 认为参数也是随机变量,因此我们有一个先验分布,我们需要求解的是在已知数据的情况下参数的分布(后验分布):