之前写过了线性回归模型,实际上,在线性模型中,我们假设,如果存在单调可微函数,令,我们称这样的模型为''广义线性模型''(generalized linear model)。称为‘联系函数’(link function)。我们知道回归模型产生的预测值是实值,如果我们用回归模型来处理分类问题,以二分类为例,那么输出类标为,想要达到分类的效果,我们就需要设定一个阈值,比如我们设定阈值为0,当输出大于0时,就把它判别为类别1;反之,当输出值小于0时,就把它判别为-1。应该怎样去实现这一点呢,我们想到了符号函数sgn
符号函数可以完成这件事,但是sgn函数在0点处有间断点,也就是说这个函数在定义域上是不连续的。而上边提到,我们的联系函数需要是单调可微的,那么是否存在这样一种函数:能把整个定义域上负无穷到正无穷上的值映射到[0,1]区间呢。答案是肯定的,逻辑回归就可以做到。需要注意的一点是,逻辑回归虽然名字上有回归二字,但是它是一种分类学习的方法。
目录
逻辑回归原理
我们把联系函数设为,函数图像如下图所示
可以看到联系函数将z值映射到[0,1]区间,而且这个联系函数是单调可微的,其函数图像很像一个S,所以我们把它称为Sigmoid函数或S函数。有了联系函数后,我们假设函数变为
可以看到,这时候我们的假设函数的范围是在0-1之间的,我们将表示为,即的值是已知x和参数和b的情况下,y = 1 的概率;同样的。可以看到,逻辑回归不仅能预测类型,而且还可以预测属于某一类的概率。打个比方,使用逻辑回归预测天气的,它不仅可以预测明天天气是晴天还是阴天,而且还可以预测是晴天的概率或者阴天的概率。我们训练模型的目的是找到合适的参数和b,在线性回归模型中,是通过最小化代价函数来找出学习出合适的参数值的,同样的,我们也需要在逻辑回归中定义一个代价函数,在线性回归中是通过均方误差来衡量和的相似程度的,那么逻辑回归中的代价函数应该怎定义呢?
其中,
从上边的式子我们可以简化为:
将其带入到中得:
这个式子就是逻辑回归的代价函数,现在我们需要做的就是最小化这个代价函数,同样的我们还是可以使用梯度下降的方法,支只是这里的假设函数由原来的,变为了 ,接下来就是分别对第j个参数进行迭代更新
来求得使得代价函数最小的 参数。
逻辑回归应用
前面讲到了逻辑回归的原理,接下来以鸢尾花数据集(鸢尾花数据集是分类问题中经典数据集之一,鸢尾花一共有150个样本数据,有三种鸢尾花的品种,每个样本都包含四个特征)为例,对逻辑回归进行实现。本部分模型构建的部分直接使用的是sklearn中的LogisticRegression模块
用测试集剩余的45个样本数据来测试模型的性能,可以看到,逻辑回归可以大致将三种类别的鸢尾花划分开来。