본문 바로가기
Programming/MachineLearning

딥러닝 수치를 예측해보자 (feat 선형 회귀 분석)

by 하하호호 2021. 12. 16.
반응형

딥러닝 수치 예측 모델

참 거짓을 판별하는 모델에서 한발 

더 나아가서 수치를 예측하는 모델이

필요하다.

 

현실에서 수치를 예측하는 것이 더 

필요한 경우가 많다. 구체적인 수치를

예측하기 위해서 우리한테 필요한 

알고리즘은 선현회귀 분석이다.

 

선형회귀분석이란?

복잡하게 생각할 필요 없다. 독립변수

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
= dataset[:, 0:13]
= 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차원

배열을 얻는다.

 

예측 데이터를 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

 

반응형

댓글