5.逻辑回归 Logistic Regression

      这章感觉也不难,但终究是感觉而已。所有的不难终归都是不熟练,自己只是看着好搞而已,等到自己亲自上手用这个知识敲一段时,说不定又磕磕绊绊了呢。

      我觉得这章的知识可以用于我的毕业设计,即用某个算法替代论文中的某个算法,提高预测结果。

      先mark一下。

 

————————————————————————分割线————————————————————————

 

逻辑回归的定义:

逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。

θ被统称为模型的参数。(θ是一组参数,具体数学背景和定理推导就略过了,记住就好了,只讲怎么用。)

 

我们使用”损失函数“这个评估指标,来衡量参数θ的优劣,即这一组参数能否使模型在训练集上表现优异:

损失函数小,模型在训练集上表现优异,拟合充分,参数优秀

损失函数大,模型在训练集上表现差劲,拟合不足,参数糟糕

我们追求能够让损失函数最小化的参数组合。

 

对逻辑回归中过拟合的控制,通过正则化来实现。

 

 

正则化及重要参数penalty和C:

正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向量θ的L1范式和L2范式的倍数来实现。这个增加的范式,被称为“正则项”,也被称为"惩罚项"(penalty)。

penalty:
可以输入"l1"或"l2"来指定使用哪一种正则化方式,不填写默认"l2"。 
注意,若选择"l1"正则化,参数solver仅能够使用”liblinear",
若使用“l2”正则化,参数solver中 所有的求解方式都可以使用。

C:
正则化强度的倒数,必须是一个大于0的浮点数,不填写默认1.0,即默认一倍正则项。C越小,对损失函数的惩罚越重,正则化的效力越强,参数θ会逐渐被压缩得越来越小。

当正则化/惩罚度的强度逐渐增大(即C逐渐变小), 参数θ的取值会逐渐变小,
但L1正则化会将参数压缩为0,L2正则化只会让参数尽量小,不会取到0。

 

 

什么情况用L1和L2?

L1正则化本质是一个特征选择的过程,掌管了参数的“稀疏性”。L1正则化越强,参数向量中就越多的参数为0,参数就越稀疏,选出来的特征就越少,以此来防止过拟合。因此,如果 特征量很大,数据维度很高,我们会倾向于使用L1正则化。

L2正则化在加强的过程中,会尽量让每个特征对模型都有一些小的贡献,但携带信息少,对模型贡献不大的特征的参数会非常接近于0。

通常来说,如果我们的主要目的只是为了防止过拟合,选择L2正则化就足够了。但是如果选择L2正则化后还是过拟合,模型在未知数据集上的效果表现很差,就可以考虑L1正则化。

 

以下为一个实例,建立两个逻辑回归,L1正则化和L2正则化的差别就一目了然了:

from sklearn.linear_model import LogisticRegression as LR 
from sklearn.datasets import load_breast_cancer
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split # 要看逻辑回归在训练集上的表现如何,所以导入这个库
from sklearn.metrics import accuracy_score

data=load_breast_cancer()
x=data.data
y=data.target

lrl1=LR(penalty="l1",solver="liblinear",C=0.5,max_iter=1000)
lrl2=LR(penalty="l2",solver="liblinear",C=0.5,max_iter=1000)

lrl1=lrl1.fit(x,y)

# 逻辑回归的重要属性coef_(其实就是θ),查看每个特征所对应的参数θ
lrl1.coef_

 

lrl2=lrl2.fit(x,y)
lrl2.coef_

可以看见,当我们选择L1正则化的时候,许多特征的参数都被设置为了0,这些特征在真正建模的时候,就不会出现在我们的模型当中了,而L2正则化则是对所有的特征都给出了参数。

 

 

以下代码用来判断L1和L2哪个正则化的效果最好

知识点说明:

np.linspace(0.05, 1, 19)  从0.05到1,从小到大取出19个数字

LR()的参数:
penalty:可选择的值为"l1"和"l2".分别对应L1的正则化和L2的正则化,默认是L2的正则化。

solver:决定了我们对逻辑回归损失函数的优化方法,有4种算法可以选择:liblinear,lbfgs,newton-cg,sag

C:正则化强度的倒数,必须是一个大于0的浮点数,不填写默认1.0,即默认一倍正则项。C越小,对损失函数的惩罚越重,正则化的效力越强,参数θ会逐渐被压缩得越来越小。

max_iter:迭代次数


lrl1.predict(Xtrain):预测特征矩阵对应的逻辑回归的结果
              Ytrain:真实的结果

accuracy_score(模型的预测值,数据的真实值) 输出两者的差异的精确度

——————————————————————————————————————————————————————————————————————————————————————————————————

代码:

