Machine-Learning-Cheat-Sheet

Github Link: https://github.com/soulmachine/machine-learning-cheat-sheet

pdf link: machine-learning-cheat-sheet.pdf

Language: English

版权归原作者所属,本文只是自己的理解与补充。

Introduction

这个概括得很好:Model = Representation + Evaluation + Optimization

Probability

几个概念

  • CDF (Cumulative Distribution Function):
    $$
    F(x) \triangleq P(X \leq x)=\begin{cases}
    \sum_{u \leq x}p(u) & \text{, discrete}\\
    \int_{-\infty}^{x} f(u)\mathrm{d}u & \text{, continuous}\\
    \end{cases}
    $$

  • PMF (Probability Mass Function): 针对离散值而言的概率密度函数

  • PDF (Probability Density Function): 针对连续值而言的概率密度函数

  • Quantiles: 即分位点。

    设CDF $F$的反函数为$F ^{-1}$,则满足$P(X \leqslant \alpha) = \alpha$的$x_{\alpha}$称为$F$的$\alpha$分位点。例如,$F^{-1}(0.5)$为中位点(median),$F^{-1}(0.25)$为下四分位点(lower quartiles),$F^{-1}(0.75)$为上四分位点(upper quartiles)

Monte Carlo integration

以前的确没留意用 Monte Carlo 方法求定积分。

以下内容摘自http://cos.name/2010/03/monte-carlo-method-to-compute-integration/

求定积分$J=\int_{0}^{1}f(x)dx$的值。

设$(X,Y)$服从正方形${0 \leq x \leq 1, 0 \leq y \leq 1}$上的均匀分布,则可知$X,Y$分别服从$[0,1]$上的均匀分布,且$X,Y$相互独立。记事件$A={Y \leq f(X)}$,则$A$的概率为
$$
P(A)=P(Y\leq f(X))=\int_{0}^{1}\int_{0}^{f(x)}dydx=\int_{0}^{1}f(x)dx=J
$$
即定积分$J$的值就是事件$A$出现的频率。同时,由伯努利大数定律,我们可以用重复试验中$A$出现的频率作为 $p$的估计值。随机投点法示意图如下。

Mutual information

即互信息,指的是两个随机变量之间的关联程度,即给定一个随机变量后,另一个随机变量的不确定性的削弱程度。这是由于
$$
\begin{eqnarray}
\mathbb{I}(X;Y)&=&\mathbb{H}(X)-\mathbb{H}(X|Y)\\
&=&\mathbb{H}(Y)-\mathbb{H}(Y|X)
\end{eqnarray}
$$
证明见https://en.wikipedia.org/wiki/Mutual_information

用一个Venn图可以很好地表示它们的关系

红色圈为$H(X)$,蓝色圈为$H(Y)$,两个圈的并集为$H(X,Y)$,交集为$I(X;Y)$。

Frequentists vs. Bayesians

关于贝叶斯学派和统计学派的对战。

作者:Xiangyu Wang
链接:https://www.zhihu.com/question/20587681/answer/41436978
来源:知乎

频率学派和贝叶斯学派最大的差别其实产生于对参数空间的认知上。所谓参数空间,就是你关心的那个参数可能的取值范围。频率学派(其实就是当年的Fisher)并不关心参数空间的所有细节,他们相信数据都是在这个空间里的”某个“参数值下产生的(虽然你不知道那个值是啥),所以他们的方法论一开始就是从“哪个值最有可能是真实值”这个角度出发的。于是就有了最大似然(maximum likelihood)以及置信区间(confidence interval)这样的东西,你从名字就可以看出来他们关心的就是我有多大把握去圈出那个唯一的真实参数。而贝叶斯学派恰恰相反,他们关心参数空间里的每一个值,因为他们觉得我们又没有上帝视角,怎么可能知道哪个值是真的呢?所以参数空间里的每个值都有可能是真实模型使用的值,区别只是概率不同而已。于是他们才会引入先验分布(prior distribution)和后验分布(posterior distribution)这样的概念来设法找出参数空间上的每个值的概率。最好诠释这种差别的例子就是想象如果你的后验分布是双峰的,频率学派的方法会去选这两个峰当中较高的那一个对应的值作为他们的最好猜测,而贝叶斯学派则会同时报告这两个值,并给出对应的概率。

