[AI스쿨 7기, 11주차] 정확도, F1 Score, 임계값, ROC, AUC, 스니펫, predict_proba, argmax, sampling, SMOTE, XOR, 퍼셉트론, 순전파, 역전파, 활성화함수, Sigmod, tanh, 손실함수, Softmax, Sigmoid

hyemin·2022년 11월 28일

멋쟁이사자처럼

목록 보기
39/51

멋쟁이 사자처럼 AI스쿨 7기, 박조은 강사님 강의

✅14번 강의 파일

Q. 정확도로 제대로 된 모델의 성능을 측정하기 어려운 사례는 어떤 것이 있을까?
불균형 데이터 : 불량품 검출, 스팸메일 분류, 희귀병 검사 결과
금융 : 은행 대출 사기, 신용카드 사기, 상장폐지종목 여부
제조업 : 양불(양품, 불량품) 여부
헬스케어 : 희귀질병(암 진단여부)
IT관련 : 게임 어뷰저, 광고 어뷰저, 그외 어뷰저

Q. 왜 이 그림으로 혼동행렬을 이해하는 것을 추천할까?
사이킷런과 기준이 같다.

Q. 1종 오류의 사례, 사용하는 측정 지표
중고차 성능 판별, 스팸메일, 유무죄 선고 / precision
Q. 2종 오류의 사례, 사용하는 측정 지표
암 환자 진단, 지진 또는 화재가 아니라고 예측, 자율주행 사람 인식 실패

F1 Score

  • 정밀도와 재현율의 조화 평균
  • 정밀도와 재현율은 trade-off 관계
  • 참으로 예측하는 수를 줄이면 정밀도가 올라가고, 참으로 예측하는 수를 높이면 재현율이 올라간다.
  • 정밀도, 재현율 둘 다 높아야 높은 점수를 갖는다.

Threshold(==임계값), ROC, AUC

  • ROC는 perfect classifier(1)에 가까워질수록 잘 예측한것
  • AUC(Area under cover)
  • 기존에는 예측을 할 때 주로 predict를 사용했지만, predict_proba를 하게 되면 0, 1 등의 클래스 값이 아닌 확률 값으로 반환
  • 임계값을 직접 정해서 True, False를 결정하는데, 보통 0.5 / 0.3, 0.7 등으로 정하기도 한다.
  • 💯🔥📌https://angeloyeo.github.io/2020/08/05/ROC.html 공돌이의 수학노트 : 정리가 잘 되어 있어서 추천💯🔥📌
  • TPR : 실제 양성 샘플 중 양성으로 예측된 비율
  • FPR : 실제 음성 샘플 중 양성으로 잘못 예측된 비율

✅ 0804 실습 파일

📌코드스니펫 > mounting Google Drive in you VM > 삽입 > foo.txt 경로에 생성되었는지 확인

Q. countplot 으로 보면 Class를 어떻게 해석할 수 있을까?
값이 엄청 불균형하지만, 1이라는 사기를 겪은 사람들 본인에게는 치명적이다.

y_train.value_counts(1), y_train.value_counts(1) 로 비율이 잘 나뉘어졌는지 확인
(1)은 normalize=True 설정

predict_proba

  • class 가 여러개일 때, predict_proba 를 이용하여 확률 값을 예측한다.
  • 각 클래스 마다의 확률을 예측한다.
  • 0, 1 일 때 각각의 확률을 의미한다.
  • [0.5, 0.5][0.3, 0.7] 이렇게 나오기도 한다.
  • 클래스가 여러개 일 때 이런 확률을 사용해서 예측하기도 한다.
  • np.unique(y_pred_proba) : 확률값이 들어가 있어서 소수점 값으로 나온다. int0과 int1이 아닌 float으로 예측
  • print(y_pred_proba.shape) 하면 (56962, 2)로 나타난다.
  • print(y_pred.shape) 하면 (56962, )로 나타난다.

argmax

  • np.argmax 값이 가장 큰 인덱스를 반환한다.
  • np.argmin

confusion matrix

crosstab으로 구한것이 confusion matrix
새로 추가된 기능 : https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ConfusionMatrixDisplay.html

Q. 신용카드 사기에서는 precision, recall 중에 어떤 측정 지표를 사용하는게 적절할까?

  • recall
  • 주택담보 대출에도 비슷하게 적용할 수 있다.
  • 게임에서의 어뷰저 아닌데 어뷰저로 처리하는 경우
  • 어뷰저를 발견하지 못한 피해가 더 클 수도 있다. 어느쪽이 더 피해가 클지 생각

불균형 데이터

  • under-sampling
  • over-sampling : https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html
  • k_neighbors=5 : 이웃의 중심이 되는 값을 5개 만들겠다.
  • SMOTE 를 사용한 오버샘플링 데이터로 모델을 만들어 예측한 결과를 비교
  • 샘플링을 사용하지 않고 데이터를 나눠 학습했을 때와 비교해서 f1_score, precision, recall 값이 다 높게 나왔다.
  • 클래스가 불균형하면 학습을 제대로 하기 어렵기 때문에 오버샘플링이나 언더샘플링으로 정답 클래스를 비슷하게 만들어주면 나은 성능을 낸다.

precision 예측값 기준 -> 1종 오류
recall 실제값 기준 -> 2종 오류


✅ 15번 강의 파일(딥러닝)

머신러닝과 딥러닝

  • 사람의 개입 여부
  • 딥러닝은 비정형 데이터에 유리하다. CNN, RNN할 때 데이터를 통째로 넣으면 알아서 학습한다.
  • 딥러닝은 1950년 이전부터 존재했다.
  • Q. 1950년 이전부터 신경망 연구가 되었는데, 활성화 되지 못했던 이유?
  • AI 겨울 하드웨어의 한계, 데이터 부족
  • XOR problem (1970)

퍼셉트론

  • 입력, 출력, activation function
  • 단층퍼셉트론의 한계 : 하나의 선으로 0과 1 분리 불가능 : XOR
  • 다층퍼센트론

딥러닝의 연산

  • 순전파 : 입력층에서 출력층 방향으로 연산
  • 역전파(Back Propagation) : 순전파와 반대로, 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트

활성화 함수(Activation function)

  • Q. 시그모이드를 보고 떠오르는 것은? 로지스틱 회귀
  • tanh(하이퍼볼릭탄젠트)
  • Q. tanh와 비슷한 그래프? 시그모이드 함수
  • Sigmoid, tanh 특징
    • 시그모이드는 이진분류의 출력값으로 많이 사용한다.
    • Gradient Vanishing : 기울기 소실 == 일정 범위를 벗어났을 때 기울기가 0
    • 입력층으로 갈수록 기울기가 점차 작아지는 현상
    • 시그모이드 : [0,1]
    • tanh : [-1,1]
  • ReLU로 기울기 소실 해결
  • Leaky ReLU : Dying Relu 해결

손실 함수

  • 예측값과 실제값의 오차
  • 손실함수의 함수값이 최소화 되도록 하는 가중치와 편향을 찾는 것이 목표
  • 경사하강법이 옵티마이저의 대표적인 방법이기도 하다.
  • 다항식일 때는 Softmax, 이진분류일 때는 Sigmoid
  • Q. cross-entropy 공식을 어디에서 봤을까? 의사결정나무

✅ 텐서플로 튜토리얼

손글씨 분류하기 : 0~9까지의 숫자를 분류
이미지 데이터 분류
x값에 대문자를 사용하지 않는다.
Q. 255로 데이터를 나눈 이유? 0~1로 맞춰주기 위해서.
.ndim : 차원의 수 확인


profile
아직 고쳐나가는 중.

0개의 댓글