热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习—分类模型

第二章分类模型给定训练数据分类任务学习一个输入x到输出y的映射f:最大后验估计其中,y为离散值,其值范围为标签空间:

第二章 分类模型

给定训练数据D={\left \{ x_i,y_i\right \}}^N_i

分类任务学习一个输入x到输出y的映射f:

\hat{y} = f(x)=argmaxp(y=c|x,D)//最大后验估计

其中,y为离散值,其值范围为标签空间:Y=\left \{ 1,2,...,C \right \}

当C=2时,为两类分类问题

贝叶斯公式        先验概率                             p(y=c)//根据以往的经验和分析得到的概率

                            类条件概率                         p(x|y=c)

                            后验概率                             p(y=c|x)//事情已经发生,由某个因素引起的可能性的大小      


2.1 Logistic回归

Logistic回归是一个用在分类任务的线性分类器。Logistic回归也是(深度)神经网络的基础,可以看做是只包含输入层和输出层的两层网络。我们从经验风险最小、正则、优化、模型评估和模型选择等方面进行讨论。

LR回归是一个分类算法。在机器学习分类算法中,LR回归是其中最常用的一个。

LR回归是在线性回归模型的基础上,使用sigmoid函数(logistic分布的累积分布函数),将线性模型w^Tx的输出压缩到[0,1]之间,使其能表示概率。LR本质仍然是一个线性模型,实现相对简单。在广告计算和推荐系统中使用频率极高,是点击率(CTR)预估模型的基本算法。LR模型也是深度学习的基本组成单元(两层网络就是LR)

LR回归属于概率性判别式模型。之所以是概率性模型,是因为LR模型是有概率意义的(LR可以得到后验概率p(y|x);而非概率模型如SVM,模型本身并没有概率意义);之所以是判别式模型,是因为LR回归并没有对数据的分布p(x,y)进行建模,也就是说LR模型并不知道数据的具体分布,而是直接将判别函数(后验概率),或者说是分类超平面求解出来。



注:判别式模型 VS. 产生式模型

有些分类算法通过求解p(y=c|x)实现分类,即对于一个新的样本x,计算其条件概率p(y=c|x),即后验概率

后验概率可以可以基于贝叶斯公式得到

