CS229 Machine Learning学习笔记:Note 2(广义线性模型、高斯判别分析模型、朴素贝叶斯)

广义线性模型(Generalized Linear Models,GLM)

指数分布族(Exponential Family Distributions)

指数分布族被定义为:

\[p(y;\eta)=b(y)\exp(\eta^TT(y)-a(\eta)) \]

其中\(\eta\)是自然参数(natural parameter);\(T(y)\)是充分统计量(sufficient statistic),一般\(T(y)=y\)\(a(\eta)\)是对数分割函数(log partition function),\(e^{-a(\eta)}\)起着归一化常数(normalization constant)的作用,保证了\(p(y;\eta)\)的积分值为1

伯努利分布、高斯分布都属于指数分布族

伯努利分布与指数分布族

对于伯努利分布:

\[p(y;\phi)=\phi^y(1-\phi)^{1-y} \]

\[=\phi^y(1-\phi)^{1-y} \]

\[=\exp(\log(\phi^y(1-\phi)^{1-y})) \]

\[=\exp(y\log \phi+(1-y)\log(1-\phi)) \]

\[=\exp((\log (\frac \phi {1-\phi}))y+\log(1-\phi)) \]

此时,标量\(\eta=\log (\frac \phi {1-\phi})\),则\(\phi=\frac {e^\eta}{1+e^\eta}\);取

\[b(y)=1 \]

\[T(y)=y \]

\[a(\eta)=-\log(1-\phi)=-\log(1-\frac {e^\eta}{1+e^\eta})=\log(1+e^\eta) \]

这表明伯努利分布可以通过指数分布表示

高斯分布与指数分布族

由于\(\sigma^2\)对最终选取的最优的\(\theta\)没有影响,因此这里将其视为常数,不妨取\(\sigma^2=1\)

\[p(y;\mu)=\frac 1 {\sqrt{2\pi}}\exp(-\frac 1 2 (y-\mu)^2) \]

\[=\frac 1 {\sqrt{2\pi}}\exp(-\frac 1 2 y^2)\exp(\mu y-\frac 1 2 \mu^2) \]

\[b(y)=\frac 1 {\sqrt{2\pi}}\exp(-\frac 1 2 y^2) \]

\[\eta=\mu \]

\[T(y)=y \]

\[a(\eta)=\frac 1 2 \mu^2=\frac 1 2 \eta^2 \]

可见高斯分布也可以通过指数分布表示

构建广义线性模型

任何GLM模型都遵循以下三条假设:

    1. \(y|x;\theta \sim\)指数分布族\((\eta)\),即,给出\(x\),参数\(\theta\),真实输出\(y\)服从某种参数为\(\eta\)的指数分布
    1. 给定\(x\),目的是预测真实输出\(T(y)\),一般情况下\(T(y)=y\),这意味着要求选取恰当的\(\theta\)使得\(h_\theta(x)\)的输出满足\(h_\theta(x)=E[y|x]\)(其中\(E[y|x]\)是给定输入\(x\),输出值的期望),例如在逻辑回归中应有:

\[h_\theta(x)=0\cdot p(y=0|x;\theta)+1\cdot p(y=1|x;\theta)=E[y|x] \]

    1. 指数分布的参数\(\eta=\theta^Tx\),若\(\eta\)是向量,则\(\eta_i=\theta_i^Tx\),这个假设体现出这个模型是线性的。

从GLM看最小二乘法的假设函数

在最小二乘法中,由变量x决定的目标变量(响应变量)y是连续的,服从高斯分布\(\mathcal{N}(\mu,\sigma^2)\)(\(\mu\)可能是由\(x\)决定的参数),则最小二乘法的假设函数\(h_\theta(x)\)为:

\[h_\theta(x)=E[y|x;\theta] \]

(假设2)

\[=\mu \]

(y服从高斯分布,\(\mathcal{N}(\mu,\sigma^2)\),其期望为\(\mu\))

\[=\eta \]

(在"高斯分布与指数分布族"一节中已推出\(\mu=\eta\))

