상세 컨텐츠

본문 제목

[TIL]1128: 이진분류평가지표, resampling, 딥러닝연산, 딥러닝학습법

멋사 AISCOOL 7기 Python/TIL

by dundunee 2022. 11. 29. 20:39

본문

이진분류의 평가

질문. 정확도로 제대로 된 모델의 성능을 측정하기를 어려운 사례?

  • 데이터가 불균형한 경우
  • 금융(은행대출사기, 신용카드사기, 상장폐지종목여부), 제조업(양불여부), 헬스케어(암진단여부), IT관련(게임 어뷰저, 광고 어뷰저, 그 외 어뷰저) -> 대회에서 어뷰저 관련 내용을 찾을때는 Fraud등으로 검색하면 여러사례를 찾을 수 있다.
  • 이런 사례는 Accuracy로 측정하면 99.99 % 가 나온다면 제대로 측정하기 어렵다.

Confusion Matrix

  • 뒤에꺼는 예측을 긍/부정으로했냐, 앞에꺼는 그 예측이 맞았냐 틀리냐로 해석

1종오류의 사례

  • 1종오류는 통계상 실제로는 음성인데 양성으로 결과가 나오는 것을 말한다(TP)
  • 1종오류는 precision(정밀도)이라는 측정지표를 사용한다(TP / (TP + FP)) -->예측값기준
  • 스팸메일, 유무죄선고

2종오류의 사례

  • 통계상으로 실제로는 양성인데 음성으로 결과가 나오는 것을 말한다(FN)
  • recall(재현율, 민감도)이라는 측정지표를 사용한다(TP/(TP + FN)) --> 실제값기준
  • 암인데 암이 아니라고 예측한 경우, 지진이 났는데 대피방송을 하지 않는 경우,
  • 자율주행떄 앞에 사람이 있는데 사람이라고 인식하지 못하는 경우

F-1Score

  • 정밀도와 재현율의 조화평균
  • 정밀도와 재현율은 trade-off관계이다. 둘 중 하나만 사용하면 예측성능평가지표로 불완전하다
  • F1-Score는 정밀도와 재현율 둘 다 높아야 높은 점수를 가질 수 있으며, 둘 중 하나로 치우칠 경우 점수가 상대적으로 낮아진다.

ROC Curve

  • 예측값이 확률인 분류 문제에 사용
  • 1에 가까울 수록 좋다

AUC

  • ROC 커브 아래의 곡면의 넓이를 의미합니다.
  • 1에 가까운 점수가 나올수록 잘 예측한것이라고 볼 수 있음
  • 기존에는 예측을 할 때 주로 predict 를 사용했지만 predict_proba 를 하게 되면 0,1 등의 클래스 값이 아닌 확률값으로 반환한다.
  • 임계값(Threshold)을 직접 정해서 True, False를 결정하게 되는데 보통 0.5 로 하기도 하고 0.3, 0.7 등으로 정하기도 한다.
  • TPR: 실제 양성 샘플중에서 양성으로 예측된 것의 비율, 1에 가까울 수록 좋음
  • FPR: 실제 음성 샘플 중에 양성으로 잘못 예측된 것의 비율, 0에 가까울 수록 좋음 +공돌이의 수학정리노트 참고해보자+

실습0804

predict_proba

  • 보통 멀티클래스분류일 때 사용한다.
  • 각 클래스마다의 확률을 예측한다
  • 0, 1일 때 각각의 확률을 의미한다
  • [0.5, 0.5], [0.3, 0.7], [0.7, 0.3]이렇게 나오기도 한다
  • 클래스가 여러개일 때 이런 확률을 사용해서 예측하기도한다.
  • np.argmax: 값이 가장 큰 인덱스를 반환한다.
  • np.argmin: 값이 가장 작은 인덱스를 반환한다.

신용카드 사기를 측정하는 지표

  • recall이 더 적절하다. 실제로는 양성인데 음성으로 예측한 경우
  • 즉 음성이 사기 아니고, 양성이 사기라고 판단할 수 있으므로
  • 주택담보대출에도 비슷하게 적용할 수 있다.

precision, recall등의 지표에 대해

  • 이런 지표들은 실제로 비즈니스에서 운영할 때 어느쪽으로 평가를 해야 유리한지를 판단이 필요

