Machine Learning 분석 절차

박재한·2022년 4월 5일
0

Machine Learning

목록 보기
5/6

1. 데이터 수집

  • Kaggle, Google BigQuery, 기타 big data 공개된 곳으로부터 분석할 데이터를 가져온다.
  • Kaggle의 경우는 회원 가입하고 kaggle package를 설치한 다음 kaggle API key를 받아와야 한다.
  • Google BigQuery는 Google Cloud Platform 회원 가입해야 한다.

2. 데이터 전처리

2.1 DataFrame 훑어보기

  • df.head() : 모든 data의 첫 5 row를 보여준다. row의 갯수는 argument로 조절할 수 있다.
  • df.info() : 각 column별 이름 및 type정보를 보여준다.
  • df.describe() : 각 column별 평균, 표준편차, 최소, 최대값등 기본적인 통계 정보를 보여준다.

2.2 수치형 데이터 시각화로 보기

  • 주로 histogram, jointplot, pairplot등을 사용한다.
  • 기본적으로 pyplot을 많이 사용하나 최근에는 seaborn을 더 많이 사용한다.
  • sns.histplot() : 히스토그램을 보여준다.
  • sns.jointplot() : 2개의 수치형 변수들 간의 상관관계를 보여준다.
  • sns.pairplot() : 변수별 산점도를 모아서 보여준다.
  • hue argumenㅅ로 제 3의 인자의 분포도 함께 볼 수 있다.

2.3 범주형 데이터 시각화로 보기

  • 주로 box plot를 사용한다.
  • violinplot, swarmplot도 함께 사용한다.
  • X축은 범주형 데이터, Y축은 수치형 데이터로 놓고 비교해본다.
  • hue argument로 제3의 인자의 분포도 함께 볼 수 있다.

4. 모델 성능 분석

4.1 Confusion Matrix

분류(classigication) 문제에서 모델의 분류 예측 성능 평가할 때 많이 사용된다.
Confusion Matrix란?
Training 을 통한 Prediction 성능을 측정하기 위해 예측 value와 실제 value를 비교하기 위한 표

정확도(Accuracy)=옳게  분류된  데이터의  전체  데이터  =TP+TNTP+TN+FP+FN정밀도(Precision)=옳게  분류된  정상  데이터의  정상으로  예측된  데이터=TPTP+FP재현율(Recall)=옳게  분류된  정상  데이터의  실제  정상  데이터의  =TPTP+FN특이도(Specificity)=옳게  분류된  불량  데이터의  실제  불량  데이터의  =TNTN+FP\begin{aligned} 정확도(Accuracy)=&\cfrac{옳게\;분류된\;데이터의\;수}{전체\;데이터\;수}=\cfrac{TP+TN}{TP+TN+FP+FN}\\ 정밀도(Precision)=&\cfrac{옳게\;분류된\;정상\;데이터의\;수}{정상으로\;예측된\;데이터}=\cfrac{TP}{TP+FP}\\ 재현율(Recall)=&\cfrac{옳게\;분류된\;정상\;데이터의\;수}{실제\;정상\;데이터의\;수}=\cfrac{TP}{TP+FN}\\ 특이도(Specificity)=&\cfrac{옳게\;분류된\;불량\;데이터의\;수}{실제\;불량\;데이터의\;수}=\cfrac{TN}{TN+FP} \end{aligned}

여기서 정밀도(Precision)과 재현율(Recall)은 상호보완적이다.
(예를 들어 한달 30일 동안 맑은 날이 20일이었는데, 확실한 2일만 맑다고
예측을 하면 Precision의 FP는 0이라 Precision은 100%가 나오게 된다. 이러한 문제가 있어 실제로 맑은 20일 중에서 맑다고 예측한 날도 같이 고려해야 한다. 그래서 Recall을 함께 고려하면 실제 맑은 날 중에서 맑다고 옳게 예측한 날의 비율을 함께 고려하게 되어(이때는 10%) 제대로 평가할 수 있다.)
당연히 이 두 지표가 모두 높을 수록 좋은 모델이다.

F1-measure
앞에서 서로 상호 보완적이라고 한 정밀도(Precision)와 재현율(Recall)을 수식으로 표현하면 조화 평균을 구하면 된다.
즉 Precision이나 Recall 중 어느 하나라도 0에 가깝게 값이 낮게 나오면 F1-measure(F1 score)도 같이 낮게 나오게 하기 위해서 조화 평균을 사용한다. 만일 조화 평균을 사용하지 않고 일반 산술 평균을 사용하면 둘 중 하나라도 값이 높으면 전체 평균치가 높게 나올 것이다.
F1measure=2PrecisionRecallPrecision+RecallF1-measure=\cfrac{2\cdot Precision\cdot Recall}{Precision+Recall}

G-mean
negative 결과에 가중치를 두어, 즉 성능이 더 나쁜 쪽에 더 가중치를 두어 성능이 나쁜 경우도 예측 가능하도록 만든 지표가 있는데 이 지표가 𝐺−𝑚𝑒𝑎𝑛이다.
Gmean=RecallSpecificityG-mean=\sqrt{Recall\cdot Specificity}

4.2 ROC(Receiver Operation Characteristic) curve


ROC curve에서 TPR(True Positive Ratio, Recall)은 최대로 하고 FPR(False Positive Ration, 1-Specificity)은 최소로 하는게 가장 좋은 모델이기 때문에, 붉은 색 혹은 주황색 선의 아래 부분의 면적이 넓을 수록(최대값은 1) 좋은 모델로 평가 받는다.
따라서 모델 A보다 모델 B가 더 좋은 모델이다.
이 때의 면적을 AUC(Area Under Cover)라고 하고 0과 1사이의 값을 갖는다. 당연히 1에 가까울 수록 좋은 값이다.
같은 의미인데 다시 정리하면 ROC curve에서 TPR은 최대로 하고 FPR은 최소로 하는 지점이 최적화된 임계치의 위치인데, 그래프의 붉은 색 curve에서 별표 부분이 최적화된 값의 위치이다.

profile
바쁘게 부지런하게 논리적으로 살자!!!

0개의 댓글