티스토리 뷰

출처: 인프런 ‘초급자를 위한 손에 잡히는 딥러닝’ 30분 요약 강좌

 

학습이란?

한 컴퓨터 프로그램이 어떤 과제류 T에 속하는 과제들을 수행하며 그 수행의 성과를 측정한 측도가 P라고 할 때, 만일 어떤 경험 E 때문에 T의 어떤 과제에 대한 성과 측도 P가 개선되었다면, 그 컴퓨터 프로그램은 경험 E로부터 학습한다고 말할 수 있다.

KDD 분석 절차

KDD(Knowlege Discovery in Databases)는 프로파일링 기술을 기반으로 통계적 패턴이나 지식을 찾기 위해 체계적으로 정리한 데이터 마이닝 프로세스.

  1. 데이터 선택 (목표 데이터)
  2. 데이터 전처리 (전처리 데이터)
  3. 데이터 변환 (데이터 변환)
  4. 데이터 마이닝 (패턴)
  5. 데이터 마이닝 결과 평가 (지식)

데이터 생성

import pandas as pd # 데이터 분석을 위한 모듈
import numpy as np # 대규모 다차원 배열 연산을 위한 모듈

주가 = [ np.random.randint(10, 50) + i*2 for i in range(100) ]

import matplotlib.pyplot as plt # 시각화 모듈

plt.plot(np.arange(1, 101), 주가)
plt.show()

딥러닝

딥러닝은 인공 신경망을 사용하여 복잡한 문제를 해결하는 머신 러닝 기술 중 하나입니다. 다음과 같이 세 가지 주요 유형의 레이어로 구성됩니다. 이들은 각각은 네트워크의 다른 기능을 담당합니다.

  • 입력 레이어
    • 네트워크에 데이터를 제공하는 역할을 합니다. 예를 들어, 이미지를 딥러닝 모델로 처리하려면 이미지의 픽셀 값을 이 레이어에 입력합니다.
    • 입력 레이어의 노드 수는 입력 데이터의 특성 수에 따라 결정됩니다. 예를 들어 28*28 픽셀의 이미지를 처리하는 경우, 입력 레이어에는 784개의 노드가 있을 수 있습니다.
  • 히든 레이어
    • 입력 레이어와 출력 레이어 사이에 있는 중간 레이어로, 모델이 데이터의 복잡한 패턴과 관련된 특성을 학습하는 데 사용됩니다.
    • 딥러닝에서 “딥”이라는 단어는 이러한 은닉 레이어가 여러 개 중첩되어 있음을 나타냅니다. 여러 개의 은닉 레이어를 사용하면 모델이 더 복잡한 관계와 패턴을 학습할 수 있습니다.
  • 출력 레이어
    • 모델이 학습한 결과를 반환하는 역할을 합니다. 이 레이어의 노드 수 및 구성은 모델의 작업에 따라 달라집니다.
    • 분류 작업의 경우, 출력 레이어는 클래스 레이블에 대한 확률 값을 출력할 수 있으며, 회귀 작업의 경우 실수 값을 출력할 수 있습니다.

모델링

import tensorflow as tf # 구글이 2015년 오픈소스로 공개한 딥러닝 라이브러리

# 모델 준비
X = tf.keras.layers.Input(shape=[1]) # 독립변수의 col
Y = tf.keras.layers.Dense(1)(X) # 종족변수의 col (뉴런의 개수)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse') # MSE(Mean squared error)

