로지스틱 회귀분석 분류문제

-베르누이 시행 (1 또는 0 결과만 존재)에 대한 분류문제
-모델 결과값은 각 데이터가 1이 될 확률 나옴
-분류를 위해 threshold=문턱값이 필요
별도 요구없으면 0.5 기준으로 학습시행
ex) 0.5이상인 값은 1로취급
         0.5미만인 값은 0 으로 취급

사용라이브러리

Metrics

분류 모델 평가 함수들

accuracy(class)
precision()
recall() 재현율
f1()
auc(pred)


응용문제

독립변수를 혈압, 혈당,BMI, 인슐린,
종속변수를 당뇨여부로 모델 학습시 분류 정확도는?

- 데이터 diabetes.csv 사용
-caTools 패키지의 sample.split() 함수사용하기
-학습데이터 비율 80%
- seed 123으로 설정
-답: 0.72

#종속변수가명목형 변수이고, 독립변수가 수치형 변수일때 로지스틱 회귀분석 이용하기

0)데이터분리

set.seed(123)
idx_train = caTools::sample.split(df$종속변수, Splitratio=0.7)
df_train = df[idx_train, ]
df-test = df[!idx_train, ]

1) 학습

model=glm(Outcome~BloodPressure+Glucose+Insulin,  #사용할 변수만 정리
df_train, #수치형변수
family = "binomial") #family 누락주의

2)예측

pred=predict(model, df_test, type="response") #type 누락주의
pred_class = (pred>0.5)+0
#확인 table(df[,"Outcome"], pred_class)

3)평가하기

accuracy(df_test$Outcome, pred_class) #분류문제이므로 class로 넣기
auc(df_test$outcome, pred) #주의 , pred_class가아니라 확률값 상태 pred로 넣기. 이때 class로 넣어도 오류메시지가 안뜨므로 특히 주의하기

4)승산비(Odds ratio, OR)

exp(model$coefficients["Insuline"])

+ Recent posts