原文链接:http://tecdat.cn/?p=22966

原文出处:拓端数据部落公众号

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

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

在这篇文章中,我们把这个模型称为 "二项逻辑回归",因为要预测的变量是二进制的,然而,逻辑回归也可以用来预测一个可以两个以上数值的因变量。在这第二种情况下,我们称该模型为 "多项式逻辑回归"。例如,一个典型的例子是将电影分为 "搞笑片"、"纪录片 "或 "剧情片"等。

R中的逻辑Logistic回归实现

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

数据集

我们将在泰坦尼克号数据集上工作。这个数据集在网上有不同的版本,但是我建议使用Kaggle提供的版本,因为它几乎已经可以使用了(为了下载它,你需要在Kaggle注册)。
数据集(训练)是一些乘客(准确的说是889人)的数据集合,比赛的目标是根据一些特征,如服务等级、性别、年龄等来预测生存率(如果乘客幸存下来就是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)

处理缺失值

变量cabin有太多的缺失值,不使用它。我们也剔除PassengerId,因为它只是一个索引。
使用subset()函数,对原始数据集进行子集,只选择相关列。

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

然而,我个人更喜欢 "手动"替换缺失值。有不同的方法可以做到这一点,一个典型的方法是用平均数、中位数或现有数值来替换缺失的数值。我使用平均数。

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

就分类变量而言,使用read.table()或read.csv()默认会把分类变量编码为因子。因子是R处理分类变量的方式。我们可以使用以下几行代码来检查编码情况。

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

例如,你可以看到,在性别这个变量中,女性将被用作参考变量。Embarked中的缺失值,由于只有两个,我们将剔除这两行(我们也可以替换缺失值,保留数据点)。

data[!is.na(Embarked),]

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

模型拟合

我们把数据分成两部分:训练集和测试集。训练集将被用来拟合我们的模型,我们将在测试集上进行测试。


##现在,让我们来拟合这个模型。请务必在glm()函数中指定参数family=binomial。
glm(Survived ~.,family=binomial(link='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完全等同的指标,但麦克法登R2指数可以用来评估模型的拟合度。

评估模型的预测能力

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

Error <- mean(fitted != Survived)
print(paste('准确度',1- Error))

测试集上0.84的准确度是一个相当不错的结果。然而,请记住,这个结果在一定程度上取决于我先前对数据的手动分割,因此,如果想得到一个更精确的分数,最好运行某种交叉验证,如k-fold交叉验证。

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

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

performance( measure = "tpr", x.measure = "fpr")
plot(prf)


auc


最受欢迎的见解

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

2.面板平滑转移回归(PSTR)分析案例实现

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

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

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

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

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

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

拓端tecdat|R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况相关推荐

  1. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

  2. R语言逻辑回归Logistic回归分析预测股票涨跌

    最近我们被客户要求撰写关于逻辑回归的研究报告,包括一些图形和统计输出. 视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠心病风 ...

  3. R语言逻辑回归logistic regression对付费用户进行预测

    对于某企业新用户,会利用大数据来分析该用户的信息来确定是否为付费用户,弄清楚用户属性,从而针对性的进行营销,提高运营人员的办事效率. 最近我们被客户要求撰写关于付费预测的研究报告,包括一些图形和统计输 ...

  4. R语言逻辑回归 logistic regression

    R语言逻辑回归代码示例 rm(list=ls()) require(kernlab) data(spam) data <- spam n <- nrow(spam) id <- sa ...

  5. R语言逻辑回归logistic regression对用户收入进行预测

    逻辑回归对用户收入进行预测 ​ 对于某企业新用户,会利用大数据来分析该用户的信息来确定是否为付费用户,弄清楚用户属性,从而针对性的进行营销,提高运营人员的办事效率. 对于付费用户预测,主要是思考收入由 ...

  6. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...

  7. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  8. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  9. R语言分位数回归Quantile Regression分析租房价格

    全文链接:http://tecdat.cn/?p=18422 本文想在R软件中更好地了解分位数回归优化.在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末"阅读原文" ...

  10. 数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

    全文链接:http://tecdat.cn/?p=27384 在本文中,数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息(点击文末"阅读原文"获取完整代 ...

最新文章

  1. 独家 | 零售业中的惊涛骇浪——人工智能、机器学习和大数据
  2. 34 linux监控平台
  3. java中ofd文件转pdf_word文件转pdf怎么转?这一招轻松搞定Word转PDF
  4. linux to extract contents between patterns
  5. 哪吒票房逼近40亿,用python爬取哪吒短评分析
  6. Mybatis学习第四天——一对一一对多
  7. 关于异常“The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine”的处理...
  8. 国内开源社区巨作AspectCore-Framework入门
  9. e-r模型教案高中计算机,《ER模型1》[数据库][计算机]教案.doc
  10. 平台的本质——保险公司互联网平台建设系列
  11. EndpointAddress——不只是一个Uri[上篇]
  12. Linux运维面试题
  13. netty开发tcp数据传输编解码框架使用
  14. 分区助手迁移系统,更改系统盘盘符
  15. mapbox创建空白底图
  16. ABAP 客户主数据批量导入
  17. 【百度分享】BZFS—一种透明压缩文件系统
  18. acwing 206 石头游戏 矩阵快速幂
  19. 爬虫用fiddler抓取网易新闻客户端手机app内容
  20. 未来电竞旗舰:iQOO 8系列售价3799元起

热门文章

  1. 学习汇编语言 -王爽,自已完成的一道实试题 (1)
  2. opencv源码解析之(5):CommandLineParser类的简单理解
  3. perl删除Windows下的图片缓存缩略图(Thumbs.db)
  4. 【损失函数】Focal Loss for Dense Object Detection And RetinaNet
  5. 系统调用的概念和类型
  6. python tornade 表单和模板
  7. python基础--函数1
  8. 中国首家干线物流联合创新中心成立,实施自动驾驶数据共享是否可行?...
  9. 1月16日学习内容整理:存储库MongoDB之pymongo模块
  10. delphi2010:按键 控制键 组合键的判断 响应