逻辑回归灵魂拷问之(一)——小试牛刀

逻辑回归灵魂拷问之(一)——小试牛刀

逻辑回归几乎是最常见的机器学习模型了,每个初学者来说都是必须学习的机器学习模型,简单的推导再加上优雅的模型,很容易被人所理解。值得注意的是,就是这么简单的模型,在各种应届实习或者工作面试中经常会被面试官提到。它是否真的如你想象的如此简单,有什么地方是你在学习的过程中丝毫没有注意到的,现在让我们一起深入地了解下它吧。

1、基础概念

本篇文章主要是讲解学习逻辑回归时不容易想到的问题,因此对于机器学习的公式推导啥的就不不仔细展开了。

假设背景:预测值y服从伯努利分布

激活函数 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1

表达式 f ( x ) = w T + b f(x)=w^T+b f(x)=wT+b y = σ ( f ( x ) ) = σ ( w T x ) y=\sigma(f(x))=\sigma(w^Tx) y=σ(f(x))=σ(wTx)

损失函数 J ( θ ) = − [ 1 2 m Σ 1 m ( y i l n ( p ) + ( 1 − y i ) l n ( 1 − p ) ) ] J(\theta)=-[\frac{1}{2m}\Sigma^m_1(y_iln(p)+(1-y_i)ln(1-p))] J(θ)=[2m1Σ1m(yiln(p)+(1yi)ln(1p))]

其中 p = σ ( f ( x ) ) p=\sigma(f(x)) p=σ(f(x))

以上是关于逻辑的回归知识的一点小小的复习,干货在后边来了。

2、逻辑回归有什么优点和缺点

优点:

1:结构简单,具有很强的解释了,可以直观地看到不同特征地重要程度

2:训练速度快,占用的计算资源少,容易部署,无论用什么语言都可以很容易地写出来

3:效果好,比较依赖特征工程,特征工程做的好的话,效果会很好

缺点:

1:结构简单,在复杂的场景下效果不好

2:很难处理数据样本不均衡的情况

3:处理非线性数据的时候,一般都需要手动特征工程

3、逻辑回归与支持向量机有什么异同

逻辑回归与支持向量机(不加核函数)作为两个最经典的线性模型,经常会被一起考察到。

相同点:

1:都可以用于二分类,经过处理后也可以用于多分类

2:都可以加正则化,

3:两者都可以引入非线性化,不过方法不一样

不同点:

相比较两者的相似之处,不同之处才是更多的。

1:LR是参数模型,SVM是非参数模型

2:两者的损失函数不同,LR采用的是对数损失函数,而SVM采用的是hinge Loss

3:SVM只考虑局部,而LR考虑的是整体。SVM只考虑support vector,而LR考虑所有的样本。

4:优化方法不一样,LR常采用梯度下降法,SVM采用的是最小序列法(SMO)

5:对于非线性的表达,LR一般需要采用人工的特征工程来实现,而SVM采用引入核函数实现。

6:SVM的预测结果是0和1,LR输出的是概率。

简评:LR和SVM都是十分优秀而简单的机器学习方法,在很多数据集上两者的表现也相差不大,但是LR更适合处理大规模的工业数据,处理速度更快,而SVM处理速度则会慢很多。

4、逻辑回归怎么进行多分类

和SVM一样,LR也不支持直接进行多分类,一般是转化为One Vs Many进行二分类,一般地步骤如下:

1:将类别1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率p1。

2.然后再将另外类别2看作正样本,其他类型全部看作负样本,同理得到p2。

3.以此循环,得到该待预测样本的标记类型分别为类别i时的概率pi,取pi中最大的那个概率对应的样本标记类型作为待预测样本类型。

5、逻辑回归特征之间高度相关会有影响嘛

没有影响的,如果数据中将某个特征复制一遍,那么就相当于将权重变为原来的一半,并不会影响模型的收敛。当然对模型的收敛也肯定不会有什么促进作用

6、逻辑回归为什么么经常会对特征离散化

为什么需要离散化:

在工业界中,一般不会将连续值作为特征给逻辑回归模型,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:

  1. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易scalable(扩展)。

  2. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。

  3. 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合。

  4. 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力。

  5. 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问。

也有大佬认识模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

总结起来就是:计算简单简化模型增强模型的泛化能力

7、有哪些方法可以提高逻辑回归模型的效果

1:增加样本数量(约等于废话)

2:添加正则化,这个主要是提高模型的泛化能力

3:特征工程,如果说数据决定上线的话,那么特征工程是你可以逼近上限最重要的方法,你和大佬之间差了一个特征工程。

4:参数,这个其实聊胜于无,一般没什么提升

8、逻辑回归有哪些正则化方法,正则化为什么可以防止过拟合

一般有L1正则和L2正则两种方法
L1正则:
J ( θ ) = − [ 1 2 m Σ i = 1 m ( y i l n ( p ) + ( 1 − y i ) l n ( 1 − p ) ) ] + λ Σ j = 1 n ∣ θ j ∣ J(\theta)=-[\frac{1}{2m}\Sigma^m_{i=1}(y_iln(p)+(1-y_i)ln(1-p))]+\lambda\Sigma^n_{j=1}|\theta_j| J(θ)=[2m1Σi=1m(yiln(p)+(1yi)ln(1p))]+λΣj=1nθj

L2正则:
J ( θ ) = − [ 1 2 m Σ i = 1 m ( y i l n ( p ) + ( 1 − y i ) l n ( 1 − p ) ) ] + λ Σ j = 1 n θ j 2 J(\theta)=-[\frac{1}{2m}\Sigma^m_{i=1}(y_iln(p)+(1-y_i)ln(1-p))]+\lambda\Sigma^n_{j=1}\theta^2_j J(θ)=[2m1Σi=1m(yiln(p)+(1yi)ln(1p))]+λΣj=1nθj2

L1正则和L2正则实际上就是在损失函数后面分别加上了L1范数还有L2范数的平方。

关于正则化为什么可以防止过拟合有以下的解释:

1:由于我们的训练数据是有限的,很多模型都可以来拟合这有限的数据,为了使得预测数据有更好的表现,我们一般倾向于选择模型空间最小的模型。加入正则化就是将模型空间变得更小。这种解释类似于在方差和偏差中做一个tradeoff。

2:第二种解释就是加入正则化,就是相当于加入了先验,和贝叶斯学派有点类似, 给参数一个先验,认为参数是服从某种分布的。(为什么逻辑回归和贝叶斯还扯上了关系,我下面会有详细地介绍)。这种解释看似很有道理,但是好像又没有回答问题,并没有说法是加入先验可以提高模型泛化能力。

对于正则化还有一个问题会经常被问道,那就是L1正则化为什么会造成参数的稀疏,这个有点复杂,防止说不清楚,贴上大佬的回答。

尾言

以上就是本篇文章的全部内容,看标题就知道肯定没有结束嘛。先给大家抛出几个问题,在下一篇文章种我会详细解答,等不及的小伙伴也可以先思考或者参考网上的答案。

1:逻辑回归的优化方法是什么,以及为什么使用该方法

2:逻辑回归为什么要使用激活函数,以及为什么使用sigmoid函数,它有什么好处

3:逻辑回归的为什么采用交叉熵的损失函数

4:逻辑回归与贝叶斯之间有没有什么联系

欢迎大家加入我们challengeHub的群和我们一起交流,关于数据分析,数据挖掘,python学习,深度学习,自然语言处理的都可以进群交流,群内各路大佬。欢迎大家一起学习成长。
逻辑回归灵魂拷问之(一)——小试牛刀_第1张图片
逻辑回归灵魂拷问之(一)——小试牛刀_第2张图片

你可能感兴趣的:(灵魂拷问,逻辑回归,机器学习)