l1 = []
l2 = []
l1test = []
l2test = []
Xtrain, Xtest, Ytrain, Ytest = train_test_split(x,y,test_size=0.3,random_state=420)


for i in np.linspace(0.05,1,19):
#     实例化模型
    lrl1=LR(penalty="l1",solver="liblinear",C=i,max_iter=1000)
    lrl2=LR(penalty="l2",solver="liblinear",C=i,max_iter=1000)
    
    lrl1=lrl1.fit(Xtrain,Ytrain)
    l1.append(accuracy_score(lrl1.predict(Xtrain),Ytrain))
    l1test.append(accuracy_score(lrl1.predict(Xtest),Ytest))
    
    lrl2 = lrl2.fit(Xtrain,Ytrain) 
    l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain)) 
    l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))


#    画图

graph = [l1,l2,l1test,l2test]
color = ["green","black","lightgreen","gray"]
label = ["L1","L2","L1test","L2test"]

plt.figure(figsize=(6,6)) 

for i in range(len(graph)):
    plt.plot(np.linspace(0.05,1,19),graph[i],color[i],label=label[i]) 

plt.legend(loc=4) 
#图例的位置在哪里?4表示,右下角    
plt.show()

 

可见,至少在我们的乳腺癌数据集下,两种正则化的结果区别不大。
但随着C的逐渐变大,正则化的强度越来越小,模型在训练集和测试集上的表现都呈上升趋势,直到C=0.8左右,训练集上的表现依然在走高。
但模型在未知数据集上的表现开始下跌,这时候就是出现了过拟合。
我们可以认为,C设定为0.9会比较好。
在实际使用时,基本就默认使用l2正则化,如果感觉到模型的效果不好,那就换L1试试看。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Logistic回归是一种逻辑回归方法。它是一种特殊的回归方法,用于对于分类问题中的因变量建立预测模型。这种方法基于学习一个由输入变量到二元输出变量的条件概率来构建预测模型,用于对一个新的样本进行分类。它对于分类问题中的因变量建立预测模型非常有效。 ### 回答2: 逻辑回归是一种用于解决二分类问题的监督学习算法。它是一种基于概率统计的分类模型,可以用于预测分类结果。逻辑回归的输出结果是一个0到1之间的概率值,其含义是该样本属于某一类别的概率。 逻辑回归模型的基本假设是数据服从伯努利分布,也就是数据只有两种可能的取值,被称为正类和负类。对于给定的训练数据集,逻辑回归模型的目标是最大化似然函数,即最大化样本属于正类(或负类)的概率。利用最大似然估计方法,我们可以求解出逻辑回归模型的参数。在实际应用中,我们通常使用梯度下降等优化算法来求解模型参数。 逻辑回归模型有多种变体,如L1正则化逻辑回归、L2正则化逻辑回归、多项式逻辑回归等。其中,L1正则化逻辑回归可以实现特征选择,可以削减一些不重要的特征,从而简化模型,提高计算速度和模型的泛化能力。 在机器学习领域,逻辑回归是一个常用的模型。它广泛应用于各种领域,如网络广告点击率预测、信用风险评估、医疗诊断等。逻辑回归模型简单易实现,具有较高的解释性,是一个较为理想的分类算法。 ### 回答3: 逻辑回归Logistic Regression)是一种经典的分类算法,在机器学习和统计学领域中得到广泛的应用。它旨在从已有的数据中构建一个能够预测类别的模型,输出结果为概率值,可以用于二分类或多分类问题的解决。 逻辑回归的基本原理是利用一个特定的函数对输入特征进行线性组合,然后将结果输入到一个Sigmoid函数中进行映射,将结果值压缩到0到1的范围内,表示输入属于某一类别的概率。这个Sigmoid函数可以被看作是一个阀门,控制着数据流向最终输出。它将具有很强预测能力的线性组合函数输出转化为概率输出的过程,将出现在中间层的结果值映射到[0,1]范围内,以表达某个样本属于某个类别的概率。 在训练模型时,逻辑回归使用的是最大似然估计的方法来确定模型的参数。在分类训练数据时,需要对样本经过一系列的处理,例如特征提取、特征转换、数据归一化等步骤。训练数据可以通过梯度下降法、牛顿迭代法等优化方法来确定最佳参数。通过此训练过程,模型可以学习到输入特征与输出概率之间的映射关系。 逻辑回归的优点包括了功能简单、速度快、易于实现和修改等等。它是机器学习中最为基本的分类算法之一,在数据挖掘、信用评估、自然语言处理、广告推荐等领域都有广泛的应用。逻辑回归作为一个二分类算法,常被用于解决分类问题。然而,在实际业务中,如何选择不同的逻辑回归模型及参数,对算法的效果和优化有着重要的影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值