이름은 회귀지만 분류문제를 푸는 지도학습 모델
샘플이 특정한 범주에 속하는지 추정하는데 주로 사용
분류문제는 회귀문제와 다른 기준으로 모델을 설정
회귀문제에서는 타겟변수의 평균값이 기준모델
분류문제에서는 타겟변수에서 가장 빈번하게 나타나는 범주를 기준모델, 이렇게 하지 않을 경우 모델의 성능에서 착각할 수 있음
1) 클래스의 1과 0 비율이 9:1인 학습데이터로 모델을 만들 경우 예측정확도가 90%이다.
2) 하지만 모델이 무조건 클래스 1만 찍도록 만들면 정확도 90%를 달성할 수 있다.
3) 따라서 이런 경우에는 클래스 1에 대한 정확도가 90%인 기준모델을 설정하고 더 좋은 성능을 가지는 모델을 만들어야한다.
시계열 데이터는 어떤 시점을 기준으로 이전 시간의 데이터가 기준모델
분류문제를 풀기전에 타겟 범주가 어떤 비율을 가지는지 확인해야한다.
value_counts()를 통해서 데이터의 범주의 비율을 확인한다.
mode()를 통해 majority한 클래스를 얻는다.
기준모델로 예측하기 위해 타겟 샘플 수 만큼 클래스가 담긴 리스트를 만든다.
분류에서는 회귀와 다른 평가지표를 사용한다. 절대로 회귀평가지표를 분류에서 사용하면 안된다. 정확도는 분류문제에서만 사용하는 평가지표 accuracy_score로 확인 가능하다.
difference 함수를 통해 트레이닝 데이터와 테스트 데이터의 차이나는 특성 확인 가능
캐글은 훈련데이터와 테스트데이터를 분리하여 제공
이 때 테스트 데이터에서는 타겟정보를 제외해놓았다.
검증을 통해서 성능을 최대화 시킨 후에 단 한번의 테스트만이 가능하도록 설계되어진 것이다.
훈련/검증/테스트로 나누는 것은 모델학습에서 매우 중요
훈련데이터는 모델을 fit하는데 사용
검증데이터는 예측 모델을 선택하기 위해서 예측의 오류를 측정할 때 사용
테스트데이터는 일반화 오류를 평가하기 위해 선택된 모델에 한하여 마지막 한번 사용
따라서 검증데이터보다 테스트데이터의 성능이 떨어진다.
데이터가 충분한 경우에는 훈련/검증/테스트로 나누어야하지만, 데이터가 부족한 경우에는 k-fold와 같은 다른 방법을 이용해야한다.
LogisticRegression을 통해서 만들 수 있다.
선형회귀 모델과 학습과정이 동일하다.
score를 통해서 분류 정확도를 리턴할 수 있다.
기준모델보다 정확도가 높을 시 학습이 이루어졌다고 볼 수 있다.
predict 를 통해서 어떤 값으로 예측했는지 볼 수 있다.
predict_proba를 통해 클래스에 속할 확률값을 확인할 수 있다.
coef_로 회귀계수를 볼 수 있다. 값의 방향과 크기는 회귀모델과 같이 이해하면 된다.
카테고리 데이터는 OneHotEncoder, 결측치는 simpleImputer, 특성들의 척도를 맞추기 위해 표준정규분포로 표준화하는 StandardScaler로 처리한다.
사용될 필요가 없는 데이터는 제외한다.
사이킷런의 onehotencoder보다 category_encoder의 것을 이용하도록 하자
원핫인코딩의 use_cat_names = True의 의미 : 각 범주명을 특성에 사용한다.
fit_transform
1) fit과 transform을 동시에 수행
2) 검증set에서 이를 수행할 시 범주가 부족할 경우 문제가 생길 수 있다.
barh그래프로 특성의 계수 시각화 가능
Logistic Regression 참고자료
1) https://towardsdatascience.com/5-reasons-logistic-regression-should-be-the-first-thing-you-learn-when-become-a-data-scientist-fcaae46605c4
2) https://youtu.be/vN5cNN2-HWE
3) https://youtu.be/BfKanl1aSG0
4) https://en.wikipedia.org/wiki/Logistic_regression#Probability_of_passing_an_exam_versus_hours_of_study
Cross Validation 참고자료
1) https://end-to-end-machine-learning.teachable.com/blog/146320/training-validation-testing-data-sets
2) https://r4ds.had.co.nz/model-intro.html#hypothesis-generation-vs.hypothesis-confirmation
3) https://www.fast.ai/2017/11/13/validation-sets/
4) https://sebastianraschka.com/blog/2018/model-evaluation-selection-part4.html
5) https://twitter.com/koehrsen_will/status/1088863527778111488