로지스틱 회귀 모형에서 범주형 변수인 Y(종속변수)를 예측하는데 기존의 X(독립변수)의 중요도(=기여도)를 파악한다면 데이터 정보 기반의 의사 결정을 내리고 모델 성능을 향상시키는데 필요한 과정이다. 이 게시물에서는 가중치를 사용하여 로지스틱 회귀에서 독립변수의 중요도를 얻는 방법에 대해 작성하고자 한다.
1.로지스틱 회귀모형(logistic regression model)?
로지스틱 회귀 분석은 이항 분류에 사용되는 통계적 방법이다. 즉, 일반적으로 0과 1로 표시된 두 가지 결과 중 하나를 예측하려는 경우에 일반적으로 적용되며. 로지스틱 회귀 분석은 일반적인 선형 회귀 알고리즘이 아닌 분류 알고리즘이다.
로지스틱 회귀 분석의 주요 아이디어는 주어진 입력이 특정 클래스에 속할 확률을 모델링하는 것이다. 로지스틱 함수(=sigmoid 함수)를 사용하여 독립 변수의 선형조합을 0과 1 사이의 값으로 변환한다. 이 0 ~ 1 사이의 값을 종속변수의 예측 확률값으로 활용하게 된다.
2.변수선택(feature selection)의 중요성
변수 선택은 관련된 features set에서 머신러닝 모델이 예측하는데 유용한 변수를 선택하는 과정으로 모델의 성능과 직접적인 관련이 있다. (예를들어, 과적합을 줄인다던지 학습된 모델의 해석 가능성을 높인다던지)
로지스틱 회귀 분석에서 각 피쳐의 중요도는 해당 계수 값의 크기에 의해 결정이 된다. 추정된 계수 값이 클수록 해당 피쳐가 예측 결과(종속변수)에 더 큰 영향을 미친다는 것을 나타낸다. 그러나 계수 값만으로는 입력 변수의 범위와 규모에 영향을 받기 때문에 피쳐의 중요도에 대한 명확한 지표가 되기 어렵다.
한마디로 로지스틱회귀 분석에서 '계수값 = 변수 중요도' 라고 착각하기 쉬운데 '표준화 스케일링이 된 계수값 = 변수 중요도'가 정확하다고 생각 된다.
3.가중치를 활용한 변수 중요도
가중치를 사용하여 로지스틱 회귀모델의 계수에서 변수의 중요도를 얻을 수 있다. 가중치는 각 변수가 모형의 전반적인 예측 정확도에 기여하는 정도를 나타내는 척도이며, 계수 값의 크기와 입력 변수의 범위를 기반으로 계산된다.
적합된 회귀모델을 활용하여 다음 공식을 사용하면 각 변수의 가중치를 계산할 수 있다.
"가중치 = 계수 값(Coefficient) * (최대값 - 최소값) / 표준 편차"
여기서 계수 값은 각 피쳐와 연관된 계수 값이며, 각 피쳐에 대해 최대값, 최소값, 표준 편차가 계산된다.
가중치는 독립변수의 범위 및 규모를 고려하기때문에 변수 중요도에 정확한 측정값을 제공한다. 따라서, 가중치가 높은 특징은 모델의 예측 정확도에 더 큰 영향을 미침을 정확하게 알 수 있다.
4. Example
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target
# Fit a logistic regression model
model = LogisticRegression(random_state=42)
model.fit(X, y)
# Calculate the weights of each feature
weights = model.coef_[0] * (X.max(axis=0) - X.min(axis=0)) / X.std(axis=0)
# Sort the weights in descending order
sorted_idx = weights.argsort()[::-1]
for i in sorted_idx:
print(f"{iris.feature_names[i]}: {weights[i]}")
위 코드의 output:
petal length (cm): 1.262483544830328
petal width (cm): 0.7230885782062267
sepal length (cm): -0.2796096322188937
sepal width (cm): -0.31604731216504567
코드 결과를 보면 홍채 꽃의 종을 예측하는 데 가장 중요한 특징은 꽃잎 길이이며, 그 다음이 꽃잎 폭, 세팔 길이, 세팔 폭이라는 것을 알 수있다.
0.reference
https://forecastegy.com/posts/feature-importance-in-logistic-regression/
https://saturncloud.io/blog/how-to-get-feature-importance-in-logistic-regression-using-weights/
'Data Science > 머신러닝' 카테고리의 다른 글
Pyspark로 k-means clustering 구현하기. (0) | 2024.01.19 |
---|---|
엘라스틱 넷 패널티를 활용한 서포트 벡터 머신의 변수선택법 (0) | 2023.07.10 |
[PySpark] 신용카드 사기거래 탐지 모델링(3) - 기본모델링 (0) | 2023.06.27 |
[머신러닝] ROC 커브, PR 커브 모델 성능 평가시 무엇을 언제 쓸까? (0) | 2023.06.27 |
[PySpark] 5폴드 교차검증(5-fold crossvalidation) 과 모델선택 (0) | 2023.06.27 |