SMOTE

  • 정답 클래스가 불균형데이터일경우 resampling으로 클래스를 비슷하게 만들어줘서 모델 성능을 높임

Resampling

  • 현실 속 데이터는 불균형한 데이터가 대부분이다.

under-sampling

  • 더 값이 많은 쪽에서 일부만 샘플링하여 비율을 맞춰주는 방법
  • 신용카드 데이터에서 X데이터 개수(즉 class가0)를 class가 1인 개수로 맞추는 것

oversampling

  • SMOTE
  • 합성 소수자 오버 샘플링 기법
  • k-근접 이웃 값을 이용해 합성된 새로운 값을 추가
  • 내부에서 k-근접이웃 알고리즘을 사용하고있음
  • 값이 더 커진다.

딥러닝기초

  • 신경망(neural network)을 쓰고 있는 알고리즘
  • 즉 딥러닝(deep learning)이란 네트워크를 깊게 쌓는 것(neural network), 층을 깊게 쌓아 학습한다.
  • 인간 개입의 여부로 머신러닝과 구분함
  • 비정형데이터를 다룰 때 더 유리함
  • 알아서 데이터 전처리 및 피처를 추출하는 기법이 알고리즘 내에 내장되어 있음
  • 1950년대에 등장하였지만, 데이터 및 하드웨어의 한계로 연구가 활발지 진행되지 않음

인공신경망

초기 인공신경망: 퍼셉트론

  • 사람의 신경망을 모방함
  • 특정 입계값에 따라 동작을 하는 구조이다
  • 하지만 과적합문제의 위험이 있음,
  • XOR연산을 가능하게함(단층으로되어있는 것을 다층으로 바꿈으로써 해결함/질문하심!)
  • 학습시간이 느리다는 것도 그래픽카드의 발전으로 개선됨
  • 입력 > Activation Function > 출력

딥러닝연산

순전파(Foward Propagation)

  • 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정
  • Input을 받고 다수의 hidden layer에서 활성화함수 적용을 통하여 output을 출력하는 과정

역전파(Back Propagation)

  • 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트
  • 역전파를 통해 가중치비율을 조정하며 다시 순전파로 진행하며 오차 감소를확인함
  • 오차를 최소화하기 위해 미분기법을 이용하게됨
  • 순전파 과정에서 출력한 결과와 정답값의 오차를 측정하여 그 오차의 값을 최소화하기 위한 과정
  • 순전파 때 적용한 활성화함수의 결과를 검산하여 오차를 줄여주는 과정이기때문에 따로 활성화함수를 사용하지 않음
  • 이전 층의 오차를 보완해나가면서 진행한다는 점이 부스팅과 유사함

오차역전접

  • 동일 입력층에 대해 원하는 값이 출력되도록 각각의 가중치를 조정하는 방법
  • 미분을 진행하게된다. 손실함수를 최소화하는 기울기값을 구하기위해(즉 기울기가 0이 되는)

활성화함수

  • 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수
  • 시그모이드: 이진분류의 출력값으로 주로 사용된다
  • **하이퍼볼릭탄젠트함수(tanh)**: 시그모이드함수와 똑같은 형태이다.
  • 일정 범위를 벗어나 기울기가 0이 되면 기울기 소실 문제가 발생함 = Gradient Vanishing >ReLU로 문제 해결
  • 반대로 기울기가 발산하기도함 = Gradient Exploding
  • Relu(렐루): 은닉층의 활성화함수로 사용
  • Leaky Relue: Dying Relu현상을 해결하기 위해, 아주 미세하게 기울기를 조정함

딥러닝학습법

  • 어떻게 기울기의 최소점을 찾아나갈것이냐
  • 오차를 최소화하는 가중치와 편향의 조합 찾기
  • 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색
  • 알맞은 손실함수의 선정은 매우 중요
  • 이를 위해 고안된 방법이 경사하강법이며, 옵지마이저로 경사하강법의 원리를 이용함

손실함수

  • 오차의 차이를 수치화해주는 함수
  • 오차가 최소화되는 즉 0에 가까운 기울기일수록 오차가 작은 지점이라고 해석할 수 있음
  • 분류의 손실함수로는 멀티클래스 분류일때는 softmax, 이진분류일때는 sigmoid 손실함수를 사용함
  • 손실함수를 사용해 cross

관련글 더보기