p(y=c|x)=\frac{p(y=c)p(x|y=c)}{\sum_{c^{'}=1}^{C}p(y=c^{'})p(x|y=c^{'})}

其中p(x|y=c)是类条件概率密度,p(y=c)是类的先验概率。若采用这种方法的模型,称为是产生式模型。之所以被称为产生式模型,是因为在产生式模型中有p(x|y=c)和p(y=c),可得到数据的分布p(x,y=c)=p(y=c)p(x|y=c),从而可以从分布中产生数据p(x,y=c)(如随机采样)

分类算法也可以直接对后验概率进行建模,如LR模型中我们假设p(y=1|x)=\sigma (w^Tx),而无需知道类先验概率和类条件概率。若采用这种方法的模型,称为判别式模型。

因为有了后验概率后,分类算法可以根据最大后验概率,将输入空间划分成许多不相交的区域,这些区域之间的分隔面被称为判别函数(也称为分类面),有了判别函数,就可以进行分类。

判别式模型直接对后验概率进行建模,从而得到判别函数。产生式模型,最终也是为了得到判别函数。还有一些模型(如SVM),直接对判别函数进行求解,得到判别面,也被称为判别式法。




2.1.1Logistic分布

LR回归是在线性回归模型的基础上,再用sigmoid函数得到概率。这里就先介绍一下sigmoid函数

首先,需要对logistic分布进行说明,这个分布的概率密度函数(pdf)为:

p(x;u,s)=\frac{e^{-(x-u)/s}}{s(1+e^{-(x-u)/s})}

累积分布函数(CDF)为:

F(x;u,s)=\frac{1}{e^{-(x-u)/s}}

其中u表示位置参数,s是形状参数

下图为不同的u和s的情况下,Logistic分布的概率密度函数的图形:

                                                                                    Logistic分布的概率密度函数

下图为不同的u和s的情况下,Logistic分布的累积分布函数的图形:

                                                                                    Logistic分布的累积概率函数

由图可以看出,Logistic分布的形状与正态分布的形状相似。但是Logistic分布的尾部更长。Logistic分布的概率分布函数的图形是一条S形曲线,在中心附近增长速度较快,而在两端的增长速度相比较慢。该曲线以点(u,1/2)位中心对称,即满足F(-x+u)-\frac{1}{2}=F(x+u)+\frac{1}{2}

当u=0,s=1时,Logistic分布的概率函数就是我们常说的sigmoid函数:

\sigma(a) = \frac{1}{1+e^{-a}}

且其导数为:

\frac{d\sigma }{da} = \frac{-e^{-a}}{(1+e^{-a})^2}=\sigma(1-\sigma)


2.1.2从Logistic分布到Logistic回归模型

Logistic回归用于分类任务。下面是一个二维平面上两类分类的例子。其中橙色的三角和蓝色的米星分别是两类样本的训练样本,我们需要对一个未知类别的样本紫色圆圈进行分类。

Logistic回归模型用当u=0,s=1的Logistic分布的概率分布函数(sigmoid函数)对后验概率p(y=c|x)进行建模。对两类分类问题,logistic回归模型为:

p(y=1|x)= \sigma (a)=\frac{1}{1+e^{-a}}

p(y=0|x)=1- p(y=1|x)= 1-\sigma (a)=\frac{e^{-a}}{1+e^{-a}}

一个事件的几率(odds)是指该事件发生的概率与不发生的概率的比值。两个概率相除,得到事件的几率为:

\frac{p(y=1|x)}{p(y=0|x)}=e^a

两边取log运算,得到该事件发生的对数几率(log odds)或logit函数是

ln\frac{p(y=1|x)}{p(y=0|x)}=a

注:Logistic回归也称为对数几率回归

所以当a>0,p(y=1|x)>p(y=0|x),如果取最大后验概率,x的类别y=1;

如果a<0,则p(y=1|x)

当a=0,则p(y=1|x)=p(y=0|x),x的类别y=0和y=1的概率相等,此时x位于决策面上,可将x任意分类到某一类,或拒绝作出判断。

因此即a就是我们在分类算法中的决策面。



注:

所谓分类器,一般是将输入空间X,根据需要划分的类别,将输入空间划分一些互不相欠的区域,这些区域的边界一般叫做决策面。预测函数的形式不同,会使得决策面或者光滑,或者粗糙。其中有一种比较特别的就是判别面是参数的线性函数,称为线性决策面,形成的分类器就是线性分类器。

分类器为每个类别分配一个判别函数,根据判别函数来判断一个新的样本是否是这个类别的。比如,假设有C个类别,那么分类器肯定会得到C个判别函数\delta _c(x);c\epsilon [1,2,...,C]。如果有一个新的样本x,那么一般是找到最大的\delta _c(x),就可以认为,新的样本属于第C类。

在一般的分类器中,判别式函数\delta _c(x),和后验概率p(y=c|x)是对应的,能够使判别式的结果最大,同样也是能够样本x在类别c下的后验概率最大。

判别式函数\delta _c(x)\delta _k(x)相等的点集,就是我们常说的决策面:

\delta _c(x) = \delta _k(x)

由于LR回归是一个线性分类算法,所以

a(x)=w^Tx

其中参数向量w为线性组合的权重。即Logistic回归模型中,输出y=1|x的对数几率是输入x的线性函数。

将上述两步综合在一起,Logistic回归模型可以重写为下面这个形式:

p(y=1|x)=\sigma (a(x))=\frac{1}{1+e^{(-a(x))}}=\frac{1}{1+e^{(-w^T(x))}}




2.1.3负log似然损失/极大似然估计

对于一个两类分类问题,y\epsilon [0,1],所以给定x,p(y|x)可以用Bernoulli分布表示。在Bernoulli分布y|x\sim Ber(\theta )中,参数\theta表示给定x的情况下,y=1的概率。后验概率的概率函数为:

p(y|x)=\theta ^y(1-\theta )^{1-y}=\left\{\begin{matrix}\theta & if y=1 & \\ 1-\theta & if y=0 \end{matrix}\right.

这里请注意Logistic回归中后验分布p(y|x)的概率分布为Bernoulli分布,而Bernoulli分布中的参数\theta又用logit函数\theta = \sigma(a)= \sigma(w^Tx),即y|x\sim Ber(\sigma(w^Tx))



注:

Bernoulli分布又被称为两点分布,是一个离散型概率分布。若伯努利随机变量取值为1。若伯努利实验失败,则伯努利随机变量X取值为0.记其成功概率为\theta(0 \leq\theta \leq 1),则失败的概率为1-\theta,记为X\sim Ber(\theta )

p(x)=\theta ^x(1-\theta )^{1-x}=\left\{\begin{matrix} \theta & if x=1 & \\ 1-\theta & if x=0 \end{matrix}\right.



给定训练样本的情况下,我们可以用极大似然估计求解模型参数



注:

极大似然估计(MLE)定义为(即给定参数\theta的情况下,数据D出现的概率为p,则MLE取使得p最大的参数\theta

\hat{\theta } = arg\underset{\theta }{max}p(D|\theta )

由于我们假设训练数据(x_i,y_i)是独立同分布(IID)的样本。所以数据D出现的概率为各训练样本出现的概率相乘(独立随机向量的联合分布等于各随机变量的分布相乘),即似然函数为在参数\theta的情况下,数据D=\left \{ x_i,y_i \right \}^N_{i=1}出现的概率:

L(\theta )=p(D|\theta)=\prod_{i=1}^{N}p(y_i|x_i,\theta)

取log运算(通常log运算后更简单),得到log似然函数为

l(\theta )=logp(D|\theta)=\sum_{i=1}^{N}logp(y_i|x_i,\theta)

极大似然估计为选择数据出现概率最大的参数:

\hat{\theta } = arg\underset{\theta }{max}l(\theta )



将Bernoulli分布代入log似然函数计算公式,得到

l(\theta )=logp(D|\theta)=\sum_{i=1}^{N}logp(y_i|x_i,\theta)=\sum_{i=1}^{N}log(u(x_i)^{y_i}(1-u(x_i))^{1-y_i})=\sum_{i=1}^{N}[y_i log(u(x_i))+(1-y_i)log(1-(u(x_i))]

log似然极大,等价于损失函数取负log似然,即负log损失函数为

L(y,u(x))=NLL(y,u(x))=-ylog(u(x))-(1-y)log(1-u(x))

然后取训练集上的平均损失最小,即最小化目标函数

J(w)=\sum_{i=1}^{N}L(y_i,u(x_i))=-\sum_{i=1}^{N}[y_ilog(u(x_i))+(1-y_i)log(1-u(x_i))]


2.1.4带正则的Logistic回归

同带正则的线性回归类似,Logistic回归也可以带正则惩罚项。事实上,同线性回归可以不带正则(最小二乘线性回归)不同,Logistic回归必须带正则项。

从图中可以看出,分界面1、2、3和4均可以将两类数据完全分开,但4的似然值最大。事实上对组合权重系数w的每个元素乘以一个无穷大的标量会使得似然值更大,因此必须加正则项限制权重系数w无限制增大但模型的推广性不好(过拟合)。

Logistic回归可以带L2正则和L1正则。

L2惩罚的Logistic回归:

J(w)=\sum_{i=1}^{N}NLL(y_i,u(x_i))+\lambda \left \| w \right \|^2_2

          =-\sum_{i=1}^{N}[y_ilog(u(x_i))+(1-y_i)log(1-u(x_i))]+\lambda \left \| w \right \|^2_2

L1惩罚的Logistic回归:

J(w)=\sum_{i=1}^{N}NLL(y_i,u(x_i))+\lambda \left \| w \right \|_1

         =-\sum_{i=1}^{N}[y_ilog(u(x_i))+(1-y_i)log(1-u(x_i))]+\lambda \left \| w \right \|_1

其中\lambda为正则参数,用于调节目标函数和惩罚项之间的关系。\lambda越大,惩罚力度越大,所得到的最优解越趋近于0,或者说参数向量越稀疏;\lambda越小,惩罚力度越小,模型和训练数据拟合得越好。


2.1.5梯度下降

先讨论损失函数部分的梯度,带目标函数中正则部分的梯度稍后讨论。

损失函数为:

J_1(w)=\sum_{i=1}^{N}L(y_i,u(x_i))=-\sum_{i=1}^{N}[y_ilog(u(x_i))+(1-y_i)log(1-u(x_i))]

则梯度为:

\bigtriangledown _w=g(w)=\frac{\partial }{\partial w}J_1(w)=-\sum_{i=1}^{N}[y_i\times \frac{1}{u(x_i)}-(1-y_i) \times \frac{1}{1-u(x_i)}] \times \frac{\partial }{\partial w}u(x_i)

                                              =-\sum_{i=1}^{N}[y_i\times \frac{1}{u(x_i)}-(1-y_i) \times \frac{1}{1-u(x_i)}] \times \frac{d \sigma (a_i)}{d a_i}\frac{\partial a_i}{\partial w}

                                              =-\sum_{i=1}^{N}[y_i\times \frac{1}{u(x_i)}-(1-y_i) \times \frac{1}{1-u(x_i)}] \times u(x_i)(1-u(x_i))\frac{\partial a_i}{\partial w}

                                              =-\sum_{i=1}^{N}[y_i\times \frac{1}{u(x_i)}-(1-y_i) \times \frac{1}{1-u(x_i)}] \times u(x_i)(1-u(x_i))x_i

                                              =-\sum_{i=1}^{N}[y_i\times (1-u(x_i))-(1-y_i)\times u(x_i)]\times x_i

                                              =-\sum_{i=1}^{N}[y_i - u(x_i)] \times x_i

                                              =\sum_{i=1}^{N}[ u(x_i) -y_i] \times x_i

如果将u(x_i)看成是对y_i的预测,则u(x_i)-y_i可以看作是预测残差,Logistic回归损失函数与线性回归损失函数得到的梯度形式相同。事实上所有线性模型的梯度形式均是如此。

得到梯度之后,那么就可以和线性回归模型一样,采用标准的梯度下降法求解参数(这里未考虑正则项的梯度):

w^{t+1}=w^t-\eta \bigtriangledown _w

梯度下降法实现相对简单,但是其收敛速度往往不尽人意,可以考虑使用随机梯度下降法来解决收敛速度的问题和大样本问题(CTR预估部分讲解)

但上面两种优化方法在最小值附近,都存在一种曲折的慢速逼近方式来逼近最小点的问题。所以在LR回归的实际算法中,用到的牛顿法或拟牛顿法(DFP、BFGS、L-BFGS),当然样本数特别大的时候,随机梯度下降是最佳选择。



注:

由于切记最优解的问题,是一个凸优化的问题,这些数值化方法的区别仅仅在于选择什么方向最优解,而这个方向通常是优化函数在当前点的一阶导数(梯度)或者二阶导数(Hessian矩阵)决定的。比如梯度下降法用的就是一阶导数,而牛顿法和拟牛顿法用的就是二阶导数。




2.1.6牛顿法

① 一元函数的牛顿法

牛顿法的最初提出是用来求解方程的根。我们假设点x^{*}为函数f(x)的根,那么有f(x^{*}) = 0。现在我们将函数f(x)在点x^t处一阶泰勒展开有:

f(x)=f(x^t)+f^{&#39;}(x^t)(x-x^t)

其中这里f^&#39;表示函数f的导数。

那么假设点x^{t+1}为该方程的根,则有

f(x^{t+1})=f(x^t)+f^{&#39;}(x^t)(x^{t+1}-x^t) = 0

那么就可以得到

x^{t+1}=x^t-\frac{f(x^t)}{f^{&#39;}(x^t)}

这样我们就得到了一个递归方程,我们可以通过迭代的方式不断让x趋近于x^*,从而求得方程f(x)=0的解。

 

迭代公式用图示表示如下图。选择一个接近函数f(x)零点的x^0,计算相应的f(x^0)和切线斜率f^{&#39;}(x^0)。然后我们计算穿过点(x^0,f(x^0)),并且斜率为f^{&#39;}(x^0)的直线和x轴的交点的x坐标,也就是求如下方程的解。

0=f(x^0)+f^{&#39;}(x^0)(x-x^0)

我们将求得的点的x坐标命名为x^1,更接近方程f(x)=0的解。因此我们现在可以利用x^1开始下一轮迭代。

下图是wiki上一个牛顿法求解函数的根的动图(蓝色线为函数f(x),红色线为当前点的切线。图中用下标表示迭代索引,类似我们上文中的上标t),可以很清楚地看到牛顿法的迭代过程。

②牛顿法用于优化求解

对于最优化问题,其极值点处的特性之一是在极值点处函数的一阶导数为0。因此我们可以在一阶导数处利用牛顿法通过迭代的方式来求得最优解,即相当于求一阶导数对应函数的根。

将①中f(x)换成一阶导数g(x)=f^{&#39;}(x),得到

x^{t+1}=x^t-\frac{g(x^t)}{g^{&#39;}(x^t)}=x^t-\frac{f^{&#39;}(x^t)}{f^{&#39;&#39;}(x^t)}

这样我们就得到了一个不断更新x迭代求得最优解的方法。

 

上面我们讨论的都是x为标量的情况。那么对于高维函数,其一阶导数为梯度,

g(x)=(\frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},...,\frac{\partial f}{\partial x_D})^T

二阶导数就变成了一个Hessian矩阵,记为

那么迭代公式就变成了

x^{t+1}=x^t-H^{-1}g(x^t)

 

牛顿法求最优值的步骤如下:

1) 随机选取起始点x^0

2) 计算目标函数f(x)在该点x^t的一阶导数g(x^t)和hessian矩阵H(x^t)

3) 依据迭代公式x^{t+1}=x^t-H^{-1}g(x^t),更新x值

4) 如果(f(x^{t+1})-f(x^{t}))<\varepsilon,则收敛返回,否则继续步骤2,3直到收敛

 

由于牛顿法用到了函数的二阶函数,亦被称为二阶优化方法。可以看出,与梯度下降相比,牛顿法用的特点是收敛速度快,迭代次数少。

 


推荐阅读
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 【Java数据结构和算法】008栈
    目录0、警醒自己一、栈的应用场景和介绍1、栈的应用场景一个实际的场景:我的思考:2、栈的介绍入栈演示图:出栈演示图 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 深度学习与神经网络课程总结
    本文档总结了神经网络和深度学习课程中的关键概念和理论,包括机器学习的基本要素、算法类型以及数据特征表示等。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文源自Coursera平台吴恩达教授的深度学习课程,重点探讨了卷积神经网络(ConvNets)从二维图像处理向一维信号及三维数据处理的拓展应用。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
author-avatar
手机用户2502877953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有