내일배움캠프_QAQC 1기/머신러닝의 이해와 라이브러리 활용

머신러닝 기초_분류분석_로지스틱회귀

이지응:) 2025. 1. 23. 20:30

강의 자료 : 3. 분류분석 - 로지스틱회귀

실습 자료

머신러닝기초_로지스틱.ipynb
0.02MB

 

scikit learn 홈페이지 : API Reference — scikit-learn 1.6.1 documentation

 

             머신러닝(예측)

                /            \

숫자(회귀)             범주/카테고리(분류)

      |                                  |

선형회귀                    로지스틱 회귀

 

타이타닉 생존 분류 문제

 

데이터 먼저 보기

https://www.kaggle.com/c/titanic

 

  • 주제: 탑승한 승객의 정보를 바탕으로 생존 유무를 예측하는 분류 문제
  • Y(종속변수): 사망(0), 생존(1)
  • X(독립변수): 티켓등급, 성별, 요금 등
  • 변수
    • PassengerId: 승객 식별자(Primary Key)
    • Survival : 사망(0) 생존(1)
    • Pclass: 티켓 등급(1,2,3 등급)
    • Name: 이름
    • Sex: 성별
    • Age: 나이
    • SibSp: 승객의 형제와 배우자 수
    • Parch: 승객의 부모님과 자식 수
    • Ticket: 티켓 번호Cabin: 객실 이름
    • Embarked: 승선한 항구 C(Cherbourg), Q(Queenstown), S(Southampton)
    • Fare: 요금

타이타닉 데이터로 실습한 것은 자료에 있습니당

 

로지스틱회귀

범주형 Y에서 선형함수의 한계

  • X가 연속형 변수, Y가 특정 값이 될 확률인 경우
  • 확률은 0과 1 사이 값이므로 선형으로 설명하기 어려움
  • 선형 회귀는 예측 값이 확률 범위를 넘어갈 수 있는 문제 발생
  • => s자 형태의 함수 적용

 

오즈비 (Odds ratio)

  • s 형태의 함수를 만들기 위해 오즈비 개념 적용
  • 오즈비 : 실패 확률 대비 성공 확률로 승산비라고 하기도 함
  • 오즈비 = P / (1-P)
  • P가 증가할수록 오즈비가 급격하게 증가하므로 선형성을 따르지 않게 됨
  • 따라서 로그를 취해서 완화함
  • logit = log(P/(1-P))

오즈비와 확률의 관계 / 로짓과 확률의 관계

  • 로짓의 그래프가 더 선형적인 그림을 나타내어 선형회귀의 기본식을 활용할 수 있게 됨
  • 따라서 로지스틱 회귀라고 함
  • 아래 그래프를 보면, 확률이 증가할수록 오즈비는 급격히 발산하고 로짓은 완만하게 증가함

위 그래프의 X, Y축을 교체하면 로지스틱 함수!!

X축 : 로짓, Y축 : 확률

로짓의 장점 : 어떤 값을 가져오더라도 반드시 특정 사건이 일어날 확률이 0과 1 안으로 들어오게 하는 특징이 있음

 

로짓과 기존 선형회귀를 합치면 다음 식을 도출해 낼 수 있음

해석: X값이 w1만큼 증가하면 오즈비는 e^{w1}만큼 증가한다.

로지스틱함수는 가중치 값을 안다면 X값이 주어졌을 때 해당 사건이 일어날 수 있는 P의 확률을 계산할 수 있게 됩니다.

이때, 확률 0.5를 기준으로 그보다 높으면 사건이 일어남(P(Y) = 1), 그렇지 않으면 사건이 일어나지 않음(P(Y) = 0)으로 판단하여 분류 예측에 사용합니다.(이진분)

 

 

분류 평가 지표

분류 평가 지표의 대표적인 것은 정확도와 F1-Score

 

