我的人工智能之旅——逻辑回归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daihuimaozideren/article/details/81212579

本文,将涉及以下知识点,

(1)决策边界,decision boundary

(2)凸函数,convex function

(3)非凸函数,non convex function

此前所讨论的问题,都为线性回归问题。本文将介绍逻辑回归算法,该算法为分类问题提出解决方案。正文如下


逻辑回归

逻辑回归,logistic regression,由于历史问题,算法名称中包含“回归”字样,但其解决的是分类问题。分类问题可以简单地描述为是非问题(即结论为是否,结论y\in \begin{Bmatrix} 0,1 \end{Bmatrix}),或枚举问题(即结论为已知种类中的某一类型,结论y\in \begin{Bmatrix} 0,1,2,3,...,n \end{Bmatrix})。先以简单的是非问题为例进行讲解,之后再引入枚举问题。

解决分类问题,需要引用概率理论。其核心思想是,当达到或高于某一概率p时,认为其为某种类型,否则不是该类型。概率p即为阀值,用于区分类型。通常将阀值定为0.5。

在详细讲述逻辑回归算法前,先来看一个问题。为什么不能用线性回归来解决分类问题?

线性回归vs分类问题

线性回归不能解决所有的分类问题。因为分类问题所对应的数学关系是离散的,结论y在一个有限的范围内。例如,是非类问题的结论y仅能为1或0,而线性回归所对应的数学关系是连续的。结论y不限于0到1间,可以小于0,或者大于1。

那么,如果缩小取值范围,仅将样本集合所对应的预估值限制于【0,1】区间呢?

在该前提下,还需要界定一个阀值(介于0与1之间),当假设函数预估值大于等于该阀值时,表示结论y为1。假设函数预估值小于该阀值时,表示结论y为0。而阀值可以看作是概率,概率高时,结论y为1(或0)。概率低时,结论y为0(或1)。

如下例。

样本(x,y)集合为{(0.2,0),(0.3,0),(0.4,0),(0.8,0),(0.9,0),(1,0),(1.25,1),(1.3,1),(2.1,1),(3.4,1)}。

通过线性回归算法学习,可以划定蓝色的假设函数。当x>=1.25时,预估值大于等于0.5,即结论y为1。所有样本都符合。

但当新增样本点(4.9,1)时,通过线性回归算法学习后,假设函数将变为棕色线条。

当x>=1.75时,预估值大于等于0.5。此时,原有样本(1.25,1),(1.3,1)不符合条件。

所以,不能将线性回归算法应用于分类问题,至少不能应用于所有分类问题。因此,对于逻辑回归,需要全新的假设函数。

假设函数

逻辑回归的假设函数必须满足一个条件,函数预估值必须映射到【0,1】区间内。因此,我们引入sigmoid函数(或logistic函数)

f(z)=\frac{1}{1+e^{-z}}

相应图像为

其特点为:

(1)f(z)是连续的

(2)当z\rightarrow +\infty时,f(z)\rightarrow 1

(3)当z\rightarrow -\infty时,f(z)\rightarrow 0;

f(z)可以看作,(((样本z)的预估结论y)的值为1)的概率。

z=A^TX,这样,样本X范围可以扩展至(-\infty ,+\infty )

同时,我们也得到了逻辑回归算法的假设函数

f(X)=\frac{1}{1+e^{-{(A^TX)}}}

决策边界

判断结论总需要一个临界,此前我们引入的概率p便是决定因素。但除此之外,还需要引入另一概念,决策边界。

当假设函数f(X)\geqslant 0.5,则认定y=1的概率较高;否则,认定y=0的概率较高。

那么,使得y=1获得高概率的条件即为,A^TX\geqslant 0

即临界条件为A^TX= 0

假设A^TX= a_0+a_1x_1+a_2x_2

a_0+a_1x_1+a_2x_2=0

假设最终确认a_0=-3a_1=1a_2=2,那么如图,

直线及直线斜上方的区域,为y=1的区域。而直线斜下方的区域为y=0的区域。

直线x_1+2x_2=3被称为决策边界。

需要指出的是,决策边界不一定为直线。决策边界的形状取决于A^TX的定义。

A^TX=a_0+a_1x_1^2+a_2x_2^2,对于同样取值的a_0a_1a_2,决策边界图形为

其中,椭圆内部为y=0的区域,椭圆线及椭圆外部为y=1的区域。

可见,特征值的拟合是会对决策边界产生影响的。

平方误差vs逻辑回归

