关于算法:在R语言中实现Logistic逻辑回归

48次阅读

共计 3938 个字符,预计需要花费 10 分钟才能阅读完成。

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

逻辑回归是拟合回归曲线的办法,当 y 是分类变量时,y = f(x)。典型的应用这种 模型 是给定一组预测的 X 预测Ÿ。预测因子能够是间断的,分类的或两者的混合。

R 中的逻辑回归实现

R 能够很容易地拟合逻辑回归模型。要调用的函数是 glm(),拟合过程与线性回归中应用的过程没有太大差异。在这篇文章中,我将拟合一个二元逻辑回归模型并解释每一步。

数据集

咱们将钻研 泰坦尼克号数据集

指标是预测生存(如果乘客幸存,则为 1,否则为 0)基于某些诸如 等级,性别,年龄等特色。咱们将应用分类变量和连续变量。

数据清理过程

在解决实在数据集时,咱们须要思考到一些数据可能 缺失 的状况,因而咱们须要为咱们的剖析筹备数据集。作为第一步,咱们应用该函数加载 csv 数据 read.csv()。

使每个缺失值编码为 NA。

training.data.raw < - read.csv('train.csv',header = T,na.strings = c(“”))

当初咱们须要查看缺失的值,查看每个变量的惟一值,应用 sapply()函数将函数作为参数传递给数据框的每一列。

PassengerId    Survived      Pclass        Name         Sex 
          0           0           0           0           0 
        Age       SibSp       Parch      Ticket        Fare 
        177           0           0           0           0 
      Cabin    Embarked 
        687           2 

length(unique(x)))

PassengerId    Survived      Pclass        Name         Sex 
        891           2           3         891           2 
        Age       SibSp       Parch      Ticket        Fare 
         89           7           7         681         248 
      Cabin    Embarked 
        148           4

对缺失值进行 可视化解决:能够绘制数据集并显示缺失值:

船舱 有太多的缺失值,咱们不应用它。

应用 subset()函数咱们对原始数据集进行子集化,只抉择相干列。

data < - subset(training.data.raw,select = c(2,3,5,6,7,8,10,12))

当初咱们须要解释其余缺失的值。通过在拟合函数内设置参数来拟合狭义线性模型时,R 能够 解决 它们。有不同的办法能够做到这一点,一种典型的办法是用现有的平均值,中位数或模式代替缺失值。我应用平均值。

data$ Age \[is.na(data $ Age)\] < - mean(data$ Age,na.rm = T)

就分类变量而言,应用 read.table()或 read.csv()默认会将分类变量编码为因子。

为了更好地了解 R 如何解决分类变量,咱们能够应用 contrasts()函数。

在进行拟合过程之前,先 清理 和格式化数据。这个预处理步骤对于取得模型的良好拟合和更好的预测能力通常是至关重要的。

模型拟合

咱们将数据分成两局部:训练和测试集。训练集将用于拟合咱们的模型。

通过应用函数,summary()咱们取得了咱们模型的后果:

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.6064  -0.5954  -0.4254   0.6220   2.4165  
Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  5.137627   0.594998   8.635  < 2e-16 ***
Pclass      -1.087156   0.151168  -7.192 6.40e-13 ***
Sexmale     -2.756819   0.212026 -13.002  < 2e-16 ***
Age         -0.037267   0.008195  -4.547 5.43e-06 ***
SibSp       -0.292920   0.114642  -2.555   0.0106 *  
Parch       -0.116576   0.128127  -0.910   0.3629    
Fare         0.001528   0.002353   0.649   0.5160    
EmbarkedQ   -0.002656   0.400882  -0.007   0.9947    
EmbarkedS   -0.318786   0.252960  -1.260   0.2076    
\-\-\-
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

解释咱们的逻辑回归模型的后果

当初咱们能够剖析拟合并 解释模型

首先,咱们能够看到 SibSp,Fare 和 Embarked 没有统计意义。至于统计上显着的变量,性别具备最低的 p 值,这表明乘客的性别与存活的可能性有很强的关联。预测因子的负系数表明所有其余变量雷同,男性乘客不太可能存活下来。因为男性是虚构变量,因而男性将对数概率升高 2.75,而单位年龄减少则将对数概率升高 0.037。

当初咱们能够运行 anova()模型上的函数来剖析偏差表

Analysis of Deviance Table
Model: binomial, link: logit
Response: Survived
Terms added sequentially (first to last)
         Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
NULL                       799    1065.39              
Pclass    1   83.607       798     981.79 < 2.2e-16 ***
Sex       1  240.014       797     741.77 < 2.2e-16 ***
Age       1   17.495       796     724.28 2.881e-05 ***
SibSp     1   10.842       795     713.43  0.000992 ***
Parch     1    0.863       794     712.57  0.352873    
Fare      1    0.994       793     711.58  0.318717    
Embarked  2    2.187       791     709.39  0.334990

有效偏差 (_null_ _deviance_) 和残差之间的差别越大越好。通过剖析表格,咱们能够看到每次增加一个变量时呈现偏差的状况。同样,减少 Pclass,Sex and Age 能够显着缩小 残差 。这里的大 p 值示意没有变量的模型或多或少地解释了雷同的变动量。最终你想得到显着缩小的 偏差和 AIC

评估模型的预测能力

在下面的步骤,咱们简要评估模型的拟合。通过设置参数 type=’response’,R 将以 P(y = 1 | X)的模式输入概率。咱们的决策边界将是 0.5。如果 P(y = 1 | X)> 0.5,则 y = 1,否则 y = 0。请留神,对于某些利用场景,不同的阈值可能是更好的抉择。

 fitting.results < - ifelse(fitted.results> 0.5,1,0)misClasificError < - mean(fitted.results!= test $ Survived

测试集上的 0.84 精度是相当不错的后果。然而,如果您心愿失去更准确的分数,最好运行穿插验证,如 k 折穿插验证验证。

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

ROC 是通过在各种阈值设置下将真阳性率(TPR)与假阳性率(FPR)作图而产生的曲线,而 AUC 是 ROC 曲线下的面积。作为一个教训法令,具备良好预测能力的模型应该靠近于 1。


最受欢迎的见解

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 指标

正文完
 0