简而言之,就是频率学派认为真实参数值是定的,去寻找就行。而贝叶斯学派认为参数空间的每个值都可能是真实值,所以只能给出它们作为真实值的概率。频率学派立足于自然角度,或者说是“上帝角度”,而贝叶斯学派立足于观察者角度。

两个学派除了参数空间的认知差别上,方法上都是可以互相借鉴的,见传统统计与贝叶斯方法:难以逾越的鸿沟?当代学术界批评地最多的仅仅是频率学派里的 Hypothesis testsing 的问题,尤其是对p-value的滥用,如下图Regina Nuzzo女士2014年在Nature杂志上批评p-value滥用的文章。对应与 Hypothesis testing,贝叶斯学派有一套自己的方法,称为Beyas Factor,但其同样可能导致Multiple comparisions problem

Generative models for discrete data

这里引入 Generative Classifier,(注意下公式里的$x$为向量)
$$
p(y=c|x,\theta)=\dfrac{p(y=c|\theta)p(x|y=c,\theta)}{\sum_{c’}{p(y=c’|\theta)p(x|y=c’,\theta)}}
$$
讨论$x$的不同分布,例如当特征在给定分类标签下都是独立时,
$$
p(x|y=c,\theta)=\prod\limits _{j=1}^D p(x _j|y=c, \theta _{jc})
$$
这就是Naive Bayes Classifier (NBC)。

提一下generative classifierdiscriminative classifierdiscriminative learning algorithm倾向于直接学习$p(y|x;\theta)$,它希望能通过一种直接的映射(如从输入空间$\chi$到输出标签$\left { 0,1 \right }$),或者说,找到一个明确的分类边界,logistic regression就是这样的,其$p(y|x;\theta)$为$h _{\theta}(x) = g(\theta ^T x)$。而generative learning algorithm则是通过输入与输出来学习联合概率分布$p(x,y)$,然后通过Bayes rules来预测$p(y|x)$。参考CS229 Lecture notes: PART IV Generative Learning algorithms

Generative vs discriminative classifiers

  • Easy to fit ? 这点上生成模型更占优。生成模型只需要简单的counting与averaging,如LDA中计算$\mu_0, \mu_1, \Sigma$等。而判决模型则需要则需要解决一些优化问题,如logistic regression
  • Fit classes separately ?在generative classifier中,参数的计算时独立的,如LDA中计算$\mu_0, \mu_1$等,这以为着我们添加更多的类别(classes)时,不需要retrain模型。相对而言,discriminative models中参数是相互影响的,故其添加classes时需要retrain模型
  • Handle missing features easily ? generative classifier 能容易处理特征数据缺失的问题,而discriminative classifier目前没有根本的解决方法
  • Can handle unlabeled training data ? 这个问题是半监督学习(semi-supervised learning)出现的缘由。这方面generative classifier更为擅长(see e.g. , (Lasserre et al. 2006; Liang et al. 2007))
  • Symmetric in inputs and outputs ? 这个问题是能否通过结果来推出可能的输入,对于generative classifier,显然是可以得,计算$p(x|y)$即可,而对于discriminative classifier就不可能了
  • Can handle feature preprocessing ? discriminative classifier允许作数据预处理,如作映射$x \to \phi(x)$,而generative classifier则不行
  • Well-calibrated probabilities ? 由于generative methods预先假设可能是不太合理的,如naive Bayes做了独立同分布假设,不合理的假设会导致差的estimation效果。因此这点上discriminative classifier更占优

Gaussian Models

Basics