\[=\theta^Tx \]

(假设3)

从GLM看逻辑回归的假设函数

在二分类逻辑回归中,目标变量\(y\in\{0,1\}\),服从伯努利分布,\(y|x;\theta\sim \mathrm{Bernoulli(\phi)}\),之前在"伯努利分布与指数分布族"一节中已得出\(\phi=\frac {e^\eta}{1+e^\eta}=\frac {1}{1+e^{-\eta}}\),从而:

\[h_\theta(x)=E[y|x;\theta] \]

(假设2)

\[=\phi \]

(\(y|x;\theta\sim\mathrm{Bernoulli(\phi)}\)的期望为\(\phi\))

\[=\frac {1}{1+e^{-\eta}} \]

\[=\frac {1}{1+e^{-\theta^Tx}} \]

(假设3)

GLM与Softmax回归

Softmax回归的假设函数

考虑多元分类问题:数据的真实标签\(y\in\{1,2,\cdots,k\}\),不采用多元逻辑回归,直接一次性得到分类结果。

我们用多项式分布(multinomial distribution)建模,该分布由参数\(\phi_1,\cdots,\phi_{k-1}\)决定,为方便描述,令\(\phi_k=1-\sum_{i=1}^{k-1}\phi_i\),注意,它不是参数,参数只有k-1个

另外,\(T(y)\in \mathbb{R}^{k-1}\)

\[T(1)=(1,0,\cdots,0)^T \]

\[T(2)=(0,1,0,\cdots,0)^T \]

\[T(k-1)=(0,\cdots,0,1)^T \]

\[T(k)=(0,\cdots,0)^T \]

记符号\(1\{True\}=1,1\{False\}=0\),则

\[T(y)_i=1\{y=i\} \]

从而

\[E[T(y)_i]=P(y=i)=\phi_i \]

目标变量y的概率分布为:

\[p(y;\phi)=\phi_1^{1\{y=1\}}\cdots\phi_k^{1\{y=k\}} \]

\[=\phi_1^{1\{y=1\}}\cdots\phi_{k-1}^{1\{y=k-1\}}\phi_k^{1-\sum_{i=1}^{k-1}1\{y=i\}} \]

\[=\phi_1^{(T(y))_1}\cdots\phi_{k-1}^{(T(y))_{k-1}}\phi_k^{1-\sum_{i=1}^{k-1}{(T(y))_i}} \]

\[=\exp((T(y))_1\log\phi_1\cdots{(T(y))_{k-1}}\log\phi_{k-1}+(1-\sum_{i=1}^{k-1}{(T(y))_i})\log \phi_k) \]

\[=\exp((T(y))_1\log{\frac {\phi_1}{\phi_k}}\cdots{(T(y))_{k-1}}\log{\frac {\phi_{k-1}}{\phi_k}}+\log \phi_k) \]

\[=b(y)\exp(\eta^TT(y)-a(\eta)) \]

其中,

\[\eta=\begin{pmatrix} \log{\frac {\phi_1}{\phi_k}}\\ \vdots\\ \log{\frac {\phi_{k-1}}{\phi_k}} \end{pmatrix}\]

\[a(\eta)=-\log\phi_k \]

\[b(y)=1 \]

可见多项式分布可以用指数分布表示,其中

\[\eta_i=\log{\frac{\phi_i}{\phi_k}} \]

\[e^{\eta_i}=\frac{\phi_i}{\phi_k} \]

可得:

\[\phi_k\sum_{i=1}^ke^{\eta_i}=1 \]

\[\phi_k=\frac 1 {\sum_{i=1}^ke^{\eta_i}} \]

\[\phi_i=\frac {e^{\eta_i}} {\sum_{j=1}^ke^{\eta_j}} \]

(这一函数从\(\eta\)映射到\(\phi\),称为Softmax函数)

根据之前的假设3,$$\eta_i=\theta_i^Tx$$

可得

\[\phi_i=\frac {e^{\theta_i^Tx}} {\sum_{j=1}^ke^{\theta_j^Tx}} \]

