머신러닝의 종류 (2) - Logistic Regression / 분류 문제의 인공지능 성능평가 방법 - 컨퓨전 매트릭스 (Confusion matrix)
Supervised 의 Logistic regression 에 대해 알아보자.
Linear regression 과 같이 데이터를 예측하는 것이 아닌 데이터를 분류 (Classification) 을 할 때 사용한다.
예측을 할 신규 데이터가 입력되었을 때, 어느 쪽 데이터에 더 가까운지 판단하는 인공지능이다.
위 이미지를 간단하게 말하면 0과 1만을 데이터로 가지는 데이터셋에서 시각화를 시켰을 때 0과 1만으로
데이터가 나오니 기존의 Linear regression 의 식을 응용해 만든게 Logistic Regression 인 것이다.
클래스가 두 개인 경우에 사용하게 된다!
예측된 데이터와 정답 데이터의 형태가 이렇게 0과 1만으로 나올 때 사용하게 된다.
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
LogisticRegression() 함수를 불러오는 import 문은 다음과 같이 작성한다.'
분류문제에서 고민해야 할 부분은 데이터를 검증할 때에 발생한다. 0과 1밖에 없어
0이라 예측했을 때 0으로 맞춘 경우,
0이라 예측했을 때 1로 틀린 경우,
1이라 예측했을 때 0으로 틀린 경우,
1이라 예측했을 때 1로 맞춘 경우
4가지의 경우의 수가 있으므로 MSE 와 같은 더하고 제곱하는 수식이 아닌
다른 집계방식이 필요한 것을 알 수 있다.
이 때 사용하게 되는게 Confusion Matrix 라고 한다.
위 이미지처럼 0과 1로 나올 수 있는 경우의 수를 표처럼 도식화 시킨 것을
Confusion Matrix 라고 한다.
이 때 모두 맞춘 경우 뿐만 아니라 필요에 따라 부분부분 별로 계산할 수 있어 활용도가 아주 높다.
# 필요에 따라 행과 컬럼을 변경하면 된다. 전체 건수가 아닌 특성 상황에서 적중율이 더 많이 필요하다.
# 정확도, 정밀도, 적중율 의 차이를 알아두자.
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test , y_pred)
from sklearn.metrics import accuracy_score
다음과 같은 import 문장과 confusion_matrix 함수로 만들 수 있다.
아래는 결과를 정확도, 적중률, 정밀도를 한 번에 볼 수 있는 함수이다.
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
# 씨본의 히트맵으로도 알기 쉽게 시각화 시킬 수 있다.
import seaborn as sb
sb.heatmap(data= cm, cmap= "RdPu", annot= True)
plt.show()