什么是逻辑回归?
首先逻辑回归是一种分类算法,然后也是一种监督学习方法。逻辑回归是一种监督学习方法,也就是说逻辑回归问题的数据集都是带标签的。以二维平面点集为例:数据集的坐标x1(横坐标),x2(纵坐标)都叫数据集的特征,这里的x2(为了不和后面的y弄混,我们用x2表示)不是标签,对于逻辑归回解决的分类问题,标签是这个数据属于的类别,如果是二分问题,用{1,0}表示类别,那标签就是1或者是0。
逻辑回归算法和预测类算法中的线性回归算法有一定的类似性。简单来讲,逻辑回归,就是通过回归的方法来进行分类,而不是进行预测,比如预测房价等。
逻辑回归解决的问题
先看下面的图,已知平面上分布的红点和蓝点,逻辑回归算法就是解决怎么根据一系列点,计算出一条直线将平面上的点分成两类,一般的解决方法就是建立一个数学模型,然后通过迭代优化得到一个最优值,然后根据这个值来计算这条直线。
问题的转化
既然是二分问题,我们希望输入一个数,输出为y∈{0,1},这样就能将样本点映射到两个不用的类别中。具体方法就是计算每个点属于类别“1”或者属于类别“0”的概率,哪个概率大,这个点就属于哪一类,那么这个问题就转化成了怎么计算每个点属于“1”或者“0”的概率。
激活函数
如图所示是激活函数的式子和图像。该函数也可以叫做概率函数,横坐标是输入的值,纵坐标是概率值,当概率值小于0.5时,y=0,当概率值大于0.5时,y=1。那输入的值又是什么呢?以一个二维数据点(X1,X2)为例,这个值就是z=W1×X1+W2×X2+W3。其中W3是平移项,用行向量矩阵表示X=[X1,X2, 1], W=[W1, W2, W3]
这里的权重W如果确定了,那这个逻辑回归问题也就解决了。所以我们的问题转化成了求解权重系数W=[W1, W2, W3]的问题。
需要注意的是,激活函数中的z值并不是二维数据点的纵坐标值,而是z=W1×X1+W2×X2+W3计算得来的。
为什么sigmoid能够将z转换为概率呢,可以参考博客,或者简单一点理解就是假设每个点出现的条件概率分布服从类似高斯分布(概率密度函数)。
极大似然估计法
计算概率的问题解决了,然后就是建立损失函数(目标函数),然后根据目标函数使用梯度下降法求解W,该问题就解决了。说到底,这还是一个最优化的问题,更准确的讲是一个无约束优化问题。
一般性假设激活函数φ(z)是计算数据点属于“1”的概率,则:
将两个式子综合来,可以改写为下式:
上式将分类为0和分类和1的概率计算公式合二为一。假设分类器分类足够准确,此时对于一个样本,如果它是属于1类,分类器求出的属于1类的概率应该尽可能大,即p(y=1lx)尽可能接近1;如果它是0类,分类器求出的属于0类的概率应该尽可能大,即p(y=0lx)尽可能接近1。
通过上述公式对二类分类的情况分析,可知我们的目的是求取参数w,使得p(ylx)对0类和1类的分类结果尽可能取最大值,然而实际上我们定义的损失函数的是求最小值,于是,很自然的,我们想到对p(ylx)式子加一个负号,就变成了求最小值的问题,这就得到了逻辑回归中的损失函数。
不过,为了计算方便,我们通常对上述式子取log,因而得到下式:
对每个数据点进行累加,得到最终的损失函数(目标函数),也是对数似然函数:
然后对上述函数使用梯度下降法进行求解就得到了权重系数w。
梯度下降法
激活函数有如下等式成立。
基于上式对损失函数进行求导数:
设步长(学习速率)为η,权重系数w的迭代式为:
模型的测试
机器学习算法中的监督学习算法有个共同点,先用带标签的数据集进行学习,然后使用不带标签的数据集进行测试。训练数据集和测试数据集不能重复。
完整的逻辑回归python3源代码下载地址:
https://download.csdn.net/download/u014571489/10751551 (无测试部分代码和数据集)
https://download.csdn.net/download/u014571489/10753587 (添加了测试部分的代码和数据集)
逻辑回归算法的不足
逻辑回归算法只能解决二分类问题,逻辑回归扩展后的softmax Regression算法也只能解决线性可分问题。对于非线性可分问题,为了能够利用逻辑回归通常有两种方法(1)利用人工对特征进行处理,如使用核函数对特征进行处理,变成线性可分。但是人工的特征处理需要有一些领域的知识,难度比较大。(2)对基本的逻辑回归算法进行扩展,以适应更难的分类问题。