\[p(y=i|x;\theta)=\phi_i=\frac {e^{\theta_i^Tx}} {\sum_{j=1}^ke^{\theta_j^Tx}} \]

这被称为Softmax回归,其假设函数

\(p(y=k|x;\theta)\)可以由\(1-\sum_{i=1}^{k-1}p(y=i|x;\theta)=1-\sum_{i=1}^{k-1}\phi_i\)求得

Softmax回归的误差函数

Softmax回归的误差函数也可以通过最大化似然估计得到。
似然估计函数:

\[L(\theta)=\prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) \]

对数似然

\[l(\theta)=\sum_{i=1}^m \log(p(y^{(i)}|x^{(i)};\theta)) \]

\[=\sum_{i=1}^m \log(\prod_{l=1}^k (p(y^{(i)}=l|x^{(i)};\theta))^{1\{y^{(i)}=l\}}) \]

\[=\sum_{i=1}^m \log(\prod_{l=1}^k (\frac {e^{\theta_l^Tx^{(i)}}} {\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}})^{1\{y^{(i)}=l\}}) \]

优化目标就是

\[\arg \max_\theta l(\theta) \]

高斯判别分析模型(Gaussian Discriminant Analysis Model,GDA)

假设现在有一个二分类问题,输入特征向量\(x\)的每个元素都是连续值,则我们可以将样本标签y的分布(evidence)视为参数为\(\phi\)的伯努利分布:

\[y\sim \mathrm{Bernoulli}(\phi) \]

\(p(x|y)\)(样本标签为0(1)时,输入特征的分布)视为多元高斯分布:

\[x|y=0\sim \mathcal N (\mu_0,\Sigma) \]

\[x|y=1\sim \mathcal N (\mu_1,\Sigma) \]

写出公式:

\[p(y)=\phi^y(1-\phi)^{1-y} \]

\[p(x|y=0)=\frac 1 {(2\pi)^{\frac n 2}|\Sigma|^{\frac 1 2}}\exp (-\frac 1 2(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)) \]

\[p(x|y=1)=\frac 1 {(2\pi)^{\frac n 2}|\Sigma|^{\frac 1 2}}\exp (-\frac 1 2(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)) \]

注意:这里的多元高斯分布模型,y=0和y=1时的均值\(\mu_0,\mu_1\)不同,但协方差矩阵是完全一样的

由参数\(\phi,\mu_0,\mu_1,\Sigma\)决定的对数似然

\[l(\phi,\mu_0,\mu_1,\Sigma)=\log \prod_{i=1}^m p(x^{(i)},y^{(i)};\phi,\mu_0,\mu_1,\Sigma) \]

\[=\log \prod_{i=1}^m p(x^{(i)}|y^{(i)};\phi,\mu_0,\mu_1,\Sigma)p(y^{(i)};\phi) \]

通过最大化对数似然函数可得,

\[\phi=\frac 1 m \sum_{i=1}^m1\{y^{(i)}=1\} \]

\[\mu_0=\frac {\sum_{i=1}^m 1\{y^{(i)}=0\}x^{(i)}}{\sum_{i=1}^m 1\{y^{(i)}=0\}} \]

\[\mu_1=\frac {\sum_{i=1}^m 1\{y^{(i)}=1\}x^{(i)}}{\sum_{i=1}^m 1\{y^{(i)}=1\}} \]

