1. 算法
Logistic Regression 虽然被称为回归,但其实际上是分类模型,逻辑函数的形状有些像阶跃函数,对于二分类问题,其实就是一个阶跃函数,当x取某一些值的时候y=1,取另一些值的时候,y=0.这一点我们在上文SVM的数学推导中已经深有体会。但阶跃函数是不可微的,而逻辑函数是可微分的,这是它非常重要的一个性质。
Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。
1.1 Logistic 分布
Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:
其中,
表示位置参数, >0 为形状参数。我们可以看下其图像特征
Logistic 分布是由其位置和尺度参数定义的连续分布。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的 Sigmoid 函数就是 Logistic 的分布函数在的特殊形式。
1.2 Logistic 回归
之前说到 Logistic 回归主要用于分类问题,我们以二维特征空间的二分类为例,对于所给数据集假设存在这样的一条直线可以将数据完成线性可分。
决策边界可以表示为 ,假设某个样本点那么可以判断它的类别为 1,这个过程其实是感知机。
Logistic 回归还需要加一层,它要找到分类概率 P(Y=1) 与输入向量 x 的直接关系,然后通过比较概率值来判断类别。
我们把看做一个整体:
这是一个二分类的阶跃函数,正如开头提到的,这个函数不可微,因此我们把z代入逻辑函数:
由上式可转化得到:
我们将 y 视为 x 为正例的概率,则 1-y 为 x 为其反例的概率。两者的比值称为几率(odds),指该事件发生与不发生的概率比值,若事件发生的概率为 p。则对数几率:
将 y 视为类后验概率估计,重写公式有:
也就是说,输出 Y=1 的对数几率是由输入 x 的线性函数表示的模型,这就是逻辑回归模型。当 的值越接近正无穷, 概率值也就越接近 1。因此逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。
在这我们思考个问题,我们使用对数几率的意义在哪?通过上述推导我们可以看到 Logistic 回归实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数几率,其优点有:
1. 直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题(区别于生成式模型);
2. 不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
3. 对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。
1.3 损失函数
假设有N个样本,样本的标签只有0和1两类,可以用极大似然估计法估计模型参数,从而得到逻辑回归模型
设yi=1的概率为pi,yi=0的概率为1 - pi,那么观测的概率为:
可以看到这个公式很巧妙的将0和1两种情况都包括进去,数学真是美妙的东西
概率由逻辑回归的公式求解,那么带进去得到极大似然函数:
取对数之后:
1.4 求解
1. 随机梯度下降
梯度下降是通过 J(w) 对 w 的一阶导数来找下降方向,并且以迭代的方式来更新参数。这种方法的缺点是容易陷入局部极值
现在已经知道损失函数:
现在开始求导:
通常来说,是用梯度下降法来求解的,所以会在损失函数前面加个负号求最小值,所以最终的导数变成:
2. 牛顿法
牛顿法的基本思路是,在现有极小点估计值的附近对 f(x) 做二阶泰勒展开,进而找到极小点的下一个估计值。这个方法需要目标函数是二阶连续可微的,本文中的 J(w) 是符合要求的。
1.5 正则化
这部分内容在岭回归与Lasso回归中有详细解释,因此这里略去。
1.6 并行化
从逻辑回归的求解方法中我们可以看到,无论是随机梯度下降还是牛顿法,或者是没有提到的拟牛顿法,都是需要计算梯度的,因此逻辑回归的并行化最主要的就是对目标函数梯度计算的并行化。
我们看到目标函数的梯度向量计算中只需要进行向量间的点乘和相加,可以很容易将每个迭代过程拆分成相互独立的计算步骤,由不同的节点进行独立计算,然后归并计算结果。
2. 与其他模型的对比
2.1 与线性回归
逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线形)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。
我们需要明确 Sigmoid 函数到底起了什么作用:
线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。
2.2 与最大熵模型
逻辑回归和最大熵模型本质上没有区别,最大熵在解决二分类问题时就是逻辑回归,在解决多分类问题时就是多项逻辑回归。逻辑回归是最大熵模型的一个特殊例子。
2.3 与 SVM
相同点:
都是分类算法,本质上都是在找最佳分类超平面;
都是监督学习算法;
都是判别式模型,判别模型不关心数据是怎么生成的,它只关心数据之间的差别,然后用差别来简单对给定的一个数据进行分类;
都可以增加不同的正则项。
不同点:
LR 是一个统计的方法,SVM 是一个几何的方法;
SVM 的处理方法是只考虑 Support Vectors,也就是和分类最相关的少数点去学习分类器。而逻辑回归通过非线性映射减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重;
损失函数不同:LR 的损失函数是交叉熵,SVM 的损失函数是 HingeLoss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。对 HingeLoss 来说,其零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这是支持向量机最大的优势所在,对训练样本数目的依赖大减少,而且提高了训练效率;
LR 是参数模型,SVM 是非参数模型,参数模型的前提是假设数据服从某一分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。所以 LR 受数据分布影响,尤其是样本不均衡时影响很大,需要先做平衡,而 SVM 不直接依赖于分布;
LR 可以产生概率,SVM 不能;
LR 不依赖样本之间的距离,SVM 是基于距离的;
LR 相对来说模型更简单好理解,特别是大规模线性分类时并行计算比较方便。而 SVM 的理解和优化相对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
2.4 与朴素贝叶斯
朴素贝叶斯和逻辑回归都属于分类模型,当朴素贝叶斯的条件概率 服从高斯分布时,它计算出来的 P(Y=1|X) 形式跟逻辑回归是一样的。
两个模型不同的地方在于:
逻辑回归是判别式模型 p(y|x),朴素贝叶斯是生成式模型 p(x,y):判别式模型估计的是条件概率分布,给定观测变量 x 和目标变量 y 的条件模型,由数据直接学习决策函数 y=f(x) 或者条件概率分布 P(y|x) 作为预测的模型。判别方法关心的是对于给定的输入 x,应该预测什么样的输出 y;而生成式模型估计的是联合概率分布,基本思想是首先建立样本的联合概率概率密度模型 P(x,y),然后再得到后验概率 P(y|x),再利用它进行分类,生成式更关心的是对于给定输入 x 和输出 y 的生成关系;
朴素贝叶斯的前提是条件独立,每个特征权重独立,所以如果数据不符合这个情况,朴素贝叶斯的分类表现就没逻辑会好了。
3. 模型细节
3.1 为什么适合离散特征
我们在使用逻辑回归的时候很少会把数据直接丢给 LR 来训练,我们一般会对特征进行离散化处理,这样做的优势大致有以下几点:
离散后稀疏向量内积乘法运算速度更快,计算结果也方便存储,容易扩展;
离散后的特征对异常值更具鲁棒性,如 age>30 为 1 否则为 0,对于年龄为 200 的也不会对模型造成很大的干扰;
LR 属于广义线性模型,表达能力有限,经过离散化后,每个变量有单独的权重,这相当于引入了非线性,能够提升模型的表达能力,加大拟合;
离散后特征可以进行特征交叉,提升表达能力,由 M+N 个变量编程 M*N 个变量,进一步引入非线形,提升了表达能力;
特征离散后模型更稳定,如用户年龄区间,不会因为用户年龄长了一岁就变化;
总的来说,特征离散化以后起到了加快计算,简化模型和增加泛化能力的作用。
3.2 为什么不用平方误差
4 链接
【机器学习】逻辑回归(非常详细)
https://zhuanlan.zhihu.com/p/74874291
逻辑回归损失函数推导及求导