Logistic Regression


Linear Models


1. Train, Validate, Test 데이터 분리

Q . 검증세트가 필요한 이유는?
A . 훈련세트로 모델을 한 번에 완전하게 학습시키기가 어렵다. 훈련세트로 다르게 튜닝된 여러 모델들을 학습한 후 어떤 모델이 학습이 잘 되었는지 검증하고 선택하는 과정이 필요하다.

  • 모델선택(Model selection)을 할때, train데이터로 fit 하고 val데이터로 검증하고 하이퍼파라미터를 수정한다.
  • Test 데이터는 최종적으로 1번만 검증한다.
  • 데이터 수↑ : 전체 데이터를 훈련 / 검증 / 테스트 분리
  • 데이터 수↓ : K-fold 교차검증( k-fold cross-validation )을 진행
  • sklearn의 train_test_split
from sklearn.model_selection import train_test_split
train, val = train_test_split(train, random_state=2)
print("train shape: ", train.shape)
print("val shape: ", val.shape)

2. Classification( 분류 )

  • 분류문제회귀문제는 다른 기준으로 기준모델을 설정한다.

    • 회귀 : 연속형, 연속적인 값 (ex. 집값)
    • 분류 : 클래스 (1,0 이진분류 / abc 다중분류 등)
  • Majority class baseline : 다수 클래스를 기준모델로 정하는 방법

    • 회귀문제 : 타겟 변수의 평균값을 기준모델로 사용
    • 분류문제 : 타겟 변수에서 가장 빈번하게 나타나는 범주를 기준모델로 설정
    • 시계열(time-series) : 어떤 시점을 기준으로 이전 시간의 데이터가 기준모델로 설정

분류문제를 풀기전에 항상 먼저 타겟 범주가 어떤 비율을 가지고 있는지 확인해 보아야 한다.
ex. 1과 0의 비율이 9:1인 학습 데이터를 가지고 모델을 만들었을 때, 정확도가 90%가 나온다고 좋아하면 안된다. 모델이 무조건 1만 찍게 되면 정확도가 90%가 되므로 정확하게 예측한 경우라고 할 수 없다.

Q . 분류문제에서 사용하는 평가지표는?
A . 정확도(Accuracy)는 분류문제에서 사용하는 평가지표이다.

  • 회귀 평가지표를 분류에 사용하면 안된다. ( 그 반대도 동일 )
  • Accuracy=올바르게예측한수전체예측수Accuracy = \frac{올바르게 예측한 수} {전체 예측 수} = TP+TNP+N\frac{TP + TN} {P + N}

3. 로지스틱 회귀( Logistic Regression )

from sklearn.linear_model import LinearRegression

linear_model = LinearRegression()

# 숫자형 특성 만 사용
features = ['Pclass', 'Age', 'Fare']
X_train = train[features]
X_val = val[features]

# Age, Cabin의 결측치를 평균 값으로 채웁니다.
from sklearn.impute import SimpleImputer

# default, imputing 'mean' value
imputer = SimpleImputer() 
X_train_imputed = imputer.fit_transform(X_train)
X_val_imputed = imputer.transform(X_val)

# 학습
linear_model.fit(X_train_imputed, y_train)

# 예측
pred = linear_model.predict(X_val_imputed)

  • 분류에서 z를 기준으로 크면 1, 작으면 0으로 예측한다.

3.1 Logit transformation

Q . Odds란?
A . 오즈는 실패확률에 대한 성공확률의 비이다.

  • 로지스틱회귀의 계수는 비선형 함수 내에 있어서 직관적으로 해석하기가 어려워 오즈(Odds)를 사용해 해석한다.
  • 오즈(Odds)는 선형결합 형태로 변환 가능해 보다 쉽게 해석이 가능하다.
    • 예를들어, odds = 4이면 성공확률이 실패확률의 4배라는 뜻이다.
  • Odds=p1pOdds = \large \frac{p}{1-p} ( pp : 성공확률, 1p1 - p : 실패확률 )

  • 데이터 변환

    • 카테고리 데이터 처리 : OneHotEncoder
    • 결측치( missing value ) 처리 : SimpleImputer
    • 특성들의 척도를 맞추기 위해 표준정규분포로 표준화( 평균=0, 표준편차=1 ) : StandardScaler



👉 과정 한눈에 보기

profile
기록하지 않으면 기록되지 않는다.

0개의 댓글