线性分类|机器学习推导系列(四)

一、从线性回归到线性分类

  1. 线性回归的特性

\left\{\begin{matrix} 线性\left\{\begin{matrix} 属性线性\overset{打破}{\rightarrow}属性非线性:特征转换(多项式回归\\ 全局线性\overset{打破}{\rightarrow}全局非线性:线性分类(激活函数是非线性)\\ 系数线性\overset{打破}{\rightarrow}系数非线性:神经网络 \end{matrix}\right.\\ 全局性\overset{打破}{\rightarrow}线性样条回归、决策树\\ 数据未加工\overset{打破}{\rightarrow}PCA、流形 \end{matrix}\right.

线性回归具备线性、全局性和数据未加工的特性。

线性包括三个方面,其中属性线性指的是关于是线性的;全局线性指的是只是一个线性组合,然后直接就输出得到;系数线性指的是关于是线性的。

全局性指的是线性回归是在整个特征空间上学习,并没有将特征空间进行划分然后在每个划分上学习。

数据未加工指的是线性回归直接在给定数据上进行学习没有对数据进行其他的加工。

其他的学习算法跟线性回归比较起来打破了其某些特性,在上面的树状图中也举出了一些例子。

  1. 从线性回归到线性分类

线性回归经过一个激活函数然后根据一个阈值来获得分类的结果,如此就成为线性分类,也可以理解为将降维到一维而获得分类结果。

激活函数y=f(w^{T}x+b),y\in \left\{\begin{matrix} \left \{0,1\right \},硬分类\\ [0,1],软分类 \end{matrix}\right.\\ 函数f叫做激活函数(activation\: function)\\ 函数f^{-1}叫做链接函数(link\: function)\\ f:w^{T}x+b \mapsto \left \{0,1\right \}/[0,1]\\ f^{-1}:\left \{0,1\right \}/[0,1]\mapsto w^{T}x+b

  1. 硬分类和软分类

线性分类\left\{\begin{matrix} 硬分类\left\{\begin{matrix} 线性判别分析\\ 感知机 \end{matrix}\right.\\ 软分类\left\{\begin{matrix} 高斯判别分析\\ 朴素贝叶斯\\ 逻辑回归 \end{matrix}\right. \end{matrix}\right.

二、感知机

  1. 概述

假设有一可以被线性分类的样本集,其中。感知机算法使用随机梯度下降法(SGD)来在特征空间寻找一个超平面来将数据划分为正、负两类,其中,是超平面的法向量。

  1. 学习策略

感知机的思想是错误驱动。其模型是,输出该样本点的类别,定义集合M为误分类点的集合。

可以确定对于误分类的数据来说,满足以下关系:

损失函数的一个自然选择是误分类点的个数,即,但是这样的损失函数是不可导的,不易优化。因此采用另一种损失函数,即误分类点到超平面的总距离。

在空间中任一点到超平面的距离为:

\frac{\left | w^{T}x_{0}+b\right |}{\left \| w\right \|}\\ (可以参考初中知识,平面中点到直线的距离:d=\frac{\left | Ax+By+C\right |}{\sqrt{A^{2}+B^{2}}})

因此所有误分类点到超平面的总距离为:

不考虑,就得到感知机的损失函数:

  1. 学习算法

计算损失函数的梯度:

感知机的学习算法使用随机梯度下降法(SGD),这里选取作为学习率,其学习的步骤如下:
①选取初值;
②在训练集中选取数据;
③如果,则更新参数:

④转至②,直到训练集中没有误分类点。

截止这里我们都是假设数据是线性可分的,如果线性不可分,可以用口袋算法(pocket algorithm),这里不做过多介绍。

三、线性判别分析

  1. 概述

线性判别分析可用于处理二分类问题,其过程是寻找一个最佳的投影方向,使得样本点在该方向上的投影符合类内小、类间大的思想,具体指的是类内的方差之和小,类间的均值之差大。

LDA

假设有以下数据:

X=(x_{1},x_{1},\cdots ,x_{N})^{T}=\begin{pmatrix} x_{1}^{T}\\ x_{2}^{T}\\ \vdots \\ x_{N}^{T} \end{pmatrix}_{N\times p}Y=\begin{pmatrix} y_{1}\\ y_{2}\\ \vdots\\ y_{N} \end{pmatrix}_{N \times 1}\\ \left \{(x_{i},y_{i})\right \}_{i=1}^{N},x_{i}\in \mathbb{R}^{p},y_{i}\in \{\underset{C_{1}}{\underline{+1}},\underset{C_{2}}{\underline{-1}}\}\\ x_{C_{1}}=\left \{x_{i}|y_{i}=+1\right \},x_{C_{2}}=\left \{x_{i}|y_{i}=-1\right \}\\ \left | x_{C_{1}}\right |=N_{1},\left | x_{C_{2}}\right |=N_{2},N_{1}+N_{2}=N

  1. 线性判别分析的损失函数

投影轴的方向向量为,将样本点往该轴上投影以后的值为,均值和方差按照如下方法计算:

接下来计算每一类的均值和方差:

C_{1}:\\ \bar{z}_{1}=\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}w^{T}x_{i} \\ S_{1}=\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}(w^{T}x_{i}-\bar{z}_{1})(w^{T}x_{i}-\bar{z}_{1})^{T} \\ C_{2}:\\ \bar{z}_{2}=\frac{1}{N_{2}}\sum_{i=1}^{N_{2}}w^{T}x_{i} \\ S_{2}=\frac{1}{N_{2}}\sum_{i=1}^{N_{2}}(w^{T}x_{i}-\bar{z}_{1})(w^{T}x_{i}-\bar{z}_{1})^{T}

定义损失函数:

J(w)=\frac{(\bar{z}_{1}-\bar{z}_{2})^{2}}{S_{1}+S_{2}} (\bar{z}_{1}-\bar{z}_{2})^{2}=(\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}w^{T}x_{i}-\frac{1}{N_{2}}\sum_{i=1}^{N_{2}}w^{T}x_{i})^{2}\\ =[w^{T}(\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}x_{i}-\frac{1}{N_{2}}\sum_{i=1}^{N_{2}}x_{i})]^{2}\\ =[w^{T}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})]^{2}\\ =w^{T}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})^{T}w\\ S_{1}=\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}(w^{T}x_{i}-\bar{z}_{1})(w^{T}x_{i}-\bar{z}_{1})^{T}\\ =\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}(w^{T}x_{i}-\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}w^{T}x_{i})(w^{T}x_{i}-\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}w^{T}x_{i})^{T}\\ =\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}w^{T}(x_{i}-\bar{x}_{C_{1}})(x_{i}-\bar{x}_{C_{1}})^{T}w\\ =w^{T}[\frac{1}{N_{1}}\sum_{i=1}^{N_{1}}(x_{i}-\bar{x}_{C_{1}})(x_{i}-\bar{x}_{C_{1}})^{T}]w\\ =w^{T}S_{C_{1}}w\\ S_{1}+S_{2}=w^{T}S_{C_{1}}w+w^{T}S_{C_{2}}w=w^{T}(S_{C_{1}}+S_{C_{2}})w\\ \therefore J(w)=\frac{w^{T}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})^{T}w}{w^{T}(S_{C_{1}}+S_{C_{2}})w}

