[파이썬][머신러닝] 데이터 분석과 머신러닝 - Logistic Regression
Logistic Regression
머신 러닝에서 정확한 예측을 생성하는 데 자주 사용되는 통계 모델이다. 사건이 발생할 확률을 결정하는데 사용되고 특성 간의 관계를 보여주고 특정 결과의 확률을 계산하는 방식이다.
또한 대상 변수가 이진이기때문에 값이 0또는 1로 나오게 된다.
특징
- 이진 로지스틱 회귀에서는 응답 변수가 이진이어야 된다.
- 대체로 대규모 크기의 샘플을 하는 경우 많이 사용된다.
- 유명한 것은 심장병 질환에 걸릴 확률 예측
Ridge Regression 장단점
-
장점
1. 매우 효율적이고 엄청난 양의 리소스를 필요로 하지 않기 때문에 다양하게 사용된다. 2. 해석이 쉽고 정규화또한 쉽기때문에 제공하는 결과도 잘 보정되어 있는 예측 확률이다. 3. 관련이 없는 속성 또는 상관 관계가 있는 속성이 생략될 때 더 효율적이고 특히 Feature Engineering에서 성능의 효율성에 중요한 역할을 한다. 4. 구현이 쉽고 복잡한 알고리즘 성능을 측정하는 데 도움이 된다.
-
단점
1. 비선형 문제를 해결할 때 사용이 불가능하다. 2. 데이터의 표시에 의존성이 높고, 그로인해 과적합이 될 확률이 높다.
데이터 나누기
‘너가 찾아야할 답은 이거야’
- 머신러닝 학습을 시킬 때 평가를 위해서 데이터를 적절하게 분리하는 작업이 필요하다.
- 훈련데이터
- 모델을 학습하는데 사용된다.
- 이 데이터를 기반으로 모델이 예측하는 것이 달라지게 된다.
- 테스트데이터
- 훈련이나 검증과정에서 사용되지 않으며, 일반화 오류를 평가하기 위해서 선택된 모델에 한해서 한번 사용된다.
- 검증데이터
- 모델을 선택하기 위해서 오류를 측정할 때 사용된다.
- 보통 훈련과 테스트 데이터를 나누는 경우 4:1 비율이 많이 사용된다.
- 이때 데이터의 비율이 훈련과 테스트가 동일해야한다. 예를 들어 양성, 음성을 나누는 문제에서 훈련이나 테스트에 양성또는 음성 비율이 과하게 이상할 경우 내가 원하는 모델이 안나올 수도 있다.
예시
- 흔한 간질환 데이터로 보도록 하자.
- 보통 학습전에 이런식으로 나누게 된다. 여기서
test_size=0.2
의 비율이 위에서 언급한 80% 20% 4:1 비율이다.
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
x = cancer.data
y = cancer.target
# 데이터 나누기
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, stratify=y, test_size=0.2, random_state=42)
훈련 데이터
모델에게 가리키기
우리가 무언가를 보고 배우듯, 모델에게도 보고 배울 무언가가 필요하다. 그게 바로 훈련 데이터이다.
테스트 데이터
모델을 만들 때 없어서는 안되는 데이터이다. '최종 모델에 대한 바이어스가 없는 평가를 제공하는 것'이라고도 표현한다.
위에서도 언급했듯이 딱 1번만 사용되기 떄문에, 훈련 데이터셋과 검증 데이터셋 두 가지를 모두 사용한 경우 흔히 최종 학습이 끝난 모델이라고 한다.
- Kaggle 대회에서는 검증셋이 초기에 훈련셋과 주어지는데, 경쟁에서 승리하기 위해서는 시험 데이터셋의 성능을 바탕으로 정해진다.
- 이때 많이들 검증 셋을 테스트 셋으로 사용하는데, 이것은 좋지 않은 경우가 많다고 한다.
검증 데이터의 중요성
검증 데이터는 모델 평가를 위해 사용되지만, 매 학습마다 자주 수행하는 평가를 위한 것이다.
특히 모델의 성능을 개선하는 과정에서 하이퍼파라미터를 미세조정하기 위해 사용된다. 별거 아닌것같아 검증을 넘길 경우 모델에 큰 영향을 주지는 않지만, 간접적으로 성능 향상의 기회를 간파하게 되는 것이다.