혼동 행렬

  • 실제 값과 예측 값에 대한 모든 경우의 수를 표현하기 위한 행렬
  • 표기법
    • 실제와 예측이 같으면 True / 다르면 False
    • 예측을 양성으로 했으면 Positive / 음성으로 했으면 Negative
  • 해석
    • TP: 실제로 양성(암 환자)이면서 양성(암 환자) 올바르게 분류된 수
    • FP: 실제로 음성(정상인)이지만 양성(암 환자)로 잘못 분류된 수
    • FN: 실제로 양성(암 환자)이지만 음성(정상인)로 잘못 분류된 수
    • TN: 실제로 음성(정상인)이면서 음성(정상인)로 올바르게 분류된 수
  • 지표

     1. 정밀도(Precision): 모델이 양성 1로 예측한 결과 중 실제 양성의 비율(모델의 관점)

          정밀도 = TP / (TP + FP)

     2. 재현율(Recall): 실제 값이 양성인 데이터 중 모델이 양성으로 예측한 비율(데이터의 관점)

          재현율 = TP / (TP +FN)

     3.f1-Score: 정밀도와 재현율의 조화 평균

          f1-Score = 2 * (정밀도 * 재현율) / (정밀도 + 재현율)

     4. 정확도(Accuracy)

          정확도 = (TP + TN) / (TP + TN + FP + FN)

 

Y 값이 균일하지 않을 떄 분류에서 정확도가 제 기능을 못하는 경우가 있음

따라서 Y 범주의 비율을 맞춰주거나 평가 지표를 f-score를 사용함으로써 이를 보완함

 

`ex) 일반 환자를 음성, 암 환자를 양성이라 하고, 100명의 환자 중 95명은 음성, 5명은 양성

  • TP: 실제로 양성(암 환자)이면서 양성(암 환자) 올바르게 분류된 수 → 0명
  • FP: 실제로 음성(정상인)이지만 양성(암 환자)로 잘못 분류된 수 → 0명
  • FN: 실제로 양성(암 환자)이지만 음성(정상인)이라고 분류된 수 → 5명
  • TN: 실제로 음성(정상인)이면서 음성(정상인)이라고 분류된 수 → 95명

 

로지스틱 회귀 실습

실습한 자료는 가장 위에 자료에 있습니당~

 

자주 쓰는 함수

sklearn.linear_model.LogisticRegression : 로지스틱회귀 모델 클래스

  • 속성
    • classes_: 클래스(Y)의 종류
    • n_features_in_ : 들어간 독립변수(X) 개수
    • feature_names_in_: 들어간 독립변수(X)의 이름
    • coef_: 가중치
    • intercept_: 바이어스
  • 메소드
    • fit: 데이터 학습
    • predict: 데이터 예측
    • predict_proba: 데이터가 Y = 1일 확률을 예측
  • sklearn.metrics.accuracy: 정확도
  • sklearn.metrics.f1_socre: f1_score

 

로지스틱회귀

  • 장점: 역시 직관적이며 이해하기 쉽다.
  • 단점: 복잡한 비선형 관계를 모델링 하기 어려울 수 있음

 

마지막 정리

선형회귀와 로지스틱회귀의 공통점

  1. 모델 생성이 쉬움
  2. 가중치(혹은 회귀계수)를 통한 해석이 쉬운 장점이 있음
  3. X변수에 범주형, 수치형 변수 둘 다 사용 가능

선형회귀와 로지스틱 분류 차이점

 
선형회귀(회귀)
로지스틱회귀(분류)
Y(종속변수)
수치형
범주형
평가척도
Mean Square Error
R Square(선형 회귀만)
Accuracy
F1-score
sklearn 모델 클래스
sklearn.linear_model.linearRegression
sklearn.linear_model.LogisticRegression
sklearn 평가 클래스
sklearn.metrics.mean_squared_error
sklearn.metrics.r2_score
sklearn.metrics.accuracy_score
sklearn.metrics.f1_score

 

 

데이터 분석 프로세스