TensorFlow와 Keras를 사용하여 간단한 선형 회귀 모델을 정의하고 컴파일하는 과정을 나타냅니다. 선형 회귀는 주어진 독립 변수(X)와 종속 변수(Y) 간의 관계를 모델링하는 데 사용됩니다.

  1. X = tf.keras.layers.Input(shape=[1]): 이 부분은 입력 데이터를 정의합니다. X는 독립 변수의 컬럼 수가 1인 입력을 나타냅니다. tf.keras.layers.Input은 입력 레이어를 정의하는데 사용되며, shape 매개변수를 사용하여 입력 데이터의 모양을 정의합니다. 이 경우에는 단일 컬럼으로 구성된 입력 데이터를 나타내므로 shape는 [1]로 설정됩니다.
  2. Y = tf.keras.layers.Dense(1)(X): 이 부분은 모델의 출력 레이어를 정의합니다. Y는 종속 변수의 컬럼 수가 1인 출력을 나타냅니다. tf.keras.layers.Dense(1)은 하나의 뉴런(유닛)으로 구성된 밀집(Dense) 레이어를 정의하고, 이 레이어는 입력 X와 연결됩니다. 이것은 선형 회귀 모델의 예측을 생성하는 부분입니다.
  3. model = tf.keras.models.Model(X, Y): 이 부분은 입력과 출력을 연결하여 모델을 정의합니다. X를 입력으로 사용하고 Y를 출력으로 사용하여 모델을 생성합니다. 이렇게 모델을 정의하면 입력 X를 주입하면 모델은 Y를 예측하는 역할을 수행합니다.
  4. model.compile(loss='mse'): 모델을 컴파일하는 부분입니다. compile 메서드는 모델을 학습 가능한 상태로 준비합니다. 여기서 손실 함수(loss function)로 평균 제곱 오차(Mean Squared Error, MSE)를 사용하고 있습니다. MSE는 회귀 문제에서 예측값과 실제 값 간의 평균 제곱 오차를 계산하는 데 사용됩니다. 이 손실을 최소화하는 방향으로 모델 파라미터를 조정하여 학습합니다.

이제 모델은 준비되었고, 훈련 데이터를 사용하여 학습하고 예측을 생성할 수 있습니다. 학습 데이터와 테스트 데이터를 사용하여 모델을 훈련하고 평가할 수 있을 것입니다.

학습

model.fit(독립, 종속, epochs=100, verbose=0)
model.fit(독립, 종속, epochs=10)

model.predict([50])
model.predict([40])
  1. model.fit(독립, 종속, epochs=100, verbose=0): 이 라인은 모델을 훈련(학습)하는 부분입니다. fit 메서드를 사용하여 모델을 주어진 데이터로 훈련합니다. 여기에서:
    • 독립은 독립 변수(입력 데이터)를 나타내며 모델이 학습할 데이터입니다.
    • 종속은 종속 변수(실제 결과 또는 레이블)를 나타내며 모델이 예측하려는 데이터의 실제 값입니다.
    • epochs=100은 모델이 전체 훈련 데이터를 100번 반복해서 학습하라는 의미입니다. 에포크(epochs)는 훈련 데이터가 전체를 한 번 통과하는 것을 나타내며, 여러 번 반복하여 모델을 더 나은 성능으로 학습시키는 데 사용됩니다.
    • verbose=0은 훈련 중에 출력을 화면에 표시하지 말라는 의미입니다. verbose 매개변수는 학습 중 출력을 제어하는 데 사용됩니다.
  2. model.fit(독립, 종속, epochs=10): 두 번째 fit 메서드 호출은 추가로 10번의 에포크 동안 모델을 더 학습시키는 것을 나타냅니다. 이것은 이전 훈련을 이어서 더 많은 학습을 수행하는 것입니다.
  3. model.predict([50]): 이 라인은 학습된 모델을 사용하여 입력 값이 50인 경우에 대한 종속 변수의 예측을 생성합니다. 모델은 입력 값 50을 기반으로 예측을 수행하고 결과를 반환합니다.
  4. model.predict([40]): 이 라인은 입력 값이 40인 경우에 대한 종속 변수의 예측을 생성하는 것을 나타냅니다. 마찬가지로 모델은 입력 값 40을 기반으로 예측을 수행하고 결과를 반환합니다.

그래프로 확인하기

model.get_weights() # 가중치
# [array([[2.0865207]], dtype=float32), array([20.44924], dtype=float32)]

plt.plot(np.arange(1, 101), 주가)
plt.plot(np.arange(1, 101), 2.086 * np.arange(1, 101) + 20.449)

plt.show
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함