• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

실습 동영상 관련 질문

22.12.07 15:52 작성 조회수 232

0

#Xception 모델 학습, 성능평가 및 예측 후 결과 분석하기

 

안녕하세요 선생님

선생님의 코딩을 토대로 실습연습을 하고 있는데 질문이 있습니다

 

1.검증 데이터 성적이 너무 높으면 이 부분은 과적합이라고도 볼 수 있을까요(test-score가 아니라도)? 아니면 데이터의 양이 그냥 너무 적어서 발생하는 것일까요? (early stop으로 16에서 멈추고 val score = 0.97이 나옵니다)

*데이터 크기: (5856, 2)

 

2.해당 자료가 0또는 1인데 (정상폐, 폐렴폐 ct)인데 loss =binary_crossentropy를 쓰면 될까요? (만약 categorical_crossentropy를 쓰면 문제가 발생하나요?)

 

3.만약에 데이터가 불균형하면 머신러닝에서 배웠던 것 처럼 -양성 데이터를 판별하는게 중요하다고 하면 metrics=['accuracy'] 이부분을 precision으로 할 수 있을까요? (반대로 음성이면 재현율)

*model.compile(optimizer=Adam(lr=initial_lr), loss='binary_crossentropy', metrics=['accuracy'])

4.선생님이 여기 실습에서 해당 데이터를 local? 영역에 넣으시고 분석하셔서 불러오는데 시간을 많이 줄인 것을 보았는데 바탕화면에 있는 데이터도 선생님이 하신 것 처럼 불러올 수 있을까요? 아니면 구글코랩처럼 따로 경로가 있을까요? (데이터를 불러오는데 1초이상이 걸립니다..)

 

감사합니다

 

 

답변 1

답변을 작성해보세요.

0

안녕하십니까,

 

  1. 일반적으로 과적합은 학습 데이터의 평가 지표가 검증 데이터의 평가 지표보다 월등하게 높을 경우를 지칭합니다. 검증 데이터의 평가 지표가 학습 데이터의 평가지표보다 높은 경우는 잘 발생하지 않지만, 해당 경우에는 검증 데이터 세트가 크지 않을 경우에 그럴 수 있습니다.

     

    그리고 테스트 데이터의 평가 지표는 별로 인데, 학습 데이터의 평가지표도 높고 검증 데이터의 평가 지표도 테스트 데이터의 평가 지표보다 훨씬 높다면, 과적합이자, 검증 데이터의 데이터 세트가 매우 작거나 테스트 데이터보다 덜 일반적인 데이터 세트로 구성되어 있을 경우에 발생하기 쉽습니다.

     

  2. 해당 자료가 0또는 1인데 (정상폐, 폐렴폐 ct)인데 loss =binary_crossentropy를 쓰면 될까요? (만약 categorical_crossentropy를 쓰면 문제가 발생하나요?)

    => 네 loss= binary_crossentropy를 사용하면 됩니다. 만약에 categorical_crossentropy를 사용하고자 하신다면 label 값 0, 1을 one hot encoding 으로 변환해 줘야 합니다(강의 초반부쯤 말씀드리고 있습니다)

 

  1. 만약에 데이터가 불균형하면 머신러닝에서 배웠던 것 처럼 -양성 데이터를 판별하는게 중요하다고 하면 metrics=['accuracy'] 이부분을 precision으로 할 수 있을까요? (반대로 음성이면 재현율)

    => 네, precision 또는 recall을 적용할 수 있습니다. 다만 tensorflow가 upgrade되면서 metrics=['precision'] 과 같이 문자열이 아니라 아래와 같이 함수명으로 입력해 줘야 합니다.

     

    import tensorflow as tf

    model.compile(optimizer=Adam(lr=initial_lr), loss='binary_crossentropy', metrics=[tf.keras.metrics.Precision()])

재현율의 경우 tf.keras.metrics.Recall() 로 입력해 주시면 됩니다.

 

