-
회귀 문제 - 보스턴 주택 가격 데이터 셋 활용
회귀란?
연속적인 값을 예측하는 것
ex) 내일의 기온 예측, 프로젝트 완료 시간 예측
* 회귀 vs 로지스틱 회귀 (주의!)
로지스틱 회귀는 회귀 알고리즘이 아니라 분류 알고리즘!!
데이터 준비
보스턴 주택 가격 데이터셋의 특성들은 스케일이 서로 다름 ex) 어떤 것은 0과1사이, 어떤것은 1과 100사이, ...
따라서, 특성별로 정규화 해야함
정규화 방법
: 입력 데이터에 있는 각 특성에 대해 특성의 평균을 빼고 표준편차로 나눔
mean = train_data.mean(axis=0) train_data -= mean std=train_data.std(axis=0) train_data /= std test_data -= mean test_data /= std
* mean() : 평균 반환, axis=0이라면 0축의 평균 반환
* std() : 표준편차 반환, axis=0이라면 0축의 표준편차 반환
이 때, test_data를 정규화 하는 방법으로 train_data 에서 계산한 값을 이용한것을 주목해야함!
절대 test_data로 계산한 값은 사용하면 안되기 때문.
모델 구성
- 샘플 개수가 적으므로, 은닉층의 개수를 작게 설정
(데이터가 적을수록 overfitting 이 잘 일어나므로 모델을 작게 설정해야함)
- 마지막 층은 하나의 유닛, 활성화 함수는 없음
(회귀에서는 활성화 함수 적용X. 출력값의 범위가 제한되기 때문 -> 예측값이 자유롭지 않음)
- 손실함수로는 mse (평균 제곱 오차, mean squared error) 사용
회귀에서 자주 쓰이는 손실 함수
- 모니터링을 위한 지표로는 정확도가 아닌, 평균 절대 오차 (MAE, Mean Absolute Error) 사용
* 평균 절대 오차 : 예측과 타깃 사이 거리의 절댓값
K-겹 검증
1. K-겹 검증이란?
데이터 양이 적은 경우, test_data와 train_data를 어떻게 나누냐에 따라 검증 점수가 크게 달라짐
따라서, K-겹 교차 검증을 통해 K개의 모델에서 각각 K개만큼 분할하여 하나는 검증, 나머지는 훈련으로 설정한 후
각각 검증 점수를 얻고 K개의 검증점수를 평균내어 신뢰성 있는 검증 점수를 얻어냄
2. 검증 절차
각 폴드에서 검증 점수를 history에 저장
↓
K-겹 검증 점수 평균 기록
↓
검증 점수 그래프 그리기 ( 에폭 별 MAE )
↓
스케일이 많이 다른부분 제외시키고, 지수 이동 평균을 이용해 부드러운 곡선으로 그리기
↓
그래프를 토대로 적합한 epoch값 찾기
ex) 80번째 에폭 이후에 검증 MAE가 줄어든다면, 그 때부터 overfitting이 발생하는 것이므로
epoch을 80으로 설정하면 됨
위의 검증 절차 이후에 최종적으로 모델을 훈련하면 잘 예측하는 모델을 만들 수 있음
<케라스 창시자에게 배우는 딥러닝>(길벗, 2018)을 학습하고 개인 학습용으로 정리한 내용입니다.
'인공지능 > 케라스 창시자에게 배우는 딥러닝' 카테고리의 다른 글
[4. 머신러닝의 기본요소] 4-1, 4-2. 머신러닝의 분류 및 모델 평가 방법 (0) 2021.01.11 [3. 신경망 시작하기] 이진분류, 다중분류, 회귀 정리 (모델 구성 방법) (0) 2021.01.10 [3. 신경망 시작하기] 3-5. 뉴스 기사 분류 - 다중 분류 문제 (0) 2021.01.09 [3. 신경망 시작하기] 3-4. 영화 리뷰 분류 - 이진 분류 예제 (0) 2021.01.09 [2. 신경망의 수학적 구성 요소] 2-4. 그래디언트 기반 최적화 (0) 2021.01.06 댓글