빅 데이터 분석-로지스틱 회귀

로지스틱 회귀는 반응 변수가 범주 형인 분류 모델입니다. 통계에서 비롯된 알고리즘이며 감독 된 분류 문제에 사용됩니다. 로지스틱 회귀에서 우리는 비용 함수를 최소화하는 다음 방정식에서 매개 변수의 벡터 β를 찾으려고합니다.

$$ logit (p_i) = ln \ left (\ frac {p_i} {1-p_i} \ right) = \ beta_0 + \ beta_1x_ {1, i} + ... + \ beta_kx_ {k, i} $$

다음 코드는 R에서 로지스틱 회귀 모델을 맞추는 방법을 보여줍니다. 여기서는 Naive Bayes에 사용 된 것과 동일한 로지스틱 회귀를 보여주기 위해 스팸 데이터 세트를 사용할 것입니다.

정확도 측면에서 예측 결과를 보면 회귀 모델이 테스트 세트에서 92.5 %의 정확도를 달성 한 것을 알 수 있습니다. 이는 Naive Bayes 분류기에 의해 달성 된 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