통계 이야기

빅데이터 분석 ; logistic regression ; 로짓분석 ; 분류분석 ; classification analysis

창이 2021. 7. 21.
728x90
반응형

안녕하세요. 창이에요 !
kaggle data인 social_network_ads 데이터를 가지고 빅데이터 분석을 해보았습니다.
logistic regression으로 모형을 적합하고
어떤 방법으로 반복, 시행 했을 때 가장 높은 평균과 표준편차를 갖는지 알아보겠습니다.

데이터 탐색

head(data)

social network_ad 데이터 활용 400행에 5개 변수
User.ID(연속) Gender(이산) Age(연속) EstimatedSalary(연속) Purchased(이산형)

par(mfrow = c(1, 2))

plot 화면에 두개의 그래프가 들어갈 수 있도로 구성

hist(data$Age) ; hist(data$EstimatedSalary)

str(data)

sum(is.na(data))

[1] 0

결측치 확인

모델적합

glm.obj = glm(Purchased~Gender+Age+EstimatedSalary, data = train\_data, family = binomial)  
summary(glm.obj)

Gender 변수의 p값은 0.414로 적절하지 않다고 판단되므로 제거.

제거 후 새로 logit 모형 적용.

glm.obj <- glm(Purchased ~ Age + EstimatedSalary, data = data) ; summary(glm.obj)

반복

set.seed(123)

seed를 주게 되어 random한 값을 뽑을 때 같은 것들이 뽑히도록 한다.

library(caTools)

samp<-sample.split(data$Purchased,SplitRatio = 0.75)  
train\_data<-subset(data, samp== TRUE)  
test\_data<-subset(data,samp == FALSE)

train데이터와 test 데이터로 분류

predicttrain = predict(glm.obj, type = 'response')

적절한 임계값 선택

table(train\_data$Purchased, predicttrain>0.5)

FALSE TRUE
0 180 13
1 29 78

table(train\_data$Purchased, predicttrain>0.7)

FALSE TRUE
0 186 7
1 47 60

table(train\_data$Purchased, predicttrain>0.3)

FALSE TRUE
0 156 37
1 12 95

test세트의 accuracy 측정.

predicttest = predict(glm.obj, type = 'response',newdata = test\_data)  
table(test\_data$Purchased, predicttest>0.7)

FALSE TRUE
0 59 5
1 17 19

728x90
반응형

댓글

추천 글