指出了$(x-\mu)^T \Sigma^{-1} (x - \mu)$可以表示为$\sum\limits_{i=1}^D \dfrac{y _i^2}{\lambda _i}$,在二维情况即为椭圆,长短轴方向由特征向量方向决定。事实上$\sqrt{(x-\mu)^T \Sigma^{-1} (x - \mu)}$称之为Mahalanobis distance,用来表示数据的协方差距离,是一种有效的计算两个未知样本集的相似度的方法。它与欧式距离不同的是它考虑到各种特性之间的联系(例如,一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的,即独立于测量尺度。

MLE for a MVN

最大似然估计:
$$
\begin{align}
\bar{\mu} & =\dfrac{1}{N}\sum\limits_{i=1}^N x _i \triangleq \bar{x} \\
\bar{\Sigma} & =\dfrac{1}{N}\sum\limits_{i=1}^N (x _i-\bar{x})(x _i-\bar{x})^T \\
& =\dfrac{1}{N}\left(\sum\limits_{i=1}^N x _i x _i^T\right)-\bar{x}\bar{x}^T
\end{align}
$$

Maximum entropy derivation of the Gaussian

参考:Maximum entropy probability distribution

如果没有外界干扰,随机变量总是趋于无序,在经过足够时间的稳定演化,它应能达到最大程度的熵。多元正态分布是当随机变量有确定均值与协方差时的最大熵模型,这也是为什么自然界大多数分布满足正态分布。

其熵值为
$$
\begin{align}
h(f) &= -\int _{-\infty}^{\infty} \int _{-\infty}^{\infty} \cdots\int _{-\infty}^{\infty} f(x) lnf(x)dx, \\
&= \frac{1}{2} ln((2\pi e) ^n \cdot \left| \Sigma \right|)
\end{align}
$$

Gaussian discriminant analysis

可参考[CS229 Lecture notes: PART IV Generative Learning algorithms

当令generative classifier的$p(x|y=c,\theta)=\mathcal{N}(x|\mu _c, \Sigma _c)$,即为高斯分布时,这时的generative learning algorithm称为Gaussian discriminant analysis (GDA)。当为二分类时,$c \in \left {0,1 \right }$,GDA模型为
$$
\begin{align}
y &\sim Bernoulli(\phi) \\
x|y = 0 &\sim \mathcal{N}(\mu _0, \Sigma _0) \\
x|y = 1 &\sim \mathcal{N}({\mu _1, \Sigma _ 1})
\end {align}
$$
事实上,GDAlogistic regression之间有一个有趣的关系。当$\Sigma$一定时(这时候其实称为LDA,后文会提到),
$$
\begin{align}
p(y=1|x) &= \frac{p(y=1)p(x|y=1)}{p(y=1)p(x|y=1) + p(y=0)p(x|y=0)} \\
&= \frac{\phi \cdot \mathcal{N}(\mu _1, \Sigma _1)}{\phi \cdot \mathcal{N}(\mu _1, \Sigma) + (1-\phi) \cdot \mathcal{N}(\mu _0, \Sigma)} \\
&= \frac{1}{1+\frac{1-\phi}{\phi} \frac{\mathcal{N}(\mu _0, \Sigma)}{ \mathcal{N}(\mu _1, \Sigma)}} \\
&= \frac{1}{1+exp(-\theta ^Tx)}
\end{align}
$$
其中$\theta$为$\phi, \Sigma, \mu _0, \mu _1$的函数。这不就是logistic regression的$p(y=1|x)$吗,而logistic regression前面我们也提到过,属于discriminative algorithm。看起来像是互通的,哪种更好呢?其实,我们从$p(x|y)$为高斯分布可以推到$p(y|x)$为logistic函数,但是反过来就不行了,这说明GDA在数据的模型假设上比logistic regression更强,所以当两者的模型假设都是正确的时候,GDA模型更好,同时GDA需要的训练样本集可以更小(如果这个样本集满足GDA正态分布的假设)。相较而言,logistic regression的模型假设弱一些,所以会稳定一些。事实上,若$x|y=0 \sim Poisson(\lambda _0)$,同样也能推出$p(y|x)$为logistic函数。总而言之,对于数据分布的弱假设,logistic regression适应性强一些,稳定一些,当然预测能力也要弱一些。

分类预测时,$y=\arg \max\limits_{c} [\log p(y=c|\theta) + \log p(x|y=c,\theta)]$,这其实就是Bayes rule分子取log而已,分母在给定$x$的情况下为定值。

Quadratic discriminant analysis (QDA)

将高斯分布代入$p(y=c|x,\theta)=\dfrac{p(y=c|\theta)p(x|y=c,\theta)}{\sum_{c’}{p(y=c’|\theta)p(x|y=c’,\theta)}}$中得(注意$p(y=c|\theta) = \pi_c$),
$$
\begin{equation}
p(y=c|x,\theta)=\dfrac{\pi_c((2\pi)^{D}|\Sigma_c|)^{-\frac{1}{2}}\exp\left[-\frac{1}{2}(x-\mu_c)^T\Sigma_c^{-1}(x-\mu_c)\right]}{\sum_{c’}\pi_{c’}((2\pi)^{D}|\Sigma_{c’}|)^{-\frac{1}{2}}\exp\left[-\frac{1}{2}(x-\mu_{c’})^T\Sigma_{c’}^{-1}(x-\mu_{c’})\right]}
\end{equation}
$$
可以看到结果是关于$x$的二次函数(分母可看成常数项忽略),这也是为什么叫Quadratic discriminant analysis。因而QDA分类边界为平方分类边界(quadratic decision surfaces)。

Linear discriminant analysis (LDA)

推导过程略。关键一点是,LDA假设前提是$\Sigma _c = \Sigma$,此时关于$x$的平方项$-\frac{1}{2} x^T \Sigma^{-1}x$与$c$无关,由此可降为与$x$一阶相关,具体为$-\frac{1}{2}(-\mu _c \Sigma ^{-1} x - x^T \Sigma^{-1} \mu _c)=\mu _c \Sigma ^{-1} x$。这导致,LDA的分类边界为线性边界(linear decision surfaces)。

Strategies for preventing overfitting

使用MLE发生过拟合主要原因是协方差矩阵,如果两两之间都有一定的相关性,一个$n$维的协方差矩阵就对应$n(n+1)/2$个相关系数。所以引申出几个防过拟合的措施:

  • 使用对角矩阵,即假设特征都是条件独立的(两两相关系数为0),这时候等同于Naive Bayes classifier。
  • 使用同一个协方差矩阵,即$\Sigma _c = \Sigma$,这时候等同于LDA。这种手段称为parameter tyingparameter sharing
  • 结合上述两者,这时候称为diagonal covariance LDA。
  • 使用MAP来估计协方差矩阵。
  • 在低维的子空间进行拟合。

Bayesian statistics

Summarizing posterior distributions

MAP estimation

本部分内容可参考https://engineering.purdue.edu/kak/Tutorials/Trinity.pdf

不同于ML estimation,$\hat{\theta} _{ML}(x) = \arg \max\limits _{\theta}f(x|\theta)$,这里$f$是likelihood函数。

MAP estimation在ML的基础上加了prior,也就是假设$\theta$存在一个先验分布$g$,然后通过最大化后验概率来估计$\theta$,
$$
\hat{\theta} _{MAP}(x) = \arg \max\limits_{\theta} \frac{f(x|\theta)g(\theta)}{\int _{\vartheta}f(x|\vartheta)g(\vartheta)d\vartheta}=\arg \max\limits_{\theta}f(x|\theta)g(\theta)
$$
观察下可以发现$g(\theta)$为均匀分布时(即为常数),MAP estimation就变为了ML estimation。

用MAP的好处是可以把问题降为优化问题,但这种point estimate方法缺陷也很明显:它返回的是定值,无法衡量估计的不确定性,由此导致我们的预测分布变得overconfident。但是Bayesian estimation不然,它能计算整个后验分布概率$p(\theta|x)$。

我们再来看一下式子
$$
p(\theta|\mathcal{D}) = \frac{p(\mathcal{D}|\theta) \cdot p(\theta)}{p(\mathcal{D})} \\
posterior = \frac{likelihood \cdot prior}{evidence}
$$
其中$\theta$是要估计的参数,$\mathcal{D}$是Dataset。ML estimation仅考虑的是$p(\mathcal{D}|\theta)$,MAP estimation考虑了$p(\mathcal{D}|\theta) \cdot p(\theta)$,Bayesian estimation考虑的是$p(\theta|\mathcal{D})$完整的式子,不同于前两者,它没有$\arg \max$这个过程,但是考虑并计算$p(\mathcal{D}) = \int _{\theta} p(\mathcal{D}|\theta) p(\theta) d\theta$,由此得到$\theta$的分布$p(\theta|\mathcal{D})$。当我们通过这个分布去选择一个特定的$\theta$时(比如选择一个方差足够小的),就可以获知其置信程度。如果方差都很大,我们还可以断言通过这个Dataset不能找到$\theta$比较好的评估值。

这里提到MAP estimation采用的是0-1损失函数,我的理解是,当定义了损失函数$L(\theta, \hat{\theta})$后,loss 为$\int L(\theta, \hat{\theta}) p(\theta|\mathcal{D}) d \theta$。若取$L(\theta, \hat{\theta}) = \mathbb{I}(\theta, \hat{theta})$即0-1损失函数时,鉴于0-1损失函数是“相同时为1,不同时为0”,要使损失函数最小,当然取$\hat{\theta}$为$p(\theta|\mathcal{D})$概率最大时的$theta$,即$\arg \max\limits _{\theta}p(\theta|\mathcal{D})$,这样计算得到的$\hat{\theta}$也称为众数)(mode)。

这个mode经常是untypical(不可靠的),解决的方法是Bayesian Decision Theory。对于连续量$\theta$,通常选用平方损失函数$L(\theta,\hat{\theta}) = (\theta - \hat{\theta}) ^2$,对应的optimal estimator称为posterior mean。若$L(\theta, \hat{\theta}) = |\theta - \hat{\theta}|$,对应的optimal estimator称为posterior median。上面提到loss function为0-1损失函数时,对应的optimal estimator称为posterior mode

Inference for a difference in proportions

这里提到一个Amazon Sellers的例子,商家A有100个评论90个赞,商家B有2个评论0个赞,你会选哪个呢?看起来商家B好评率百分百,应该选商家B,但其实屁评论样本数太少可能说明不了什么。假设两个商家的好评率(原文reliabilities)分别为$\theta _1$与$\theta _2$,且先验概率服从均匀分布,即$\theta _i \sim {\rm Beta}(1,1)$,故后验概率分布为$p(\theta _1|\mathcal{D} _1) = {\rm Beta}(91, 11)$与$p(\theta _2|\mathcal{D} _2) = {\rm Beta}(3, 1)$,这里证明见Trinity.pdf–p24-26。计算$p(\theta_1 > \theta_2|\mathcal{D})$
$$
p(\theta_1>\theta_2|\mathcal{D}) = \int_{0}^{1} \int_{0}^{1} \mathbb{I}(\theta_1>\theta_2) {\rm Beta}(\theta_1|91, 11) {\rm Beta}(\theta_2|3, 1)d \theta_1 \theta_2
$$
计算结果为$p(\theta_1>\theta_2|D) = 0.710$,这意味着商家A更更可靠!

Bayesian Occam’s razor

“奥卡姆剃刀”意思是简约之法则,如果能达到同样效果,尽可能少浪费东西。在概率论中,如果一个假设不能增加理论的正确性,那么它的唯一副作用就是增加整个理论为错误的概率。

Priors

贝叶斯统计最大的争议是对priors的依赖,下面介绍几个选择priors的方法:

  • uninformative priors: 如果我们对$\theta$的先验没有很强的需求,用一个“万金油”来套
  • robust priors: 如果我们对$\theta$信心不大,要确保减少它对模型的影响,可以使用robust priors (Insua and Ruggeri 2000)
  • Mixtures of conjugate priors: 由于robust priors计算代价比较高,由此引入conjugate priors,但不太robust。mixtures of conjugate priors能比较好地平衡这种计算代价与灵活性。

Frequentist statistics

Frequentist decision theory

参考Stat260: Bayesian Modeling and Inference

频率学派没有posterior一说。定义frequentist risk/loss
$$
R(\theta, \delta) = E _{\theta}l(\theta, \delta(X))
$$
这个期望的取值遍历数据$X$,$\theta$为估计值。

我们熟悉的Squared-error loss即取loss function $l(\theta, \delta(X)) = (\theta - \delta(X)) ^2$,得
$$
\begin{align}
R(\theta, \delta) &= E _{\theta}l(\theta, \delta(X)) \\
&= E _{\theta}(\theta - \delta(X)) ^2 \\
&= E _{\theta}(\theta - E_{\theta}\delta(X) + E_{\theta}\delta(X) - \delta(X)) ^2 \\
&=\underbrace { (\theta - E_{\theta}\delta(X))^2}_{Bias^2} + \underbrace{E_{\theta}(\delta(X) - E_{\theta}\delta(X))^2}_{Variance}
\end{align}
$$

Linear Regression

Representation

linear regression假设残差呈正态分布,即
$$
p(y|x, \theta) = \mathcal{N}(y|\omega^Tx, \delta^2)
$$
linear regression也可以用来处理non-linear的关系,
$$
p(y|x, \theta) = \mathcal{N}(y|\omega^T \phi(x), \delta^2)
$$
例如可以取$\phi(x) = (1, x, \cdots, x^d)$,由于与系数$\omega$的关系仍为线性,所以还是称为Linear Regression。

MLE

最小化 negative log likelihood (NLL) 等价于MLE,
$$
NLL(\theta) \triangleq -l(\theta) = -\log(\mathcal{D}|\theta)
$$
变成最小化的好处是许多函数库中的最优化函数都是找到函数的最小值。

对于linear regression来说(注意残差满足正态分布),log likelihood函数为
$$
\begin{align}
l(\theta) &= \sum\limits_{i=1}^{N}\log[\frac{1}{\sqrt{2\pi}\sigma} \exp(-\frac{1}{2\sigma^2}(y_i - \omega^Tx_i)^2)] \\
&= -\frac{1}{2\sigma^2}{\rm RSS}(\omega) - \frac{N}{2} \log(2\pi \sigma^2)
\end{align}
$$
RSS (Residual Sum of Squares) 即为
$$
{\rm RSS}(\omega) \triangleq \sum\limits_{i=1}^{N}(y_i - \omega^T x_i)^2
$$
我们可以看到MLE即为minimize RSS,这种方法也称为least squares。丢掉$l(\theta)$中的常数项,可以得到
$$
{\rm NLL}(\omega) = \frac{1}{2}\sum\limits_{i=1}^{N}(y_i - \omega^T x_i)^2
$$
下面介绍最小化NLL常用的两种方法:OLS与SGD。

OLS

在数据规模小于1000时,我们能直接计算出
$$
\hat{\omega}_{OLS} = (X^TX)^{-1} X^Ty
$$
这个$\hat{\omega}_{OLS}$称为ordinary least squares (OLS)

证明需要用到矩阵的一些基础知识,可以参考matrix cookbook矩阵、向量求导法则,只要记住这些规则是元素逐次求导的简化形式就很好理解了。注意,原文中的证明到$tr$那一步我认为是比较莫名的,可以省略那两步。以及中间过程少了$1/N$,虽然对结果没什么影响。

Geometric interpretation

几何解释就是,如何让向量$y$到向量$(x_1, x_2, \cdots, x_n)$生成的线性生成空间${\rm span}(X) = {\omega_1 x_1 + \cdots + \omega_n x_n | \omega_1, \cdots, \omega_n \in K}$的距离最小,这从${\rm NLL}(\omega) = \frac{1}{2}(y-X\omega)^T (y - X\omega)$可以看出。距离最小,从欧式空间看,不就是投影距离吗,$\hat{y}$即为投影点。

SGD

当数据规模很大时,Stochastic Gradient descent (SGD)是比较有效的手段。gradient descent大家应该都很熟悉,SGD唯一的区别是每一次迭代不是计算完整的梯度(true gradient),而是随机取一个关于$\omega_i$的梯度(the gradient at a single example),以提高收敛速度。

Ridge regression (MAP)

以前理解的ridge regression都是在于添加一个structural penalty,这里给出了ridge regression的Bayesian interpretation: 添加一个关于$\omega$的的正态先验分布。

还有一个观点是,将这个penalty看成假数据
$$
\begin{align}
J(\omega) &= \frac{1}{N} \sum\limits_{i=1}^{N}(y_i - (\omega_0 + \omega^T x_i))^2 + \lambda \sum\limits_{j=1}^{p}\omega_j^2 \\
&= \frac{1}{N} \sum\limits_{i=1}^{N}(y_i - (\omega_0 + \omega^T x_i))^2 + \sum\limits_{j=1}^{p}(0-\sqrt{\lambda}\omega_j)^2
\end{align}
$$
这样就是对一个新的dataset进行linear regression。

Logistic Regression

Representation

Logistic regression可以是binomial或multinomial。binomial logistic regression形式如下
$$
p(y|x, \omega) = {\rm Ber}(y|sigmoid(\omega^T x))
$$
其中$\omega$与$x$为extended vector,即$\omega = (b, \omega_1, \omega_2, \cdots, \omega_D), x = (1, x_1, x_2, \cdots, x_D)$。