4.선생님이 여기 실습에서 해당 데이터를 local? 영역에 넣으시고 분석하셔서 불러오는데 시간을 많이 줄인 것을 보았는데 바탕화면에 있는 데이터도 선생님이 하신 것 처럼 불러올 수 있을까요? 아니면 구글코랩처럼 따로 경로가 있을까요? (데이터를 불러오는데 1초이상이 걸립니다..)

=> 음.. 질문을 잘 이해하지 못했습니다. 지금 실습 환경이 kaggle kernel 또는 구글 코랩 아닌가요? 아님 로컬 PC GPU 환경에서 작업하시는데 바탕화면에 있는 데이터를 못가져 오시는 건가요?

좀 더 자세히 실습하시는 환경과 질문 내용 기재 부탁드립니다.

 

감사합니다.

 

안녕하세요 선생님 답변해주셔서 감사합니다 :)

4.선생님이 주신 실습데이터를 캐글에서 data add를 하지 않고 캐글 코드란에 홈페이지 주소를 적으시고 거기서 zip파일도 풀면서 데이터를 불러오는 시간이 더 빠르게 되는 것을 봤습니다.

그래서 이 부분을 캐글 홈페이지 내에서 어떻게 local 영역에다가 풀 수 있는지 궁금합니다..!

 

"https://www.kaggle.com/datasets/hgunraj/covidxct" -> 이 데이터를 add data가 아닌 선생님이 쓰신 방법처럼 주소를 입력하고 압축을 푸는 방법 (기존의 데이터가 너무 작아서 큰 데이터로 분석해보려고 합니다)

 

+추가질문

-평가지표에 관한 질문 - 선생님 제가 분류평가로 쓰는 데이터가 폐렴과 정상 폐인데 -> 폐렴의 데이터의 수가 정상 폐와 비교해서 2배이상 많은데 이럴 때 accuracy를 하니까 성능이 높게 나오는데 그냥 f1_score로 해도 될까요?

image-만약에 데이터가 불균등해서 f1으로 했는데도 이렇게 성능이 높게 나오면 어떤 부분을 봐야할까요...?

 

+질문

-데이터 학습을 완료하고 저장을 해서 따로 나중에 또 작업을 할때 학습없이 바로 불러오기는 어떻게 해야 하나요? 

image

 

 

  1. "https://www.kaggle.com/datasets/hgunraj/covidxct" -> 이 데이터를 add data가 아닌 선생님이 쓰신 방법처럼 주소를 입력하고 압축을 푸는 방법 (기존의 데이터가 너무 작아서 큰 데이터로 분석해보려고 합니다)

    => 강의에서는 별도의 URL에서 다운로드를 받습니다. 그러니까 Download를 받을 수 있는 디렉토리가 있고, 이걸 로컬로 !wget 명령어로 다운로드를 받으면 로컬 디렉토리에 다운로드가 됩니다.

    그런데 https://www.kaggle.com/datasets/hgunraj/covidxct 는 너무 용량도 크고 별도로 다운로드 받을 수 있는 URL이 없을 겁니다. 이런 경우는 Kaggle의 로컬 디스크로 받을 수 없을 것 같습니다.

  2. -평가지표에 관한 질문 - 선생님 제가 분류평가로 쓰는 데이터가 폐렴과 정상 폐인데 -> 폐렴의 데이터의 수가 정상 폐와 비교해서 2배이상 많은데 이럴 때 accuracy를 하니까 성능이 높게 나오는데 그냥 f1_score로 해도 될까요?

    => 음... 정해진 평가지표가 있지 않나요? competition이 아닌가요?

    competition이 아니면 f1_score, precision, recall, roc_auc 중에 어떤 평가지표라도 사용해 보시면 될 것 같습니다(다 사용해 보셔도 됩니다). 심지어 2배 정도면 accuracy도 평가 지표로 사용되기에 크게 문제는 없을 것 같습니다

     

  3. -데이터 학습을 완료하고 저장을 해서 따로 나중에 또 작업을 할때 학습없이 바로 불러오기는 어떻게 해야 하나요? 

    => xception.save()하시고,

    캐글 커널의 메뉴를 보시면 save version이 있을 겁니다. 거기서 advanced setting 누르시고 always save output 하시면 output 디렉토리에 저장이 될 겁니다.