【ML】逻辑回归(Logistic Regression-LR)从入门到放弃再到掌握

logistic regression (LR)是一个简单又复杂的模型.让我们一起来回顾和总结.一切为了学习,一切为了面试,一切为了成长,一切为了梦想。

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

复杂则在于:

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

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

 

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

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

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

给定数据集D= \left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\right \}, 其中,x_{i} = \left \{ x_{i1};x_{i2};...;;x_{id} \right \},y_{i}\in \mathbb{R} ,线性回归试图学习到一个线性模型,尽可能地输出正确标记.

 

吴恩达老师说:

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

 

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

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

如图所示,令z = w\cdot x + b , 当 z > 0  , z 越大, sigmoid 返回值越接近1(但永远不会超过1). 反之,当z < 0时,z 越小, sigmoid 返回值越接近0(但永远不会小于0).

这意味着,当你有一个二分类任务(正例对应的标签为1,反例对应的标签为0) 于是对样本空间中的每一个样本作线性回归z = w\cdot x + b ,然后将之用sigmoid 函数映射  g = sigmoid(z) ,最后输出每一个样本对应的类标签(都是0-1 之间的值, 大于0.5的则标记为正例),到此为止,二分类就完成了. 最后的输出,其实可以看作是样本点在经过模型计算后,属于正例的概率.

 

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

p(Y = 1|x) =\frac{1}{1+e^{-(w\cdot x+b)}} = \frac{e^{w\cdot x+b}}{1+e^{w\cdot x+b}}

p(Y = 0|x) = 1-p(Y = 1|x) = \frac{1}{1+e^{w\cdot x+b}}

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

w = \left ( w^{(1)},w^{(2)},...,w^{(m)},b\right )^{T},X = \left ( x^{(1)},x^{(2)},...,x^{(m)},1\right )^{T},

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

p(Y = 1|x) =\frac{e^{w\cdot x}}{1+e^{w\cdot x}}

p(Y = 0|x) =\frac{1}{1+e^{w\cdot x}}

现在有训练样本若干,如何训练得到能够使得模型准确工作的参数w的过程,就是LR的模型参数估计问题.

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

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

给定数据集D= \left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\right \}, 其中,x_{i} = \left \{ x_{i1};x_{i2};...;;x_{id} \right \},x_{i}\in \mathbb{R}^{m},y_{i}\in \left\{0,1\right\} ,设p(Y = 1|x) = \Pi (x), p(Y = 0|x) =1 - \Pi (x),似然函数为:

\large \Pi _{i=1}^{m}[\Pi (x_{i})]^{y_{i}}[1-\Pi (x_{i})]^{1-y_{i}}

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

L(w) = \sum _{i=1}^{m}[y_{i}log\Pi (x_{i}) + (1 - y_{i})log(1-\Pi (x_{i}))]

我们对L(w)求极大值,得到w的估计值,模型就训练好了.愉快的进行分类.

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

 

 

 

向您推荐我的其他文章:

支持向量机(SVM)从入门到放弃再到掌握 :https://blog.csdn.net/b285795298/article/details/81977271

逻辑回归(Logistic Regression-LR)从入门到放弃再到掌握 :https://blog.csdn.net/b285795298/article/details/88683987

决策树(decesion Tree)从入门到放弃再到掌握 :https://blog.csdn.net/b285795298/article/details/89086854

随机森林(Random Forest) 从入门到放弃再到掌握:https://blog.csdn.net/b285795298/article/details/89084257

#########################################################

 

 

 

 

参考:

<<机器学习>> 周志华

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半九拾

援助一个bug吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值