머신러닝/머신러닝: 입문 개념
로지스틱 회귀분석
qordnswnd123
2024. 11. 28. 21:03
1. 로지스틱 회귀분석
로지스틱 회귀분석은 20세기 초에 발전한 통계방법입니다.
이 모델은 로지스틱 함수에서 이진 분류 문제를 풀기위해 발전되었습니다.
이 모델은 주로 예/아니오, 성공/실패와 같이 두 가지 범주로 결과가 나뉘는 경우에 사용됩니다.
- 확률 추정: 로지스틱 회귀는 주어진 데이터가 특정 클래스에 속할 확률을 추정합니다. 이 확률은 0과 1 사이의 값으로, 예측된 확률이 특정 임계값(보통 0.5) 이상이면 하나의 클래스로, 이하면 다른 클래스로 분류됩니다.
- 시그모이드 함수: 로지스틱 회귀는 시그모이드 함수(또는 로지스틱 함수)를 사용하여 입력 데이터의 선형 조합을 0과 1 사이의 확률 값으로 변환합니다. 시그모이드 함수는 S자 형태의 곡선을 그리며, 이 함수는 선형 조합의 결과를 확률로 매핑합니다.
- 최대 우도 추정: 로지스틱 회귀 모델은 최대 우도 추정(Maximum Likelihood Estimation, MLE) 방법을 사용하여 모델 파라미터를 추정합니다. 이는 주어진 데이터에 대해 관측된 결과의 확률을 최대화하는 파라미터 값을 찾는 과정입니다.
- 이진 분류: 로지스틱 회귀는 기본적으로 이진 분류를 위해 설계되었지만, 원-대-다(One-vs-Rest) 방식이나 원-대-원(One-vs-One) 방식을 통해 다중 클래스 분류 문제에도 적용될 수 있습니다.
로지스틱 회귀분석은 주로 이진 분류(Binary Classification) 문제를 해결하기 위해 사용됩니다.
이는 결과가 두 가지 범주(예: 예/아니오, 성공/실패) 중 하나로 나누어지는 경우에 적합합니다.
주로 데이터 수가 많지 않은 경우 간단한 모델이 필요할 때 사용합니다.
또한, 분석결과에 대한 설명과 해석이 중요할 때 사용하면 좋습니다.
2. 로지스틱 회귀분석 이론
3. 로지스틱 회귀 모델 코드
model = LogisticRegression(penalty='l2', # L2 정규화 사용
C=0.5, # 정규화 강도 (낮을수록 강한 정규화)
fit_intercept=True, # 절편을 포함
random_state=42, # 결과 재현을 위한 난수 시드
solver='lbfgs', # 최적화를 위한 알고리즘
max_iter=100, # 최대 반복 횟수
multi_class='auto', # 다중 클래스 처리 방식
verbose=0, # 로그 출력 정도 (0은 출력하지 않음)
n_jobs=1 # 사용할 CPU 코어 수 (1은 하나의 코어 사용)
)
4. 로지스틱 회귀 모델 만드는 코드
# 필요한 라이브러리 불러오기
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import pandas as pd
# 데이터셋 생성
X, y = make_classification(n_samples=100, n_features=2,
n_informative=2, n_redundant=0,
random_state=0)
data = pd.DataFrame(X, columns=['Feature1', 'Feature2'])
data['Target'] = y
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(data[['Feature1', 'Feature2']], data['Target'], test_size=0.3, random_state=0)
# 모델 구축 및 훈련
model = LogisticRegression()
model.fit(X_train, y_train)
# 성능 평가
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
# 모델 해석
print("Coefficients:", model.coef_)
print("Intercept:", model.intercept_)
5. 로지스틱 회귀분석 내용 정리
로지스틱 회귀분석은 주로 이진 분류(Binary Classification) 문제를 해결하기 위해 사용됩니다.
이는 결과가 두 가지 범주(예: 예/아니오, 성공/실패) 중 하나로 나누어지는 경우에 적합합니다.
주로 데이터 수가 많지 않은 경우 간단한 모델이 필요할 때 사용합니다.
또한, 분석결과에 대한 설명과 해석이 중요할 때 사용하면 좋습니다.
※ 장점
- 해석 용이성: 로지스틱 회귀 모델은 결과를 해석하기 쉽습니다. 각 특성의 가중치를 분석하여 어떤 특성이 결과에 더 큰 영향을 미치는지 이해할 수 있습니다.
- 확률 추정: 결과의 확률을 제공하여, 단순한 분류뿐만 아니라 결과의 불확실성을 평가할 수 있습니다.
- 유연성: 다른 회귀 모델과 마찬가지로 다양한 유형의 데이터에 적용할 수 있으며, 커널 방법 등을 사용해 비선형 관계를 모델링할 수도 있습니다.
※ 한계점
- 비선형 관계의 제한적 모델링: 로지스틱 회귀는 기본적으로 선형 관계를 가정합니다. 복잡한 비선형 관계를 모델링하기 위해서는 추가적인 기법이 필요합니다.
- 특성 선택의 중요성: 중요하지 않거나 상관관계가 높은 특성이 포함되어 있으면 모델의 성능이 저하될 수 있습니다.
- 과적합의 위험성: 특성의 수가 많거나 모델이 복잡할 경우 과적합(Overfitting)이 발생할 수 있으며, 이를 피하기 위해 적절한 규제가 필요합니다.