\[\Sigma=\frac 1 m \sum_{i=1}^m (x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T \]

可见图中y=0和1的高斯分布等高线图,除了中心不同以外,其他完全相同。在\(p(y=1|x)>p(y=0|x)\)时,模型输出分类为1,反之为0,使得\(p(y=1|x)=p(y=0|x)=0.5\)的点\(x\)在图中可以构成一条直线(决策边界)

GDA vs. 逻辑回归

若我们将\(p(y=1|x;\phi,\mu_0,\mu_1,\Sigma)\)视为一个关于n+1维列向量x的函数,则

\[p(y=1|x;\phi,\mu_0,\mu_1,\Sigma)=\frac 1 {1+\exp(-\theta^Tx)} \]

其中\(\theta\)是关于\(\phi,\mu_0,\mu_1,\Sigma\)的函数,上式与逻辑回归的假设函数\(h_\theta(x)=p(y=1|x;\theta)\)是完全一样的

从上面的图可以看出,如果假设\(p(x|y)\)服从多元高斯分布,则可以推出假设\(p(y|x)\)是逻辑回归的假设函数形式;但是如果假设\(p(y|x)\)是逻辑回归的假设函数形式,显然无法推出假设\(p(x|y)\)服从多元高斯分布,决策边界两侧的正负样本分布可以随意,不一定要近似多元高斯分布。

这表明GDA的假设比逻辑回归的假设更强,GDA不仅假设决策边界是线性的,而且假设正样本、负样本服从多元高斯分布,逻辑回归只假设决策边界是线性的

但当正负样本的分布的确满足GDA的假设时,GDA比逻辑回归表现得更高效(asymptotically efficient),即,在训练样本数目很少时,GDA的准确率更高。

反之,由于逻辑回归的假设更弱,因此逻辑回归表现得更鲁棒、受输入数据的分布特性的影响更小,在对非高斯分布(non-Gaussian)的数据时表现更好,因此一般来讲,逻辑回归比GDA用得更多

朴素贝叶斯(Naive Bayes)

GDA中,特征向量x中每个元素都是连续值,现在考虑一种不同的学习算法,其特征向量x中每个元素都是离散值

在垃圾邮件过滤问题中,输入特征向量\(x\)\(x_i=1\)表示词库中第i个词出现过,反之没有出现过,现在要通过特征向量\(x\)预测邮件是否是垃圾邮件(\(y=0/1\))

现在对\(p(x|y)\)建模,在这个问题中,特征向量\(x\)的维度一般很大(50000),如果采用多项式分布的话,则给定x,得到的结果有\(2^{50000}\)种,则参数向量就是\(2^{50000}-1\)维的,显然不可行。

朴素贝叶斯算法对\(p(x|y)\)作出了一个很强的假设:由\(y\)决定的\(x\),其中任意两个元素\(x_i,x_j\)的取值是相互条件独立(conditionally independent)的,即,若已知\(p(x_i|y)\),则其不会影响\(p(x_j|y)\)的取值。则\(p(x_j|y)=p(x_j|y,x_i)\)(给定\(y\),得到的\(x_j\)的概率,与给定\(y,x_i\),得到的\(x_j\)的概率,完全相同)

\[p(x_1,\cdots,x_n |y)=p(x_1|y)p(x_2|y,x_1)\cdots p(x_n|y,x_1,\cdots,x_{n-1}) \]

(根据概率的性质)

\[=\prod_{i=1}^n p(x_i|y) \]

(朴素贝叶斯假设)

模型参数

\[\phi_{i|y=1}=p(x_i=1|y=1) \]

\[\phi_{i|y=0}=p(x_i=1|y=0) \]

\[\phi_{y}=p(y=1) \]

极大似然估计

给定训练集\(\{(x^{(i)},y^{(i)})|i=1,\cdots,m\}\),则其似然估计为

\[\mathcal L(\phi_y,\phi_{i|y=0},\phi_{i|y=1})=\prod_{i=1}^m p(x^{(i)},y^{(i)}) \]

最大化该函数,得到参数取值为:

\[\phi_{j|y=1}=\frac {\sum_{i=1}^m1\{x_j^{(i)}=1 \wedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}} \]

(标签为1的所有训练样本中,\(x_j^{(i)}=1\)的比例)

\[\phi_{j|y=0}=\frac {\sum_{i=1}^m1\{x_j^{(i)}=1 \wedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}} \]

(标签为0的所有训练样本中,\(x_j^{(i)}=1\)的比例)

\[\phi_{y}=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}} {m} \]

(标签为1的训练样本的比例)

假设函数

\[p(y=1|x)=\frac {p(x|y=1)p(y=1)}{p(x)} \]

