멋쟁이 사자처럼 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
- 주택담보 대출에도 비슷하게 적용할 수 있다.
- 게임에서의 어뷰저 아닌데 어뷰저로 처리하는 경우
- 어뷰저를 발견하지 못한 피해가 더 클 수도 있다. 어느쪽이 더 피해가 클지 생각
불균형 데이터
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 : 차원의 수 확인