极大化就可以使得类内的方差之和小,类间的均值之差大。

  1. 线性判别分析的求解

令\left\{\begin{matrix} S_{b}=(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})^{T}\\ S_{w}=S_{C_{1}}+S_{C_{2}} \end{matrix}\right.\\ 则J(w)=\frac{w^{T}S_{b}w}{w^{T}S_{w}w}=w^{T}S_{b}w(w^{T}S_{w}w)^{-1}\\ \frac{\partial J(w)}{\partial w}=2S_{b}w(w^{T}S_{w}w)^{-1}+w^{T}S_{b}w(-1)(w^{T}S_{w}w)^{-2}2S_{b}w\\ =2[S_{b}w(w^{T}S_{w}w)^{-1}+w^{T}S_{b}w(-1)(w^{T}S_{w}w)^{-2}S_{b}w]=0\\ (w^{T}S_{b}w,w^{T}S_{w}w\in \mathbb{R})\\ \Rightarrow S_{b}w(w^{T}S_{w}w)-w^{T}S_{b}wS_{w}w=0\\ \Rightarrow w^{T}S_{b}wS_{w}w=S_{b}w(w^{T}S_{w}w)\\ \Rightarrow S_{w}w=\frac{w^{T}S_{w}w}{w^{T}S_{b}w}S_{b}w\\ \Rightarrow w=\frac{w^{T}S_{w}w}{w^{T}S_{b}w}S_{w}^{-1}S_{b}w\\ (要注意对于w我们只关注它的方向,不关心它的大小。)\\ \Rightarrow w\propto S_{w}^{-1}S_{b}w\\ \Rightarrow w\propto S_{w}^{-1}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})\underset{1维}{\underbrace{(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})^{T}w}}\\ \Rightarrow w\propto S_{w}^{-1}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})\\ \Rightarrow w\propto (S_{C_{1}}+S_{C_{2}})^{-1}(\bar{x}_{C_{1}}-\bar{x}_{C_{2}})

