본문 바로가기
[코드스테이츠]AI

[S2-Week1]Logistic Regression

by b___gly 2022. 5. 2.

Warm up

  • 로지스틱 회귀(Logistic regression) : 답이 이항적인 것. 0 or 1.
    1. 이진 로지스틱 회귀: 여기서 범주형 응답에 대해 가능한 결과는 두 가지뿐입니다. 위의 예에서와 같이 학생은 합격하거나 불합격합니다.
    2. 다항 로지스틱 회귀: 여기에는 응답 변수에 순서가 없는 3개 이상의 변수가 포함될 수 있습니다. 예를 들어 레스토랑에서 식사하는 사람들이 특정 종류의 음식(채식, 고기 또는 완전채식)을 선호하는지 예측하는 것이 있습니다.
    3. 순서 로지스틱 회귀: 다항 회귀와 마찬가지로 3개 이상의 변수가 있을 수 있습니다. 그러나 측정에는 순서가 있습니다. 예를 들어 1에서 5까지의 척도로 호텔을 평가하는 경우를 들 수 있습니다.
    4. (출처) : https://www.tibco.com/ko/reference-center/what-is-logistic-regression
    • 독립변수는 범주형 or 연속형
    • 종속변수 값(즉, 확률)이 0.5 보다 크면 그 사건이 일어나고, 작으면 안 일어남.
    • R2 못 씀.(제곱할 게 없음)
    • 어떤 사건이 발생할지에 대한 직접 예측이 아니라, 그 사건이 발생할 확률

출처 : https://m.blog.naver.com/y4769/221851780608

 

  • 트레인 데이터(75%)랑 테스트 데이터(25%)랑 나눈 후, 그걸 반복해서 테스트 데이터를 4번 다 돌리고 그 중 가장 잘 맞는 모델을 선택해 주는 것이 Four-Fold Cross Validation.
  • 트레인 데이터와 테스트 데이터의 용도?
    • train data : 모델을 fit 하는 데 사용.
    • test data : train data로 만들어진 모델을 일반화 됐는지 확인 위해 마지막에 한 번 사용.
    • validate data : 예측모델을 선택하기 위해 사용.
    • 검증 데이터는 모의고사, 테스트 데이터는 수능(마지막으로 한 번만 사용)
    • 시계열데이터는 랜덤하게 추출하면 안되고, 시계열데이터를 정렬해서 
      1. 과거 - 학습데이터
      2. 최근 - 검증데이터
      3. 미래 - 테스트데이터
  • 테스트 데이터로 예측한 후 모델을 수정해 또 테스트 데이터로 예측하는 행동은 왜 피해야 하나? 
    • 테스트 데이터가 이미 학습된 상태여서 (답을 알고 시험을 보는 것과 똑같음)

 

Session

  • 로지스틱 함수

출처 : 코드스테이츠 렉쳐노트

  • 회귀모델이란 : 독립 변수를 통해 종속변수를 예측(특정수치, continuous 연속형 데이터를 예측)
  • 분류모델이란 : 독립 변수를 통해 종속변수를 예측 => 특정 클래스에 속할 확률을 반환 (카테고리형, 이산형 데이터를 예측)
  • 회귀모델 평가지표 : MSE, MAE, RMSE, R2
  • 분류모델 평가지표 : accuracy(정확도)
  • 분류문제에 회귀 모델을 사용하면 결과값을 해석하기 어려움.
  • 로지스틱 회귀는 목적은 분류지만 매커니즘이 회귀 모델
  • 로지스틱 계수 해석

 

 

Quiz Coding

  • 분류문제의 기준모델
# mode(): Return the highest frequency value in a Series.
major = y_train.mode()[0]

# 타겟 샘플 수 만큼 0이 담긴 리스트를 만듭니다. 기준모델로 예측
y_pred = [major] * len(y_train)
  • 한 가지 column에 대해서만 onehot-encoder 할 때
encoder = OneHotEncoder(cols='gender', use_cat_names = True)
  • train, validation, test data 나눠주기
from sklearn.model_selection import train_test_split

target = 'cardio'

X = df.drop(columns=target)
y = df[target]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2) 
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=2)
  • encoder랑 scaler된 걸 모델에 넣기
from category_encoders import OneHotEncoder

#인코딩
encoder = OneHotEncoder(use_cat_names = True)
X_train_encoded = encoder.fit_transform(X_train)
X_val_encoded = encoder.transform(X_val)

#표준화
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_imputed)
X_val_scaled = scaler.transform(X_val_imputed)

#모델 fit
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train_scaled, y_train)

 

 

도움될 만한 사이트

 

분류모델 (Classification)의 성능 평가

Classification & Clustering 모델 평가 조대협 (http://bcho.tistory.com) 클러스터링과 분류 모델에 대한 성능 평가 방법은 데이타에 라벨이 있는가 없는가에 따라서 방법이 나뉘어 진다. 사실 클러스터링은

bcho.tistory.com

 

[머신러닝] 파이썬 사이킷런(sklearn) 기초

파이썬(sklearn) 사이킷런(sklearn) 기초

losskatsu.github.io

 

Logistic Regression(1) [내가 공부한 머신러닝 #11.]

이전시간까지는 오질나게 Linear 모델로 Regression만 했었죠!?!?! 일반적인 Linear Regression에 L2...

blog.naver.com

 


소감

생각보다 재밌는 거 몬데....

릿지모델은 어려웠는데 오히려 이걸 하고 나니 릿지가 이해가 된다는....!

 

이번주부터 스터디 시작했당!(인프런 권민철 교수님꺼)

놀지 말고 꾸준히 뭐라도 머리에 넣어야게땅...

그래도 머리에 넣으면 처리라도 하는데 그 넣는 거라도 안 하면 그냥 뇌공장 폐업 시키는 나란 사람.....

내일 스챌 얼른 풀고 싶다앙!

 

댓글