大数据分析 - 逻辑回归

  • 简述

    逻辑回归是一种分类模型,其中响应变量是分类的。它是一种来自统计学的算法,用于有监督的分类问题。在逻辑回归中,我们试图在以下等式中找到参数的向量 β,以最小化成本函数。
    $$logit(p_i) = ln \left ( \frac{p_i}{1 - p_i} \right ) = \beta_0 + \beta_1x_{1,i} + ... + \beta_kx_{k,i}$$
    以下代码演示了如何在 R 中拟合逻辑回归模型。我们将在此处使用垃圾邮件数据集来演示逻辑回归,与朴素贝叶斯使用的相同。
    从准确度方面的预测结果来看,我们发现回归模型在测试集中达到了 92.5% 的准确度,而朴素贝叶斯分类器的准确度为 72%。
    
    library(ElemStatLearn)
    head(spam) 
    # Split dataset in training and testing 
    inx = sample(nrow(spam), round(nrow(spam) * 0.8)) 
    train = spam[inx,] 
    test = spam[-inx,]  
    # Fit regression model 
    fit = glm(spam ~ ., data = train, family = binomial()) 
    summary(fit)  
    # Call: 
    #   glm(formula = spam ~ ., family = binomial(), data = train) 
    #  
    # Deviance Residuals:  
    #   Min       1Q   Median       3Q      Max   
    # -4.5172  -0.2039   0.0000   0.1111   5.4944
    # Coefficients: 
    # Estimate Std. Error z value Pr(>|z|)     
    # (Intercept) -1.511e+00  1.546e-01  -9.772  < 2e-16 *** 
    # A.1         -4.546e-01  2.560e-01  -1.776 0.075720 .   
    # A.2         -1.630e-01  7.731e-02  -2.108 0.035043 *   
    # A.3          1.487e-01  1.261e-01   1.179 0.238591     
    # A.4          2.055e+00  1.467e+00   1.401 0.161153     
    # A.5          6.165e-01  1.191e-01   5.177 2.25e-07 *** 
    # A.6          7.156e-01  2.768e-01   2.585 0.009747 **  
    # A.7          2.606e+00  3.917e-01   6.652 2.88e-11 *** 
    # A.8          6.750e-01  2.284e-01   2.955 0.003127 **  
    # A.9          1.197e+00  3.362e-01   3.559 0.000373 *** 
    # Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1  1  
    ### Make predictions 
    preds = predict(fit, test, type = ’response’) 
    preds = ifelse(preds > 0.5, 1, 0) 
    tbl = table(target = test$spam, preds) 
    tbl 
    #         preds 
    # target    0   1 
    # email   535  23 
    # spam     46 316 
    sum(diag(tbl)) / sum(tbl) 
    # 0.925