逻辑斯蒂回归(LR)从入门到放弃再到掌握

logistic regression (LR)是一个简单又复杂的模型.

简单是因为从其根本上来学习,他很容易了解.

复杂则在于:

  1. LR以其简单,经济,相对实用的原因经常被使用,被用的多,自然就被理解的透彻,而当一个对其理解透彻之人(比如面试官)对一个还不怎么理解的人(比如说我)针对性地提问的时候,他的复杂就不言而喻了.
  2. LR本质上是线性分类问题,当要处理非线性问题并想要取得较好效果的时候,模型的设计过程中需要解决的诸如特征融合,正则化,以及分类的结果与别的模型的比较(最常比较的就是SVM)等问题都很典型.
  3. 各种博客对LR模型众说纷纭,比如我写的这一篇便是如此, 在其他众多大佬已经有文章对LR深入介绍之后,我仍多此一举,难免扰乱视听.

但无论如何,希望每个人的体会确实有不一样的地方,于是,写一篇博客记录一下.大佬万福,请不吝赐教.

 

假设您已经了解线性回归.

又假设您十分了解sigmoid 函数.

我们知道, 线性回归是这样的:

给定数据集逻辑斯蒂回归(LR)从入门到放弃再到掌握, 其中,逻辑斯蒂回归(LR)从入门到放弃再到掌握 ,线性回归试图学习到一个线性模型,尽可能地输出正确标记.

 

吴恩达老师说:

如果我们要用线性回归算法来解决一个分类问题,(对于分类,y 取值为 0 或者 1),但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,就算所有训练样本的标签 y 都是 0 或 1但是如果算法得到的值远大于 1 或者远小于 0 的话,就会感觉很奇怪。所以我们在接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在 0 到 1 之间。

 

所以逻辑回归就是一个分类算法,这个算法的输出值永远在 0 到 1 之间.

我们先看二分类的LR,具体做法是:利用sigmoid 函数,将每一个点的回归值映射到0,1之间.sigmoid函数特性如下:

逻辑斯蒂回归(LR)从入门到放弃再到掌握

如图所示,令逻辑斯蒂回归(LR)从入门到放弃再到掌握 , 当 z > 0  , z 越大, sigmoid 返回值越接近1(但永远不会超过1). 反之,当z < 0时,z 越小, sigmoid 返回值越接近0(但永远不会小于0).

逻辑斯蒂回归(LR)从入门到放弃再到掌握

这意味着,当你有一个二分类任务(正例对应的标签为1,反例对应的标签为0) 于是对样本空间中的每一个样本作线性回归逻辑斯蒂回归(LR)从入门到放弃再到掌握 ,然后将之用sigmoid 函数映射  逻辑斯蒂回归(LR)从入门到放弃再到掌握 ,最后输出每一个样本对应的类标签(都是0-1 之间的值, 大于0.5的则标记为正例),到此为止,二分类就完成了. 最后的输出,其实可以看作是样本点在经过模型计算后,属于正例的概率.

 

于是我们可以这样定义二分类LR的一般模型:

逻辑斯蒂回归(LR)从入门到放弃再到掌握

逻辑斯蒂回归(LR)从入门到放弃再到掌握

其中,w是权值, b 是偏置.若我们将权重值和输入向量作一些扩充:

逻辑斯蒂回归(LR)从入门到放弃再到掌握

LR模型则可以写成如下形式:

逻辑斯蒂回归(LR)从入门到放弃再到掌握

逻辑斯蒂回归(LR)从入门到放弃再到掌握

现在有训练样本若干,如何训练得到能够使得模型准确工作的参数逻辑斯蒂回归(LR)从入门到放弃再到掌握的过程,就是LR的模型参数估计问题.

当然在训练的过程中,我们可以针对不同的问题进行特征工程的操作(主要是LR是线性的,对于非线性问题,往往可以采取特征融合等办法.),另外,我们可以采取正则化方式提升模型的泛化能力,一般有L1,L2正则化,加上L1正则化给了模型的拉普拉斯先验,加上L2正则化给了模型的高斯先验。从参数的角度来看,L1得到稀疏解,会去掉一部分特征降低模型复杂度。L2得到较小和平滑的参数,(如果参数很大,样本稍微变动一点,值就有很大偏差,这当然不是我们想看到的,)L2相当于降低每个特征的权重。

我们用极大似然法进行参数估计,因为我们需要p(Y = 1|x) 最大,同时我们也需要 p(Y = 0|x) 保持最大,很自然的,我们可以想到用极大似然法.

给定数据集逻辑斯蒂回归(LR)从入门到放弃再到掌握, 其中,逻辑斯蒂回归(LR)从入门到放弃再到掌握 ,设逻辑斯蒂回归(LR)从入门到放弃再到掌握似然函数为:

逻辑斯蒂回归(LR)从入门到放弃再到掌握

两边求对数,得到对数似然函数(所以经常说,LR的损失函数使用的是对数损失):

逻辑斯蒂回归(LR)从入门到放弃再到掌握

我们对逻辑斯蒂回归(LR)从入门到放弃再到掌握求极大值,得到逻辑斯蒂回归(LR)从入门到放弃再到掌握的估计值,模型就训练好了.愉快的进行分类.

LR,不带核函数的SVM都可以进行分类,二者在分类方式,损失函数,运行效率上面都有一些区别,两者也经常被(面试官)拿来作比较.我的文章里面,也有关于两者异同的总结.请参考.https://blog.****.net/b285795298/article/details/81977271

 

 

 

参考:

<<机器学习>> 周志华

<<统计学习方法>> 李航

L1,L2的区别:https://blog.****.net/red_stone1/article/details/80755144