\[=\frac {(\prod_{i=1}^np(x_i|y=1))p(y=1)}{p(x|y=1)p(y=1)+p(x|y=0)p(y=0)} \]

\[=\frac {(\prod_{i=1}^np(x_i|y=1))p(y=1)}{(\prod_{i=1}^np(x_i|y=1))p(y=1)+(\prod_{i=1}^np(x_i|y=0))p(y=0)} \]

其中,\(x_i=1\)\(p(x_i|y=1)=\phi_{i|y=1}\),\(p(x_i|y=0)=\phi_{i|y=0}\)\(x_i=0\)\(p(x_i|y=1)=1-\phi_{i|y=1}\),\(p(x_i|y=0)=1-\phi_{i|y=0}\)

\(p(y=1|x)>p(y=0|x)\),输出分类为1,反之输出分类为0

拉普拉斯平滑(Laplace Smoothing)

设词库里第n个词为"NIPS",该词在之前的所有训练样本中都没有出现过,则根据之前的公式,有:

\[\phi_{n|y=1}=\frac {\sum_{i=1}^m1\{x_n^{(i)}=1 \wedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}}=0 \]

\[\phi_{n|y=0}=\frac {\sum_{i=1}^m1\{x_n^{(i)}=1 \wedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}}=0 \]

\[p(y=1|x)=\frac {(\prod_{i=1}^np(x_i|y=1))p(y=1)}{(\prod_{i=1}^np(x_i|y=1))p(y=1)+(\prod_{i=1}^np(x_i|y=0))p(y=0)}=\frac 0 0 \]

这个式子是没有意义的,这就无法对输入样本做出预测了

回顾多项式分布,若随机变量\(z\in \{1,2,\cdots,k\}\)服从多项式分布,则多项式分布的参数\(\phi_i=p(z=i)\);给出m个z的观测值\(\{z^{(1)},\cdots,z^{(m)}\}\),极大似然估计后,参数

\[\phi_j=\frac {\sum_{i=1}^m1\{z^{(i)}=j\}} m \]

(m个观测值中取值为j的比例)

若随机变量z的某些取值j在观测样本中从未出现过,这些\(\phi_j=0\),而拉普拉斯平滑修改了一下上式,解决了这个问题:

\[\phi_j=\frac {\sum_{i=1}^m1\{z^{(i)}=j\}+1} {m+k} \]

此时仍有\(\sum_{j=1}^k\phi_j=1\),但是即使某个取值j在观测样本中从未出现过,\(\phi_j=\frac 1 {m+k}\neq 0\)

回到朴素贝叶斯算法中:

\[\phi_{j|y=1}=\frac {\sum_{i=1}^m1\{x_j^{(i)}=1 \wedge y^{(i)}=1\}+1}{\sum_{i=1}^m1\{y^{(i)}=1\}+2} \]

\[\phi_{j|y=0}=\frac {\sum_{i=1}^m1\{x_j^{(i)}=1 \wedge y^{(i)}=0\}+1}{\sum_{i=1}^m1\{y^{(i)}=0\}+2} \]

\[\phi_{y}=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}} {m} \]

(一般正样本是存在的,\(\phi_y\)大于0,不必对其公式作修改)

事件模型(Event Model)实现垃圾邮件过滤

在垃圾邮件过滤问题中,之前提到的朴素贝叶斯算法使用的是多元伯努利事件模型(multi-variate Bernoulli event model),这个模型有如下假设:

  • 1.首先根据先验概率\(p(y)\)来随机确定一封邮件是否是垃圾邮件

  • 2.发送邮件的人在词库中随机选取若干单词,已知邮件是否是垃圾邮件的前提下,单词i和单词j在邮件中出现,这两个事件是相互独立的

下面介绍一种新的模型:多项式事件模型,首先约定一些符号:

