美文网首页
Logistic Regression (2)

Logistic Regression (2)

作者: Manfestain | 来源:发表于2019-11-04 11:16 被阅读0次

    1. 简单介绍LR

    逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。


    2.逻辑回归的假设

    逻辑回归假设数据服从伯努利分布

    伯努利分布:是一个离散型概率分布,若成功,则随机变量取值1;若失败,随机变量取值为0。成功概率记为p,失败为q = 1-p。(抛硬币)

    f(x)=p^x(1-p)^{1-x}=\begin{cases}p,\quad if\quad x=1\\\\q,\quad if\quad x=0\end{cases}

    假设数据服从伯努利分布,则存在一个成功和失败,对应二分类问题的正类负类,则正类的概率为p,负类的概率为q=1-p

    LR定义了一个条件概率p(y|x;\theta)。通过条件概率,在训练集上定义一个似然函数,通过最大似然来学习\theta

    \theta^Tx的取值在整个实数范围内,使用Sigmoid(x)\theta^Tx从实数空间映射到条件概率p(y|x;\theta)

    p=p(y=1|x;\theta)=h_\theta(x;\theta)=\frac{1}{1+e^{-\theta^Tx}}

    q = p(y=0|x;\theta)=1-h_\theta(x;\theta)=\frac{1}{1+e^{\theta^Tx}}

    写在一起:y= p(y=1|x;\theta)^y(1-p(y=1|x;\theta))^{1-y}


    3. 逻辑回归的损失函数

    逻辑回归的损失函数是极大似然函数

    极大似然估计:利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值(模型已定,参数未知)

    对于LR,模型已定,特征和标签已知,反推最具有可能(最大概率)导致这些样本结果出现的参数

    y=(\frac{1}{1+e^{-\theta^Tx}})^y(\frac{1}{1+e^{\theta^Tx}})^{1-y}

    对于正类,丢入模型预测结果得是正类的结果最大;对于负类,丢入模型预测结果得是负类的概率最大;

    而模型可以自动计算正负类,所以丢入模型,让结果最大就好

    期望所有样本的概率都达到最大值,目标函数是一个联合分布,假设每个样本独立:

    Obj=\prod_{i=1}^{N}(\frac{1}{1+e^{-\theta^Tx_i}})^{y_i} (\frac{1}{1+e^{\theta^Tx_i}})^{1-y_i}

    对数损失函数:log(Obj)=\sum_{i=1}^{N}[y_ilog(\frac{1}{1+e^{-\theta^Tx_i}})(1-y_i)log(\frac{1}{1+e^{\theta^Tx_i}})]

    最小化损失函数:-log(Obj)=-\sum_{i=1}^{N}[y_ilog(\frac{1}{1+e^{-\theta^Tx_i}})(1-y_i)log(\frac{1}{1+e^{\theta^Tx_i}})]

    loss=\sum_{i=1}^{N}[(y_i(\theta^Tx)) - log(1+e^{\theta^Tx_i})]


    4.逻辑回归为什么不用平方损失而用对数损失

    • 对于逻辑回归,这里所说的对数损失和极大似然是相同的。

    • 在使用 Sigmoid 函数作为正样本的概率时,同时将平方损失作为损失函数,这时所构造出来的损失函数是非凸的,不容易求解,容易得到其局部最优解。 而如果使用极大似然,其目标函数就是对数似然函数,该损失函数是关于未知参数的高阶连续可导的凸函数,便于求其全局最优解。

    • 对数损失函数更新起来更快,因为只和x,y有关,和sigmoid(x)本身的梯度无关

      \theta_j:=\theta_j + \alpha(y_i-h_{\theta}(x_i))x_j^{i}


    5. 逻辑回归的求解方法

    极大似然函数无法直接求解,一般是通过对该函数进行梯度下降来不断逼近其最优解

    • 批梯度下降会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢。
    • 随机梯度下降是以高方差频繁更新,优点是使得 sgd 会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
    • 小批量梯度下降结合了批梯度下降和随机梯度下降的优点,每次更新的时候使用 n 个样本。减少了参数更新的次数,可以达到更加稳定收敛结果,一般在深度学习当中我们采用这种方法。

    上述方法有两个致命问题:

    • 如何对模型选择合适的学习率。自始至终保持同样的学习率其实不太合适。因为一开始参数刚刚开始学习的时候,此时的参数和最优解隔的比较远,需要保持一个较大的学习率尽快逼近最优解。但是学习到后面的时候,参数和最优解已经隔的比较近了,你还保持最初的学习率,容易越过最优点,在最优点附近来回振荡,通俗一点说,就很容易学过头了,跑偏了。
    • 如何对参数选择合适的学习率。在实践中,对每个参数都保持的同样的学习率也是很不合理的。有些参数更新频繁,那么学习率可以适当小一点。有些参数更新缓慢,那么学习率就应该大一点。

    6. 逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响:

    结论:如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。

    • 对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一
    • 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了

    7.为什么我们还是会在训练的过程当中将高度相关的特征去掉:

    • 去掉高度相关的特征会让模型的可解释性更好
    • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

    8. 为什么正则项可以防止过拟合

    过拟合:表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声

    正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声扰动相对较小


    9. L1正则化不可导,怎么求解

    • 坐标轴下降法:按照每个坐标轴一个个使其收敛

      按照坐标轴方向,先固定m-1个,求另一个的局部最优解(梯度下降是沿着梯度的负方向)

    • 最小角回归:每一步都选择一个相关性很大的特征,总的运算步数只和特征的数目有关,和训练集的大小无关


    10.为什么逻辑回归比线性回归好

    逻辑回归和线性回归首先都是广义的线性回归,

    • 经典线性模型的优化目标函数是平方损失,而逻辑回归则是似然函数
    • 线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好

    11. 逻辑回归与最大熵模型MaxEnt的关系

    逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应类别为二类时的特殊情况,也就是当逻辑回归类别扩展到多类别时,就是最大熵模型。


    12. 工程上,怎么实现LR的并行化,有哪些并行化的工具

    逻辑回归的并行化最主要的就是对目标函数梯度计算的并行化

    算法的并行化有两种

    1. 无损的并行化:算法天然可以并行,并行只是提高了计算的速度和解决问题的规模,但和正常执行的结果是一样的。
    2. 有损的并行化:算法本身不是天然并行的,需要对算法做一些近似来实现并行化,这样并行化之后的双方和正常执行的结果并不一致,但是相似的。

    基于Batch的算法(Batch-GD, LBFGS, OWLQN)都是可以进行无损的并行化的。而基于SGD的算法(Ad Predictor, FTRL-Proximal)都只能进行有损的并行化。


    13. 逻辑回归为什么要做特征离散化

    1. 非线性:逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合; 离散特征的增加和减少都很容易,易于模型的快速迭代;
    2. 速度快:稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
    3. 鲁棒性:离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
    4. 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
    5. 稳定性:特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
    6. 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

    14. 逻辑回归的目标函数中增大L1正则化会是什么结果:

    所有参数w都会变成0


    15.逻辑回归如何处理非线性数据

    特征离散化

    组合不同的特征


    逻辑回归的优缺点

    优点:

    • 形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
    • 模型效果不错。在工程上是可以接受的(作为 baseline),如果特征工程做的好,效果不会太差,并且特征工程可以并行开发,大大加快开发的速度。
    • 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化 SGD 发展比较成熟。
    • 方便调整输出结果,通过调整阈值的方式。

    缺点:

    • 准确率欠佳。因为形式非常的简单,而现实中的数据非常复杂,因此,很难达到很高的准确性。
    • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1。我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
    • 无法自动的进行特征筛选。
    • 只能处理二分类问题。

    相关文章

      网友评论

          本文标题:Logistic Regression (2)

          本文链接:https://www.haomeiwen.com/subject/rzwrbctx.html