拓端数据部落:逻辑回归是一种拟合回归曲线的方法

原文链接: 原文来源: 拓段数据部落公众号

逻辑回归是一种拟合回归曲线的方法,y=f(x),当 y 是分类变量时。该模型的一个典型用途是在给定一组预测变量 x 的情况下预测 y,这些变量可以是连续的、分类的或混合的。

通常,分类变量 y 可以具有不同的值。在最简单的情况下,y 是二进制的,这意味着它可以是 1 或 0 的值。机器学习中使用的一个经典示例是电子邮件分类:给定每封电子邮件的一组属性,例如字数、链接和图片,算法应该确定电子邮件是否是垃圾邮件(1) 或不是(1) @0).

在本文中,我们将此模型称为“二项式逻辑回归”,因为要预测的变量是二元的,但是,逻辑回归也可用于预测可以具有两个以上值的因变量。在第二种情况下,我们将模型称为“多项式逻辑回归”。例如,一个典型的例子是将电影分类为“搞笑”、“纪录片”或“戏剧”等。

R中的逻辑逻辑回归实现

R 使拟合逻辑回归模型变得非常容易。要调用的函数是glm(),其拟合过程与线性回归中使用的函数没有太大区别。在这篇文章中,我将拟合一个二元逻辑回归模型并解释每个步骤。

数据集

我们将处理泰坦尼克号数据集。该数据集在线有不同版本,但我建议使用 Kaggle 提供的版本,因为它几乎可以使用(要下载它,您需要在 Kaggle 注册)。

数据集(training)是一些乘客的数据集(准确的说是889),比赛的目标是根据一些特征,比如service来预测存活率(乘客存活1,没有存活1)班级、性别、年龄等。它是 <@0)。如您所见,我们将同时使用分类变量和连续变量。

数据清洗流程

在处理真实数据集时,我们需要考虑到一些数据可能丢失的情况,因此我们需要准备数据集以进行分析。作为第一步,我们使用 read.csv() 函数来加载 csv 数据。

确保参数 na.strings 等于 c(“”) 以便每个缺失值都被编码为 NA。

加载和预处理数据

现在我们需要检查缺失值,并使用 sapply() 函数查看每个变量有多少唯一值,该函数将作为参数传递的函数应用于数据框的每一列。

sapply(function(x) sum(is.na(x)))

sapply(function(x) length(unique(x)))

绘制数据集并突出显示缺失值。

map(training)

处理缺失值

变量cabinet有太多的缺失值不使用它。我们还删除了PassengerId,因为它只是一个索引。

使用 subset() 函数对原始数据集进行子集化,仅选择相关列。

现在需要考虑其他缺失值。在拟合广义线性模型时,R 可以通过在拟合函数中设置参数来处理它们。

不过,我个人更喜欢“手工”替换缺失值。有不同的方法可以做到这一点,一种典型的方法是将缺失值替换为均值、中值或现有值。我用平均。

Age[is.na(Age)] <- mean(Age,na.rm=T) ## 用平均数代替缺失

对于分类变量,默认情况下使用 read.table() 或 read.csv() 会将分类变量编码为因子。因素是 R 如何处理分类变量。我们可以使用以下代码行来检查编码。

为了更好地理解 R 如何处理分类变量,我们可以使用 contrasts() 函数。这个函数向我们展示了变量是如何虚拟化的,以及如何在模型中解释它们。

例如r语言 没有这个数据集,您可以看到在变量gender中,female将被用作参考变量。Embarked中的缺失值,由于只有两个,所以我们将这两行剔除(我们也可以替换缺失值,保留数据点)。

data[!is.na(Embarked),]

在拟合之前,数据的清理和格式化很重要。这个预处理步骤对于获得良好的模型拟合和更好的预测能力非常重要。

模型拟合

我们将数据分为两部分:训练集和测试集。训练集将用于拟合我们的模型,我们将在测试集上对其进行测试。

## 现在,让我们拟合这个模型。请务必在 glm() 函数中指定参数 family=binomial。

图片[1]-拓端数据部落:逻辑回归是一种拟合回归曲线的方法-老王博客

glm(幸存的〜。,家庭=二项式(链接='logit'))

##通过使用函数summary(),我们得到模型的结果。

解释我们的逻辑回归模型的结果

首先,我们可以看到 SibSp 和票价都没有统计学意义。对于具有统计学意义的变量,性别具有最低的 P 值,表明乘客的性别与生存概率有很强的相关性。该预测变量的负系数表明,在所有其他变量相同的情况下,男性乘客生存的可能性较小。请记住,在 Logit 模型中,响应变量是对数赔率:ln(odds) = ln(p/(1-p)) = ax1 + bx2 + 。+ z*xn。

由于男性是一个虚拟变量,男性使对数几率降低 2.75,而年龄增加一个单位会使对数几率降低 0.037。

现在我们可以分析模型的偏差表

零偏差和残差之间的差异显示了我们的模型如何与零模型(只有截距的模型)进行比较。差距越大越好。分析表格,我们可以看到一个一个添加每个变量时残差的下降。同样,添加 Pclass、Sex 和 Age 可以显着减少残差。尽管 SibSp 的 p 值较低,但其他变量似乎对模型的改进较少。这里的大p值表明没有变量的模型或多或少地解释了相同数量的变异。最终,我们希望看到的是残差和 AIC 的明显下降。

虽然线性回归没有与 R2 完全等效的值,但 McFadden R2 指数可用于评估模型的拟合度。

评估模型的预测能力

在上述步骤中,我们简要评估了模型的拟合度,现在我们想看看模型在新数据集上预测 y 时的表现如何。通过设置参数type='response',R会以P(y=1|X)的形式输出概率。我们的决策边界将是 0.5。如果 P(y=1|X)>0.5,则 y=1,否则 y=0。

错误

打印(粘贴('准确性',1-错误))

0.84 在测试集上的准确率是相当不错的结果。但是,请记住,这个结果在某种程度上取决于我之前对数据的手动分割,所以如果你想获得更准确的分数r语言 没有这个数据集,最好运行某种交叉验证,如 k-fold 交叉验证。

作为最后一步,我们将绘制 ROC 曲线并计算 AUC(曲线下面积),这是二元分类器的典型性能度量。

ROC 是通过绘制不同阈值设置下的真阳性率 (TPR) 与假阳性率 (FPR) 生成的曲线,而 AUC 是 ROC 曲线下的面积。根据经验,具有良好预测能力的模型的 AUC 应该比 0.5 更接近 1(1 是理想值)。

性能(测量=“tpr”,x.measure=“fpr”)

情节(prf)

奥克

最受欢迎的见解

1.R语言多元逻辑回归应用案例

2.Panel Smooth Transition Regression (PSTR)分析案例实现

3.matlab 中的偏最小二乘回归 (PLSR) 和主成分回归 (PCR)

4.R语言泊松回归模型分析案例

5.Hosmer-Lemeshow R 语言回归中的拟合优度检验

6.用于 LASSO 回归、Ridge 回归和 ElasticNet 模型实现的 R 语言

7.在 R 中实现 Logistic Logistic 回归

8.python 使用线性回归预测股票价格

9.生存分析和Cox回归中R语言如何计算IDI、NRI指标

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论