딥러닝 수치 예측 모델
참 거짓을 판별하는 모델에서 한발
더 나아가서 수치를 예측하는 모델이
필요하다.
현실에서 수치를 예측하는 것이 더
필요한 경우가 많다. 구체적인 수치를
예측하기 위해서 우리한테 필요한
알고리즘은 선현회귀 분석이다.
선형회귀분석이란?
복잡하게 생각할 필요 없다. 독립변수
x와 기울기 a 그리고 절편 b를 더한
종속변수 y를 구하는 1차 방정식이
선형회귀분석이다.
우리가 딥러닝에서 조정해야 하는건,
이 기울이 a와 절편 b의 값이다. 학습
데이터를 가지고 두개의 변수를 계속
조정하면서 오차를 줄여나가는 과정,
이게 딥러닝의 핵심이다.
딥러닝 예제 중 가장 유명한 보스턴 집값
예측 모형을 가지고 실제 모델을
설계해보자.
데이터를 로드해서, 데이터셋을 구분하고,
학습데이터와 테스트데이터를 구분하는
작업은 아래 글에서 참고하길 바란다.
딥러닝 최적의 모델결과 뽑아내기 (feat 와인 데이터)
딥러닝 모델 자동 성능개선 모델을 설계하고, 출력값을 확인해보면, 출력할 때마다 결과값이 달라지는 것을 확인할 수 있다. 사람이 컴퓨터 옆에 앉아서 일일이 결과값을 비교해보고 가장 높은
incomeplus.tistory.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
import numpy
import pandas as pd
import tensorflow as tf
# seed값 설정
seed=0
numpy.random.seed(seed)
tf.compat.v1.set_random_seed(seed)
# 파일 읽어들이기
df = pd.read_csv('./dataset/housing.csv', delim_whitespace=True, header=None)
dataset = df.values
X = dataset[:, 0:13]
Y = dataset[:, 13]
# 학습 + 테스트 분리
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=seed)
|
cs |
선형회귀 분석에서 모델링은 다음과 같이 한다.
먼저 모델층을 생성한다. Sequential()함수 사용
은닉층에 노드수와 입력값, 그리고 활성화 함수를
사용한다.
활성화 함수는 가장 유명한 ReLU 함수를 사용한다.
출력층에는 추가적으로 활성화 함수를 지정하지
않는다.
참 거짓을 판단하거나 다항분류를 하는 모델에서는
sigmoid()함수를 사용하거나, softmax() 함수를
사용하지만 선형회귀에서는 수치를 예측하는 모델
이기 때문에 이런 활성화 함수를 필요로 하지 않는다.
1
2
3
4
5
|
# 모델링 작업
model = Sequential()
model.add(Dense(30, input_dim=13, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(1))
|
cs |
모델 컴파일에는 평균 제곱 오차함수와
adam 을 최적화 함수로 사용한다.
adam 함수를 사용해서 기울기 a(딥러닝
에서는 가중치라 표현한다.)와 절편 b(
딥러닝에서는 bias[편차]라 표현한다.)
를 추정하면서 실제값에 가까운 예측 모델을
만든다.
1
|
model.compile(loss='mean_squared_error', optimizer='adam')
|
cs |
이제 모델학습을 진행한다.
아래 예제에서는 에포크를 1000번 반복하고,
10개의 샘플데이터를 넣으면서 학습을
진행한다.
1
2
|
# 모델 학습 진행
model.fit(X_train, Y_train, epochs=1000, batch_size=10)
|
cs |
모델로 예측값 구하기
keras에서는 predict() 함수를 지원한다.
독립변수를 가지고 실제값을 예측을 지원
하는 함수다.
flatten()함수는 N차원의 배열을 1차원
배열로 변형해주는 함수다. 아래 예제에서
Y_prediction 변수를 출력해보면 1차원
배열을 얻는다.
이제 for loop를 돌면서 실제값과 예측값을
출력한다.
1
2
3
4
5
6
7
8
|
# 예측값과 실제값 비교
# flatten()은 배열의 다중 디멘션을 1차원으로 변경해준다.
Y_prediction = model.predict(X_test).flatten()
for i in range(10):
label = Y_test[i]
prediction = Y_prediction[i]
print("실제가격 : {:.3f}, 예상가격 : {:.3f}".format(label, prediction))
|
cs |
더 읽을거리
딥러닝 머신러닝 차이, 머신러닝 딥러닝
머신러닝 딥러닝 차이 알파고가 대한민국을 초토화 시킨지 5년이 지났다. 실생활에도 인공지능이 많이 들어 왔고, 무수히 쌓여가는 데이터들을 기반으로 한 새로운 사업들이 계속 등장하고 있
incomeplus.tistory.com
딥러닝의 층 구조 딥러닝을 배워보자
더보기 딥러닝 기본 구조 신경망 딥러닝의 구조는 크게 3부분으로 나뉘어져 있다. 1. 입력 부분 2. 분석 부분 3. 출력 부분 마지막으로 모델을 만들고 난 후, 컴파일을 하는 부분으로 구성된다. 층
incomeplus.tistory.com
딥러닝 기본 구조 이해하기 선형회귀 , 평균 제곱근 오차 10분만에 이해하기
딥러닝 기본구조 딥러닝의 근간을 이루는 것은 인공 신경망이라고 불리는 작은 연산장치들의 집합이다. 신경망의 뼈대는 알고리즘에 많은 의존도를 보인다. 그 중 가장 대표적인 것이 선형 회
incomeplus.tistory.com
딥러닝 로지스틱 회귀 알고리즘 10분만에 이해하기
선형회귀분석과 다르게, 참과 거짓만을 분별해야 하는 모델이 필요하다. 우리는 이때 로지스틱 회귀 분석 알고리즘을 이용하게 된다. 로지스틱 회귀 분석 참, 거짓을 구분하는 알고리즘이 로지
incomeplus.tistory.com
딥러닝 오차 역전파 10분만에 이해하기
딥러닝 오차 역전파 딥러닝은 학습데이터를 가지고 예측결과를 추론하는 알고리즘이다. 입력값은 기울기 a와 절편 b값이다. 딥러닝은 실제데이터와 차이는 부분을 오차로 규정하고, 가중치와
incomeplus.tistory.com
딥러닝 다중 분류 모델 Multi Classfication 설계하기 (feat 아이리스 품종 분류하는 모델 설계하기)
다중 분류 문제 0과 1 결과값 중 하나를 선택하는 문제가 아닌, 3개 이상의 결과값을 예측하는 모델을 다중 분류(Mulit Classification)이라 한다. 원-핫 코딩(one-hot-coding) 결과값에 문자열이 포함되어
incomeplus.tistory.com
'Programming > MachineLearning' 카테고리의 다른 글
딥러닝 순환 신경망 RNN 10분 만에 이해하기 (0) | 2021.12.17 |
---|---|
딥러닝 CNN 컨볼루션 신경망 10분만에 이해하기 (1) | 2021.12.16 |
딥러닝 손글씨 예측 모델 만들어보기 (feat 데이터정규화) (0) | 2021.12.16 |
딥러닝 최적의 모델결과 뽑아내기 (feat 와인 데이터) (0) | 2021.12.16 |
딥러닝 데이터가 부족할 때 해결하는 방법 K겹 교차 검증이란? (feat 광석 돌 구분 예제 사용) (0) | 2021.12.16 |
딥러닝 과적합 문제 해결하기(feat 광석 판별하기) (0) | 2021.12.16 |
댓글