进一步如果是各向同性的对角矩阵的话,。

四、逻辑回归

  1. 概述

逻辑回归是一种二分类算法,通过激活函数将线性组合压缩到和之间来代表属于某一个分类的概率。

假设有如下数据:

  1. 激活函数

其图像为:

sigmoid函数
  1. 逻辑回归的模型

逻辑回归预测的概率,然后根据极大似然估计法来求解。

\left.\begin{matrix} p_{1}=P(y=1|x)=\sigma (w^{T}x)=\frac{1}{1+e^{-w^{T}x}}=\varphi (x;w)\\ p_{0}=P(y=0|x)=1-P(y=1|x)=\frac{e^{-w^{T}x}}{1+e^{-w^{T}x}}=1-\varphi (x;w) \end{matrix}\right\}p(y|x)=p_{1}^{y}p_{0}^{1-y}

  1. 逻辑回归的求解

\hat{w}=\underset{w}{argmax}\: log\underset{likelihood}{\underbrace{P(Y|X)}}\\ =\underset{w}{argmax}\: log\prod_{i=1}^{N}P(y_{i}|x_{i})\\ =\underset{w}{argmax}\sum _{i=1}^{N}logP(y_{i}|x_{i})\\ =\underset{w}{argmax}\sum _{i=1}^{N}(y_{i}log\: p_{1}+(1-y_{i})log\: p_{0})\\ =\underset{w}{argmax}\underset{-\: cross\: entropy}{\underbrace{\sum _{i=1}^{N}(y_{i}log\: \varphi (x_{i};w)+(1-y_{i})log(1-\varphi (x_{i};w))}}

因此这里的极大似然估计就等价于极小化交叉熵损失函数。

求导的过程较为简单,就不做展示了。

五、高斯判别分析

  1. 概述

假设有如下数据:

  1. 高斯判别分析的模型

在高斯判别分析中样本数据的类别在给定的情况下服从伯努利分布,另外不同类别中的样本数据分别服从多元高斯分布,因此有以下模型:

y\sim Bernoulli(\phi )\Leftrightarrow \left.\begin{matrix} \phi ^{y},y=1\\ (1-\phi)^{1-y},y=0 \end{matrix}\right\}P(y)=\phi^{y}\phi^{1-y}\\ \left.\begin{matrix} x|y=1\sim N(\mu _{1},\Sigma )\\ x|y=0\sim N(\mu _{2},\Sigma ) \end{matrix}\right\}P(x|y)=N(\mu _{1},\Sigma )^{y}N(\mu _{2},\Sigma )^{1-y}

这里假设两个高斯分布具有同样的方差。

  1. 高斯判别模型的求解
  • 损失函数

高斯判别模型的损失函数为其似然,要估计的参数为:

L(\theta )=log\prod_{i=1}^{N}P(x_{i},y_{i})\\ =\sum _{i=1}^{N}logP(x_{i},y_{i})\\ =\sum _{i=1}^{N}logP(x_{i}|y_{i})P(y_{i})\\ =\sum _{i=1}^{N}[logP(x_{i}|y_{i})+logP(y_{i})]\\ =\sum _{i=1}^{N}[logN(\mu _{1},\Sigma )^{y_{i}}N(\mu _{2},\Sigma )^{1-y_{i}}+log\phi^{y_{i}}\phi^{1-y_{i}}]\\ =\sum _{i=1}^{N}[\underset{①}{\underbrace{logN(\mu _{1},\Sigma )^{y_{i}}}}+\underset{②}{\underbrace{logN(\mu _{2},\Sigma )^{1-y_{i}}}}+\underset{③}{\underbrace{log\phi^{y_{i}}\phi^{1-y_{i}}}}]

