Day78

김재현·2023년 9월 12일

JUPYTER/DL/ML

목록 보기
51/73

분석순서

레이블(종속변수)에 대한 one-hot-encoding

명목형 처리(더미변수/카테고리화)

  • 더미변수변수의 값이 최소 2개를 초과할 경우 수행. 아니면 단순 category 타입으로 변경.

범주형(명목형) 데이터(카테고리가 1~3등급)를 각 카테고리별로 나누어 표현 - 명목형은 계산할 수 있는 값이 아니기 때문

명목형 변수 : 변수의 값이 고유한 순위가 없는 범주를 나타내는 경우 해당 변수

ex) 태아의 성별, 위암 등급, 승무원의 등급

명목형 확인을 위해서는 데이터의 종류가 몇 가지인지 확인.
즉, 명목형으로 의심되면 일단 value_counts()로 확인.
type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능.

sigmoid는 이항분류, softmax는 다항분류(one-hot-encoding-즉, 더미변수화)

종속변수 카테고리의 기준

탐색적 데이터 분석에서 사용하기 위해 카테고리화를 진행 - (단, 통계에서는 카테고리 형식으로 데이터를 분석하지 않고 int 형식으로 사용)

정석대로라면 카테고리로 변경하지 않음.
단, 탐색적 데이터 분석을 한다면 명목형 변수를 제거해야 하는데 명목형을 카테고리로 변경하면 자동으로 제거해주기 때문에 카테고리 형식으로 변환 후 진행.

category 대신 더미변수로 변경하면 int로 돌아오므로 더미변수화를 추천.

모델 정의

(Conv2D 적용 [-> BatchNormalization층 적용] -> MaxPool2D 적용 [-> Dropout])의 과정을 n번 반복 -> Flatten 레이어 추가 -> Dense층 n개 추가

  • Conv2D 층

    • 영상이나 이미지의 특징을 확인하기 위한 함수
    • filters: 필터(커널)의 개수
    • kernel_size: 필터의 크기
    • strides: 필터의 이동 간격
    • padding: valid(패딩 없음), same(인풋과 아웃풋이 같도록 패딩)
    • activation: 활성화 함수
    • input_shape: 첫 레이어에 인풋으로 들어오는 크기
  • BatchNormalization (배치정규화)

    • 신경망 입력데이터를 평균 0, 분산 1로 정규화해서 학습이 잘 이루어지도록 하는 방법
    • BatchNormalization 층에서 정규화를 수행하므로 별도의 정규화를 적용할 필요가 없다.
    • 만약 이 층을 적용하지 않는다면 학습 전에 별도의 정규화를 수행하는 것이 좋다.
  • MaxPool2D
    - 컨볼루션 레이어의 출력 이미지에서 주요값만 뽑아 크기가 작은 출력 영상을 만든다.
    - pool_size: 축소시킬 필터의 크기(비율)
    - strides: 필터의 이동 간격. 기본값으로 pool_size를 갖는다.
    - 일반적으로 strides는 pool_size와 동일하게 적용되므로 생략하는 편.

    filter가 클수록, kernel_size가 작을 수록 모델이 성능이 개선됨.
    단, 학습 시간도 오래 걸림.
    activation : 다중분류 softmax, unit 10 / 이진 : sigmoid, unit 1/0
    loss : 다중분류, categorical_crossentropy, 이진, binary_crossentropy

모델 생성(모델 정의)

activation : 다중분류 softmax, unit 10 / 이진 : sigmoid, unit 1/0

loss : 다중분류, categorical_crossentropy, 이진, binary_crossentropy

학습하기

  • epochs는 많아도 크게 상관이 없음(단, 너무 크면 오래 걸리고 오차가 증가)
    • callback을 사용해 모델의 학습 방향, 저장 시점, 학습 정지 시점 등에 관한 상황을 모니터링
    • EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안 평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
    • ReduceLROnPlateau EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안 평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
    • ModelCheckpoint 지정한 평가지표를 기준으로 가장 뛰어난 성능을 보여주는 모델을 저장 할 때 사용

0개의 댓글