머신러닝/머신러닝 라이브러리

머신러닝의 종류 (2) - Logistic Regression / 분류 문제의 인공지능 성능평가 방법 - 컨퓨전 매트릭스 (Confusion matrix)

Cong_S 2022. 5. 6. 17:04

 Supervised 의 Logistic regression 에 대해 알아보자.

 

Linear regression 과 같이 데이터를 예측하는 것이 아닌 데이터를 분류 (Classification) 을 할 때 사용한다.

예측을 할 신규 데이터가 입력되었을 때, 어느 쪽 데이터에 더 가까운지 판단하는 인공지능이다.

좌) Logistic regression, 우) Linear regression

 

 

위 이미지를 간단하게 말하면 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()