然后使用极大似然估计法来求解:

定义标签为的样本个数为,标签为的样本个数为,则有。

  • 求解

只存在于③式中,因此求解只需要看③式即可:

③=\sum _{i=1}^{N}[y_{i}log\phi +(1-y_{i})log(1-\phi )]\\ \frac{\partial ③}{\partial \phi}=\sum _{i=1}^{N}[y_{i}\frac{1}{\phi}-(1-y_{i})\frac{1}{1-\phi }]=0\\ \Rightarrow \sum _{i=1}^{N}[y_{i}(1-\phi)-(1-y_{i})\phi ]=0\\ \Rightarrow \sum _{i=1}^{N}(y_{i}-\phi)=0\\ \Rightarrow \sum _{i=1}^{N}y_{i}-N\phi=0\\ \hat{\phi}=\frac{1}{N}\sum _{i=1}^{N}y_{i}=\frac{N_{1}}{N}

  • 求解

只存在于①式中,因此求解只需要看①式即可:

①=\sum _{i=1}^{N}y_{i}log\frac{1}{(2\pi )^{p/2}|\Sigma |^{1/2}}exp\left \{-\frac{1}{2}(x_{i}-\mu _{1})^{T}\Sigma ^{-1}(x_{i}-\mu _{1})\right \}\\ \mu _{1}=\underset{\mu _{1}}{argmax}①\\ =\underset{\mu _{1}}{argmax}\sum _{i=1}^{N}y_{i}[log\frac{1}{(2\pi )^{p/2}|\Sigma |^{1/2}}-\frac{1}{2}(x_{i}-\mu _{1})^{T}\Sigma ^{-1}(x_{i}-\mu _{1})]\\ =\underset{\mu _{1}}{argmax}\sum _{i=1}^{N}y_{i}[-\frac{1}{2}(x_{i}-\mu _{1})^{T}\Sigma ^{-1}(x_{i}-\mu _{1})]\\ =\underset{\mu _{1}}{argmax}\Delta\\ \Delta=\sum _{i=1}^{N}y_{i}[-\frac{1}{2}(x_{i}-\mu _{1})^{T}\Sigma ^{-1}(x_{i}-\mu _{1})]\\ =-\frac{1}{2}\sum _{i=1}^{N}y_{i}(x_{i}^{T}\Sigma ^{-1}-\mu _{1}^{T}\Sigma ^{-1})(x_{i}-\mu _{1})\\ =-\frac{1}{2}\sum _{i=1}^{N}y_{i}(x_{i}^{T}\Sigma ^{-1}x_{i}-2\mu _{1}^{T}\Sigma ^{-1}x_{i}+\mu _{1}^{T}\Sigma ^{-1}\mu _{1})\\ \frac{\partial \Delta}{\partial \mu _{1}}=-\frac{1}{2}\sum _{i=1}^{N}y_{i}(-2\Sigma ^{-1}x_{i}+2\Sigma ^{-1}\mu _{1})=0\\ \Rightarrow \sum _{i=1}^{N}y_{i}(\Sigma ^{-1}\mu _{1}-\Sigma ^{-1}x_{i})=0\\ \Rightarrow \sum _{i=1}^{N}y_{i}(\mu _{1}-x_{i})=0\\ \Rightarrow \sum _{i=1}^{N}y_{i}\mu _{1}=\sum _{i=1}^{N}y_{i}x_{i}\\ \hat{\mu _{1}}=\frac{\sum _{i=1}^{N}y_{i}x_{i}}{\sum _{i=1}^{N}y_{i}}=\frac{\sum _{i=1}^{N}y_{i}x_{i}}{N_{1}}\\ 同理\hat{\mu _{2}}=\frac{\sum _{i=1}^{N}y_{i}x_{i}}{N_{2}}

  • 求解

以下是求解过程中用到的一些预备知识:

两类数据按照以下两个集合来表示:

然后进行求解:

然后求解上式中的通项:

\sum_{i=1}^{N}logN(\mu ,\Sigma )=\sum_{i=1}^{N}log\frac{1}{(2\pi )^{p/2}|\Sigma |^{1/2}}exp\left \{-\frac{1}{2}(x_{i}-\mu )^{T}\Sigma ^{-1}(x_{i}-\mu )\right \}\\ =\sum_{i=1}^{N}[log\frac{1}{(2\pi )^{p/2}}+log|\Sigma |^{-\frac{1}{2}}-\frac{1}{2}(x_{i}-\mu )^{T}\Sigma ^{-1}(x_{i}-\mu )]\\ =\sum_{i=1}^{N}[C-\frac{1}{2}log|\Sigma |-\frac{1}{2}(x_{i}-\mu )^{T}\Sigma ^{-1}(x_{i}-\mu )]\\ =C-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}\sum_{i=1}^{N}(x_{i}-\mu )^{T}\Sigma ^{-1}(x_{i}-\mu )\\ =C-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}\sum_{i=1}^{N}tr[(x_{i}-\mu )^{T}\Sigma ^{-1}(x_{i}-\mu )]\\ (实数的迹等于其本身)\\ =C-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}\sum_{i=1}^{N}tr[(x_{i}-\mu )(x_{i}-\mu )^{T}\Sigma ^{-1}]\\ =C-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}tr[\sum_{i=1}^{N}(x_{i}-\mu )(x_{i}-\mu )^{T}\Sigma ^{-1}]\\ =C-\frac{1}{2}tr(NS\Sigma ^{-1})\\ (S=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\mu )(x_{i}-\mu )^{T},为协方差矩阵)\\ =-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}Ntr(S\Sigma ^{-1})+C\\ 则①+②=-\frac{1}{2}N_{1}log|\Sigma |-\frac{1}{2}N_{1}tr(S_{1}\Sigma ^{-1})-\frac{1}{2}N_{2}log|\Sigma |-\frac{1}{2}N_{2}tr(S_{2}\Sigma ^{-1})+C\\ =-\frac{1}{2}Nlog|\Sigma |-\frac{1}{2}N_{1}tr(S_{1}\Sigma ^{-1})-\frac{1}{2}N_{2}tr(S_{2}\Sigma ^{-1})+C\\ =-\frac{1}{2}[Nlog|\Sigma |+N_{1}tr(S_{1}\Sigma ^{-1})+N_{2}tr(S_{2}\Sigma ^{-1})]+C

然后对进行求导:

\frac{\partial ①+②}{\partial \Sigma}=-\frac{1}{2}[N\frac{1}{|\Sigma |}|\Sigma |\Sigma^{-1}+N_{1}\frac{\partial tr(\Sigma ^{-1}S_{1})}{\partial \Sigma}+N_{2}\frac{\partial tr(\Sigma ^{-1}S_{2})}{\partial \Sigma}]\\ =-\frac{1}{2}[N\Sigma^{-1}+N_{1}S_{1}^{T}(-1)\Sigma ^{-2}+N_{2}S_{2}^{T}(-1)\Sigma ^{-2}]\\ =-\frac{1}{2}(N\Sigma^{-1}-N_{1}S_{1}^{T}\Sigma ^{-2}-N_{2}S_{2}^{T}\Sigma ^{-2})\\ =0\\ N\Sigma-N_{1}S_{1}-N_{2}S_{2}=0\\ \hat{\Sigma}=\frac{N_{1}S_{1}+N_{2}S_{2}}{N}

六、朴素贝叶斯

  1. 概述

假设有如下数据:

  1. 朴素贝叶斯的模型

朴素贝叶斯分类器可以用来做多分类,其基本思想是条件独立性假设,即假设数据的每个特征之间是相互独立的,其形式化表达为

朴素贝叶斯分类器是最简单的概率图模型(有向图):

概率图

给定,判断的类别可以通过以下方法,即将归为类别的概率中最大的一类:

是先验概率,如果有两类则服从伯努利分布(Bernoulli distribution),如果有多类则服从类别分布(Categorical distribution)。则符合条件独立性假设,其中对于,如果是离散的,则可以认为其服从类别分布(Categorical distribution),如果是连续的,则可以认为其服从高斯分布(Gaussian distribution)。

至于其求解过程则可以根据具体情况使用极大似然估计法即可。对于朴素贝叶斯方法重要的是理解其条件独立性假设,这个假设也是其被称为“朴素(Naive)”的原因。

参考资料

ref:李航《统计学习方法》

你可能感兴趣的:(线性分类|机器学习推导系列(四))