有了假设函数后,接下来需要解决代价函数的问题。我们很容易会联想到线性回归到代价函数,毕竟平方误差是最常用的误差量化方法。先说明一下,线性回归为何使用平方误差。这里要引用凸函数(convex function)的知识(可参照微积分基础)。

需要特别强调一点,国内对于凹凸性定义和国外的定义是相反的。Convex Function在国内的某些数学书中指凹函数。在此,我们统一一下定义。本文中所涉及的凸函数,引用国外定义,即其图像是下凹的

因此,若一个函数为凸函数,那么该函数一定存在最小值。相反,若该函数为非凸函数,则该函数存在多个局部最小值。若局部最小值的数量较多,那么求出全局最小值就更加麻烦了。

如何去定一个函数是否是凸函数呢?若f(x)连续,连续,{f(x)}''存在且{f(x)}''> 0,那么该函数为凸函数。

依据此判断条件,可以得出线性回归代价函数J(A^T)=\frac{1}{2m}\sum _{j=1}^{m}{(A^TX_j-Y_j)^2}为凸函数的结论。

其中,线性回归假设函数为f(X)=A^TX。我们使用逻辑回归的假设函数f(X)=\frac{1}{1+e^{-{(A^TX)}}}进行替换,可以得到

J(A^T)=\frac{1}{2m}\sum _{j=1}^{m}{(\frac{1}{1+e^{-{(A^TX_j)}}}-Y_j)^2}

我们对该函数进行二次求导,最终结果无法确认是否大于0,因此使用平方误差来作为逻辑回归的代价函数,并非最佳选择。

代价函数

代价函数存在的意义在于,它可以使得,当预估值与实际值的偏差较大时,相应假设函数所付出的代价也越大。因此,我们可以通过求取代价函数最小值的方式,确定假设函数的设定参数最佳取值。

常用的代价函数有4类,包括绝对值,平方误差,对数和交叉熵。我们为逻辑回归选择对数代价函数。之所以这样选择,也是为了运算方便,因为代价函数中存在指数。

对数代价函数的公式为,

J(A^T)=-\frac{1}{m}\sum _{j=1}^{m}{\left [ Y_jlog(f(X_j))+(1-Y_j)log(1-f(X_j)) \right ]}

由于Y的取值为0或1,那么,

当Y=1时,J(A^T)=-\frac{1}{m}\sum _{j=1}^{m}log(f(X_j))

当Y=0时,J(A^T)=-\frac{1}{m}\sum _{j=1}^{m}log(1-f(X_j))

我们来看两种情况下,对应的对数图像。

当Y=1时,图像如下,


已知逻辑回归假设函数f(X)=\frac{1}{1+e^{-A^TX}},使得0< f(X)< 1,进而使得+\infty> -log(f(X))> 0

因此,当f(X)\rightarrow 1-log(f(X))\rightarrow 0。而当f(X)\rightarrow 0-log(f(X))\rightarrow +\infty

可以理解为,当预估值越接近实际值1时,代价越小,趋近于0。而预估值越接近0时,即越偏离实际值1时,代价越大,趋近于无穷大。

再来看一下Y=0时的情况,对应的对数图像如下,

同理,0< f(X)< 1,进而使得+\infty> -log(1-f(X))> 0

因此,当f(X)\rightarrow 0-log(1-f(X))\rightarrow 0。而当f(X)\rightarrow 1-log(1-f(X))\rightarrow +\infty

可以理解为,当预估值越接近实际值0时,代价越小,趋近于0。而预估值越接近1时,即越偏离实际值0时,代价越大,趋近于无穷大。

由此可见,选择对数代价函数,能够很好的量化偏差。

接下来的工作,就是运用梯度下降(或更高级的方法),推算出A^T了。推算步骤与线性回归相同,不再重复描述。

枚举问题

此前针对的问题都为是非问题,那么如何解决枚举问题呢。例如Y的取值为0,1,2,3。

那么,针对该例,我们需要提供4个分类器,即4个假设函数f_1(X)f_2(X)f_3(X)f_4(X)

对于假设函数f_1(X)来说,当预估值接近0,则其偏差最小。即视0为“是”,其它值为“非”。其它假设函数同理。

将预分类的数据X分别带入4个假设函数,则将得到预估值Y_1Y_2Y_3Y_4

由于逻辑回归假设函数的寓意为概率,所以预估值高者所对应的枚举值,即为对应的最终分类。

小结

通过对比可见,线性回归与逻辑回归的区别,在于假设函数和代价函数的选取。因此,解题的关键在于,如何选择合适的假设函数,且如何使得代价函数为凸函数。

猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/81212579
今日推荐