\(x_i\)表示邮件中第i个单词,\(x_i\in\{1,\cdots,|V|\}\)\(|V|\)是词库的大小,于是一封由n个单词组成的邮件可以用n维向量\((x_1,\cdots,x_n)\)表示(注意,不同的邮件的n可能不同),比如词库里第一个单词为A,第35000个单词为NIPS,则"A NIPS"可以用向量\(\{1,35000\}^T\)表示。

在多项式事件模型中,有如下假设:

  • 1.生成邮件的第一步是根据先验概率\(p(y)\),随机确定它是否是垃圾邮件

  • 2.然后,邮件作者首先根据多项式分布来随机确定邮件的第一个词\(x_1\);再根据相同的多项式分布来随机确定\(x_2\)\(x_2\)的选择与\(x_1\)是独立的;以此类推,每次选择的词与之前选择的词是独立的,直至选完所有n个词

模型参数

\[\phi_y=p(y) \]

对于邮件中第j个单词\(x_j\),有

\[\phi_{i|y=1}=p(x_j=i|y=1) \]

\[\phi_{i|y=0}=p(x_j=i|y=0) \]

注意这两个参数与j无关,即最终随机选择的\(x_j\)是与其在邮件中的位置j无关的,即对于任意的j,概率分布\(p(x_j|y)\)是完全相同的

现在给出训练集\(\{(x^{(i)},y^{(i)});i=1,\cdots,m\}\),其中\(x^{(i)}=(x_1^{(i)},\cdots,x_{n_i}^{(i)})\),\(n_i\)是第i个训练样本的单词个数

则模型对训练集的似然性为:

\[\mathcal L(\phi,\phi_{i|y=0},\phi_{i|y=1})=\prod_{i=1}^m p(x^{(i)},y^{(i)}) \]

\[=\prod_{i=1}^m p(x^{(i)}|y^{(i)})p(y^{(i)}) \]

\[=\prod_{i=1}^m (\prod_{j=1}^{n_i} p(x_j^{(i)}|y^{(i)};\phi_{i|y=0},\phi_{i|y=1})))p(y^{(i)};\phi_y) \]

通过极大似然估计可以得到参数的取值:

\[\phi_{k|y=1}=\frac {\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x_j^{(i)}=k\wedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}n_i} \]

(词库编号为k的单词,在所有垃圾邮件中出现过的次数,除以,所有垃圾邮件的单词总数)

\[\phi_{k|y=0}=\frac {\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x_j^{(i)}=k\wedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}n_i} \]

(词库编号为k的单词,在所有非垃圾邮件中出现过的次数,除以,所有非垃圾邮件的单词总数)

\[\phi_y=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m} \]

(垃圾邮件在所有邮件中的比例)

设一封邮件有n个单词:\(x=\{x_1,\cdots,x_n\}\),则其为垃圾邮件的概率

\[p(y=1|x)=\frac {p(x=\{x_1,\cdots,x_n\}|y=1)p(y=1)}{p(x=\{x_1,\cdots,x_n\})} \]

\[=\frac {(\prod_{i=1}^n\phi_{x_i|y=1})\phi_{y}}{p(x=\{x_1,\cdots,x_n\}|y=1)p(y=1)+p(x=\{x_1,\cdots,x_n\}|y=0)p(y=0)} \]

\[=\frac {(\prod_{i=1}^n\phi_{x_i|y=1})\phi_{y}}{(\prod_{i=1}^n\phi_{x_i|y=1})\phi_y+(\prod_{i=1}^n\phi_{x_i|y=0})(1-\phi_y)} \]

如果加入拉普拉斯平滑的话,参数变为:

\[\phi_{k|y=1}=\frac {\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x_j^{(i)}=k\wedge y^{(i)}=1\}+1}{\sum_{i=1}^m1\{y^{(i)}=1\}n_i+|V|} \]

\[\phi_{k|y=0}=\frac {\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x_j^{(i)}=k\wedge y^{(i)}=0\}+1}{\sum_{i=1}^m1\{y^{(i)}=0\}n_i+|V|} \]

\[\phi_y=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m} \]

posted @ 2018-07-14 10:43  YongkangZhang  阅读(672)  评论(0编辑  收藏  举报