逻辑回归灵魂拷问之(一)—小试牛刀
逻辑回归几乎是最常见的机器学习模型了,每个初学者来说都是必须学习的机器学习模型,简单的推导再加上优雅的模型,很容易被人所理解。值得注意的是,就是这么简单的模型,在各种应届实习或者工作面试中经常会被面试官提到。它是否真的如你想象的如此简单,有什么地方是你在学习的过程中丝毫没有注意到的,现在让我们一起深入地了解下它吧。
1、基础概念
本篇文章主要是讲解学习逻辑回归时不容易想到的问题,因此对于机器学习的公式推导啥的就不不仔细展开了。
假设背景 :预测值y服从伯努利分布
激活函数 :
表达式 :,
损失函数 :
其中
以上是关于逻辑的回归知识的一点小小的复习,干货在后边来了。
2、逻辑回归有什么优点和缺点
优点:
- 结构简单,具有很强的解释了,可以直观地看到不同特征地重要程度
- 训练速度快,占用的计算资源少,容易部署,无论用什么语言都可以很容易地写出来
- 效果好,比较依赖特征工程,特征工程做的好的话,效果会很好
缺点:
- 结构简单,在复杂的场景下效果不好
- 很难处理数据样本不均衡的情况
- 处理非线性数据的时候,一般都需要手动特征工程
3、逻辑回归与支持向量机有什么异同
逻辑回归与支持向量机(不加核函数)作为两个最经典的线性模型,经常会被一起考察到。
相同点:
- 都可以用于二分类,经过处理后也可以用于多分类
- 都可以加正则化,
- 两者都可以引入非线性化,不过方法不一样
不同点:
相比较两者的相似之处,不同之处才是更多的。
- LR是参数模型,SVM是非参数模型
- 两者的损失函数不同,LR采用的是对数损失函数,而SVM采用的是hinge Loss
- SVM只考虑局部,而LR考虑的是整体。SVM只考虑support vector,而LR考虑所有的样本。
- 优化方法不一样,LR常采用梯度下降法,SVM采用的是最小序列法(SMO)
- 对于非线性的表达,LR一般需要采用人工的特征工程来实现,而SVM采用引入核函数实现。
- SVM的预测结果是0和1,LR输出的是概率。
简评:LR和SVM都是十分优秀而简单的机器学习方法,在很多数据集上两者的表现也相差不大,但是LR更适合处理大规模的工业数据,处理速度更快,而SVM处理速度则会慢很多。
4、逻辑回归怎么进行多分类
和SVM一样,LR也不支持直接进行多分类,一般是转化为One Vs Many进行二分类,一般地步骤如下:
- 将类别1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率p1。
- 然后再将另外类别2看作正样本,其他类型全部看作负样本,同理得到p2。
- 以此循环,得到该待预测样本的标记类型分别为类别i时的概率pi,取pi中最大的那个概率对应的样本标记类型作为待预测样本类型。
5、逻辑回归特征之间高度相关会有影响吗
没有影响的,如果数据中将某个特征复制一遍,那么就相当于将权重变为原来的一半,并不会影响模型的收敛。当然对模型的收敛也肯定不会有什么促进作用
6、逻辑回归为什么么经常会对特征离散化
为什么需要离散化:
在工业界中,一般不会将连续值作为特征给逻辑回归模型,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:
- 稀疏向量内积乘法运算速度快,计算结果方便存储,容易scalable(扩展)。
- 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。
- 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合。
- 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力。
- 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问。
也有大佬认为模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。
总结起来就是:计算简单 ,简化模型 ,增强模型的泛化能力
7、有哪些方法可以提高逻辑回归模型的效果
- 增加样本数量(约等于废话)
- 添加正则化,这个主要是提高模型的泛化能力
- 特征工程,如果说数据决定上线的话,那么特征工程是你可以逼近上限最重要的方法,你和大佬之间差了一个特征工程。
- 参数,这个其实聊胜于无,一般没什么提升
8、逻辑回归有哪些正则化方法,正则化为什么可以防止过拟合
一般有L1正则和L2正则两种方法 L1正则:
L2正则:
L1正则和L2正则实际上就是在损失函数后面分别加上了L1范数还有L2范数的平方。
关于正则化为什么可以防止过拟合有以下的解释:
- 由于我们的训练数据是有限的,很多模型都可以来拟合这有限的数据,为了使得预测数据有更好的表现,我们一般倾向于选择模型空间最小的模型。加入正则化就是将模型空间变得更小。这种解释类似于在方差和偏差中做一个tradeoff。
- 第二种解释就是加入正则化,就是相当于加入了先验,和贝叶斯学派有点类似, 给参数一个先验,认为参数是服从某种分布的。(为什么逻辑回归和贝叶斯还扯上了关系,我下面会有详细地介绍)。这种解释看似很有道理,但是好像又没有回答问题,并没有说法是加入先验可以提高模型泛化能力。
对于正则化还有一个问题会经常被问道,那就是L1正则化为什么会造成参数的稀疏,这个有点复杂,防止说不清楚,贴上大佬的回答。
以上就是本篇文章的全部内容,看标题就知道肯定没有结束嘛。先给大家抛出几个问题,在下一篇文章种我会详细解答,等不及的小伙伴也可以先思考或者参考网上的答案。
1:逻辑回归的优化方法是什么,以及为什么使用该方法
2:逻辑回归为什么要使用激活函数,以及为什么使用sigmoid函数,它有什么好处
3:逻辑回归的为什么采用交叉熵的损失函数
4:逻辑回归与贝叶斯之间有没有什么联系
扫码加群交流
长按二维码关注ChallengeHub
ChallengeHub出品
推荐阅读: