[ComputerSystem] 데이터 분석&CNN
데이터분석&CNN
✅ Handling Imbalanced Data
- 세상에 50:50인 경우는 굉장히 드물다.
- 20:80 정도는 불균형이라고 하지도 않음
- 한자리수로 가면 불균형이라고 함
- 이런 경우가 실세계에서 많음
- 성능평가 : AUC로 판별
- 오버샘플링 : 마이너 클래스를 계속 복제하여 사용 -> 오버피팅 가능성이 높아짐
- 기계가 그 값들을 거의 외우다시피 함.
- 언더샘플링 : 메이저의 일부만 사용. 데이터가 너무 아까움.
- 오버샘플링 쓸 바에야 스모트를 쓰기
- 병원에서 진짜 쓰려고 해 -> 위염에서 위암으로 발전(2%) -> 모델을 잘 만들기 위해 20-30% 갖다 쓰면 비판을 받을 수 있음
- 제일 좋은 방법은 2:98을 유지하면서 모델을 뽑는거야
- 요즘 대안은 스택킹 앙상블을 사용함 -> 여러 알고리즘을 섞어서 사용
- 4명의 의사한테 가서 물어본 것이랑 똑같은 의미
- 트레이닝 데이터 : 가중치 옵션이 있음 -> 마이너클래스에 가중치를 좀 더 두기
- 최종 과제를 딥러닝을 적용해서 다시 제출할 때는 필요한 것들 잘 사용해서 가장 좋은 모델을 뽑아내보기
✅ 전자의무기록
- 정형데이터, 텍스트, 이미지 데이터, 동영상 데이터, 시계열 데이터, 오디오 -> 모든 종류의 데이터를 볼 수 있음
- CNN은 이미지 처리
- 타임시리즈 -> 정형데이터 -> 이미지 : CNN에 넣음
- CNN은 성능이 좋고 전이학습에 용이함
✅ 학습
- CNN에서 보면 성능이 98% 이상 즉, 인간만큼 좋음
- 다른 형태의 데이터도 이미지로 변환해서 CNN에 넣고 있음
- CNN 덕분에 딥러닝이 관심을 받게된 것.
- AlexNet : 오류율을 10% 떨어뜨림
- 사람의 시신경이 어떻게 동작? 수용체
- 해당 시신경이 활성화되는 것을 찾음
- 2차 평면 그대로 입력을 받자 : CNN
- 입력 * 가중치
- convolutional + pooling
- 이진분류 -> 출력함수 정해서 시그모이드로 값을 찍어주거나
- 4진분류 -> 소프트맥스
- 플래튼(fully-connected layer) : 펼치는 것
- CNN 핵심 연산 : convolution + pooling
- 필터는 진할수록 큰 값
- convolutional layer -> filter, 이미지로부터 다양한 feature를 추출하는 데 의미가 있음.
- maxpooling : 큰 값만 살리고 작은 건 없애 -> 흑백 대조가 진하게 나옴
- 히든레이어 한층에서 filter를 몇개 쓸지 정의해야 함
- 뒤로 갈수록 개념이 생성됨. 앞파트는 기계에게 가까운 feature
- bias가 자동생성됨
- 자꾸 쌓을 때마다 줄어듦??? 방지하기 위해 패딩 -> 0으로 값을 채움
- 너무 촘촘히 다 계산하면 오버피팅의 위험 -> 따라서 stride
- 한번에 3장 나오는 건 -> 컬러 rgb
- 흑백 따로 model.fit / 컬러 따로 model.fit -> 나중에 합치던가 ..
- affine 연산 -> convolution 연산으로 대체된 것
✅ 전이 학습
- 만들어놓은 모델의 common한 feature를 활용해서 학습
- 병원은 전이학습이 잘 안돼. distribution이 달라서
- 이미지는 feature의 distribution이란 게 없어
- 앞에서 데이터는 똑같이 쓰고 뒤에서 fine tuning 하면 됨
- fully-connected에서 내 모델 집어넣거나 아님 조금 앞에서 집어넣기
- 이미지, 텍스트에서 강력
- 메타러닝. 원샷러닝. 퓨샷러닝. 투샷러닝