[멋사][AI]

티나(Tina)·2022년 11월 30일

멋사AI

목록 보기
35/41

Q. loss, metric 의 차이는 무엇일까?
A.

  • loss 는 실제값과 예측값이 얼마나 다른지를 나타냅니다.
    metric은 얼마나 잘 예측했는지를 나타내는 평가 지표입니다.
  • loss는 훈련에 사용해서 가중치와 편향을 업데이트하고, metric은 검증에 사용한다.
  • loss => W, b 값을 업데이트 해주기 위해 사용하고, metric 모델의 성능을 평가하기위해서 사용한다.

Q. 분류일 때 사용하는 loss 의 종류는 무엇이 있을까?
A.
이진분류 - binarycrossentropy
다중분류 : 원핫인코딩 - categorical_crossentropy
다중분류 : 오디널 - sparse_categorical_crossentropy
loss 값을 보고 label이 어떤 형태인지 알 수 있다.

Q.머신러닝을 썼을 때와 딥러닝을 사용했을 때 성능이 어떻게 다른가?
A. => 보통은 정형데이터는 딥러닝보다는 머신러닝이 대체적으로 좋은 성능을 내기도 한다. 물론 딥러닝이 좋은 성능을 낼때도 있다. 무엇보다도 중요한 것은 데이터 전처리와 피처엔지니어링이 성능에 더 많은 영향을 준다는 것이다.
garbage in garbage out => 좋은 데이터를 통해 모델을 만드는게 성능에 가장 중요한 역할을 합니다.

Q. standard, min-max, robust 스케일링 각각의 특징은?
A. standard, min-max, robust => 스케일만 바꿀 뿐이지 분포는 변하지 않는다.

  • Z-score (Standard) scaling은 평균을 0으로, 표준편차를 1로 만들고 평균을 이용하여 계산
  • Min-Max scaler는 이름 그대로 최솟값과 최댓값을 0과 1로 지정(표준편차가 작을 때 효과적)
  • Robust scaler는 중앙값을 0으로, 사분위 수를 1로 만들고 중앙값을 이용하기 때문에 앞의 두 정규화 방법들에 비해 이상치에 강하다.

Q.레이어 구성에서 출력층의 분류와 회귀의 차이는?
A. 분류는(n, activation='softmax'), (1, activation='sigmoid') 이 있는데 회귀는 항등함수.

  • 항등함수 : 입력받은 값을 그대로 출력하는 값

딥러닝 회귀 실습

자동차 연비 예측하기: 회귀

regression 실습에서 보고자 하는 point
1) 정형데이터 입력층 input_shape
2) 정규화 레이어의 사용 => 직접 정규화해도 된다.
3) 출력층이 분류와 다르게 구성이 된다는 점
4) loss 설정이 분류, 회귀에 따라 다르다.
5) 입력변수(피처)를 하나만 사용했을 때보다 여러 변수를 사용했을 때 성능이 더 좋아졌다. => 반드시 여러 변수를 사용한다라고 해서 성능이 좋아지지 않을 수도 있지만 너무 적은 변수로는 예측모델을 잘 만들기 어렵다는 점을 알수 있다.

Q. loss와 val_loss의 차이는 뭔가요?
A. loss는 훈련 손실값, val_loss는 검증 손실값이다.
Q. 어떻게 해야 val 결과가 나올까요?
A. validation_split 옵션 지정 해야 한다.
Q. validation_split 은 어디에서 지정 지정할까?
A. model.fit 수행시에 지정한다.
model.fit(X_train, y_train, epochs, validation_split)
Q. 신경망 모델 자체가 2차원 결과가 나오기로 만들어진건가요?
A. 예측값이 기본적으로 2차원으로 나온다. 텐서플로 API에서 제공하는 기능이다.


공부팁!

https://numpy.org/doc/stable/user/absolute_beginners.html

numpy 절대 기초 문서를 기간을 정해서 하루에 4~5박스 정도씩 TIL로 정리해 보는 것을 추천!


텐서플로 회귀 모델 만들기

902 파일 실습

오늘 실습의 단계 및 플로우!

  1. 딥러닝 모델을 조정하여서 회귀 딥러닝 모델을 생성했다!
    (분류 모델과 다르게 Dense 출력 유닛 1로 설정, Compile에서 loss, metrics 변경)

  2. 자원과 시간을 아끼기 위해서 학습 과정 중 성능이 비슷하면 멈출 수 있도록 EarlyStopping을 설정해준다!
    (tf.keras.callbacks.EarlyStopping -> 성능이 비슷함에도 남은 epochs가 많이 남았다면 시간이 아까우니까)

  3. 학습 과정에서 validation_split을 설정하여 검증 데이터셋도 설정해준다!
    (모델이 과적합인지 과소적합인지 제 성능을 하는지 확인하기 위해서 -> model.fit(validation_split=0.2))

  4. 딥러닝 모델을 학습시킨다.
    (model.fit)

  5. 학습한 모델의 성능을 history 표를 보면서 측정한다!
    (여기서 우리 전에 배웠던 loss, mae, mse 지표를 보면서 모델이 잘 예측했는지 평가해본다.
    -> 검증모델에서의 지표와 비교를 해보고(val_loss, val_mae, val_mse 등등) 과대적합이 됐는지, 과소적합이 됐는지도 볼 수 있다.)

profile
열심히 사는 중

0개의 댓글